wiki/mdwiki-debug.html.old
author Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
Tue, 15 Apr 2014 17:46:09 +0200
changeset 48 1b2dffb4ac2b
permissions -rw-r--r--
add wiki (wikimd) delete publication (bootstrap)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     1
<!DOCTYPE html>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     2
<html>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     3
<!--
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     4
   This is MDwiki v0.6.1
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     5
   (C) 2013 by Timo Dörr and contributors. This software is licensed
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     6
   under the terms of the GNU GPLv3 with additional terms applied.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     7
   See https://github.com/Dynalon/mdwiki/blob/master/LICENSE.txt for more detail.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     8
   See http://github.com/Dynalon/mdwiki for a copy of the source code.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
     9
-->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    10
<head>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    11
    <title>MDwiki</title>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    12
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    13
    <meta name="fragment" content="!">
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    14
    <link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    15
    <meta charset="UTF-8">
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    16
    <style type="text/css">
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    17
    /* hide the main content while we assemble everything */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    18
    .md-hidden-load { display: none; }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    19
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    20
    .anchor-highlight {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    21
        font-size: 0.7em;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    22
        margin-left: 0.25em;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    23
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    24
    /* for pageContentMenu */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    25
    #md-page-menu {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    26
            position: static;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    27
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    28
    #md-page-menu a.active {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    29
        /* background-color: rgba(0, 0, 0, 0.01); */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    30
        font-weight: bold;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    31
        padding-left: 6px;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    32
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    33
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    34
    @media (min-width: 992px) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    35
        #md-page-menu.affix {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    36
            position: fixed;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    37
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    38
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    39
    @media (min-width: 768px) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    40
        .md-float-left .col-sm-8, .md-float-right .col-sm-8 {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    41
            max-width: 66.67%;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    42
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    43
        .md-float-left .col-sm-4, .md-float-right .col-sm-4  {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    44
            max-width: 33.33%;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    45
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    46
        .md-float-left .col-sm-2, .md-float-right .col-sm-2 {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    47
            max-width: 16.67%;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    48
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    49
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    50
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    51
    @media (max-width: 992px) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    52
        a.forkmeongithub {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    53
            display: none;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    54
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    55
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    56
    @media (max-width: 768px) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    57
        /* don't use floating for smaller screens */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    58
        .md-float-left .col-sm-8, .md-float-left .col-sm-4, .md-float-left .col-sm-2 {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    59
            width: 100%;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    60
            max-width: !important;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    61
            min-width: 100%;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    62
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    63
        .md-float-right .col-sm-8, .md-float-right .col-sm-4, .md-float-right .col-sm-2 {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    64
            width: 100%;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    65
            max-width: !important;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    66
            min-width: 100%;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    67
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    68
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    69
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    70
    .md-floatenv .md-text {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    71
        /* md-text is not of md-col-* but needs the spacing */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    72
        margin-left: 15px;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    73
        margin-right: 15px;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    74
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    75
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    76
    /* float images */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    77
    .md-float-left .col-sm-8, .md-float-left .col-sm-4, .md-float-left .col-sm-2 {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    78
        width: auto;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    79
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    80
    .md-float-right .col-sm-8, .md-float-right .col-sm-4, .md-float-right .col-sm-2 {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    81
        float: right !important;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    82
        width: auto;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    83
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    84
    #md-all .md-copyright-footer {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    85
        background-color: !important;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    86
        font-size: smaller;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    87
        padding: 1em;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    88
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    89
    </style>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    90
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    91
<!-- START extlib/css/highlight.github.css -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    92
<style id="style:extlib/css/highlight.github.css">pre code{display:block;padding:.5em;color:#333;background:#f8f8ff}pre .comment,pre .template_comment,pre .diff .header,pre .javadoc{color:#998;font-style:italic}pre .keyword,pre .css .rule .keyword,pre .winutils,pre .javascript .title,pre .nginx .title,pre .subst,pre .request,pre .status{color:#333;font-weight:bold}pre .number,pre .hexcolor,pre .ruby .constant{color:#099}pre .string,pre .tag .value,pre .phpdoc,pre .tex .formula{color:#d14}pre .title,pre .id{color:#900;font-weight:bold}pre .javascript .title,pre .lisp .title,pre .clojure .title,pre .subst{font-weight:normal}pre .class .title,pre .haskell .type,pre .vhdl .literal,pre .tex .command{color:#458;font-weight:bold}pre .tag,pre .tag .title,pre .rules .property,pre .django .tag .keyword{color:#000080;font-weight:normal}pre .attribute,pre .variable,pre .lisp .body{color:#008080}pre .regexp{color:#009926}pre .class{color:#458;font-weight:bold}pre .symbol,pre .ruby .symbol .string,pre .lisp .keyword,pre .tex .special,pre .prompt{color:#990073}pre .built_in,pre .lisp .title,pre .clojure .built_in{color:#0086b3}pre .preprocessor,pre .pi,pre .doctype,pre .shebang,pre .cdata{color:#999;font-weight:bold}pre .deletion{background:#fdd}pre .addition{background:#dfd}pre .diff .change{background:#0086b3}pre .chunk{color:#aaa}</style><!-- END extlib/css/highlight.github.css -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    93
<!-- START extlib/css/bootstrap-3.0.0.min.css -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    94
<style id="style:extlib/css/bootstrap-3.0.0.min.css">/*!
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    95
 * Bootstrap v3.0.0
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    96
 *
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    97
 * Copyright 2013 Twitter, Inc
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    98
 * Licensed under the Apache License v2.0
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
    99
 * http://www.apache.org/licenses/LICENSE-2.0
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   100
 *
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   101
 * Designed and built with all the love in the world by @mdo and @fat.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   102
 *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}h1 small,.h1 small{font-size:24px}h2 small,.h2 small{font-size:18px}h3 small,.h3 small,h4 small,.h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.428571429;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:1.428571429}code,pre{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11{float:left}.col-xs-1{width:8.333333333333332%}.col-xs-2{width:16.666666666666664%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333333333%}.col-xs-5{width:41.66666666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333333333336%}.col-xs-8{width:66.66666666666666%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333333334%}.col-xs-11{width:91.66666666666666%}.col-xs-12{width:100%}@media(min-width:768px){.container{max-width:750px}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11{float:left}.col-sm-1{width:8.333333333333332%}.col-sm-2{width:16.666666666666664%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333333333%}.col-sm-5{width:41.66666666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333333333336%}.col-sm-8{width:66.66666666666666%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333333334%}.col-sm-11{width:91.66666666666666%}.col-sm-12{width:100%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-11{left:91.66666666666666%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-11{margin-left:91.66666666666666%}}@media(min-width:992px){.container{max-width:970px}.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11{float:left}.col-md-1{width:8.333333333333332%}.col-md-2{width:16.666666666666664%}.col-md-3{width:25%}.col-md-4{width:33.33333333333333%}.col-md-5{width:41.66666666666667%}.col-md-6{width:50%}.col-md-7{width:58.333333333333336%}.col-md-8{width:66.66666666666666%}.col-md-9{width:75%}.col-md-10{width:83.33333333333334%}.col-md-11{width:91.66666666666666%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333333333332%}.col-md-push-2{left:16.666666666666664%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333333333%}.col-md-push-5{left:41.66666666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333333333336%}.col-md-push-8{left:66.66666666666666%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333333334%}.col-md-push-11{left:91.66666666666666%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-11{right:91.66666666666666%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-11{margin-left:91.66666666666666%}}@media(min-width:1200px){.container{max-width:1170px}.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11{float:left}.col-lg-1{width:8.333333333333332%}.col-lg-2{width:16.666666666666664%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333333333%}.col-lg-5{width:41.66666666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333333333336%}.col-lg-8{width:66.66666666666666%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333333334%}.col-lg-11{width:91.66666666666666%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-11{left:91.66666666666666%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-11{margin-left:91.66666666666666%}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table thead>tr>th,.table tbody>tr>th,.table tfoot>tr>th,.table thead>tr>td,.table tbody>tr>td,.table tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed thead>tr>th,.table-condensed tbody>tr>th,.table-condensed tfoot>tr>th,.table-condensed thead>tr>td,.table-condensed tbody>tr>td,.table-condensed tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8;border-color:#d6e9c6}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td{background-color:#d0e9c6;border-color:#c9e2b3}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede;border-color:#eed3d7}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td{background-color:#ebcccc;border-color:#e6c1c7}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3;border-color:#fbeed5}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td{background-color:#faf2cc;border-color:#f8e5be}@media(max-width:768px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0;background-color:#fff}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>thead>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>thead>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-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-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:45px;line-height:45px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.has-error .help-block,.has-error .control-label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.has-success .help-block,.has-success .control-label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}.form-control-static{padding-top:7px;margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-print:before{content:"\e045"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-briefcase:before{content:"\1f4bc"}.glyphicon-calendar:before{content:"\1f4c5"}.glyphicon-pushpin:before{content:"\1f4cc"}.glyphicon-paperclip:before{content:"\1f4ce"}.glyphicon-camera:before{content:"\1f4f7"}.glyphicon-lock:before{content:"\1f512"}.glyphicon-bell:before{content:"\1f514"}.glyphicon-bookmark:before{content:"\1f516"}.glyphicon-fire:before{content:"\1f525"}.glyphicon-wrench:before{content:"\1f527"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-bottom:0 dotted;border-left:4px solid transparent;content:""}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-default .caret{border-top-color:#333}.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:5px 10px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified .btn{display:table-cell;float:none;width:1%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group.col{float:none;padding-right:0;padding-left:0}.input-group .form-control{width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}}.nav-tabs.nav-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs.nav-justified>.active>a{border-bottom-color:#fff}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:5px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs-justified>.active>a{border-bottom-color:#fff}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.nav .caret{border-top-color:#428bca;border-bottom-color:#428bca}.nav a:hover .caret{border-top-color:#2a6496;border-bottom-color:#2a6496}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;z-index:1000;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-collapse .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-collapse .navbar-text:last-child{margin-right:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;border-width:0 0 1px}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;z-index:1030}.navbar-fixed-bottom{bottom:0;margin-bottom:0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-text{float:left;margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{margin-right:15px;margin-left:15px}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e6e6e6}.navbar-default .navbar-nav>.dropdown>a:hover .caret,.navbar-default .navbar-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:hover .caret,.navbar-default .navbar-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navbar-default .navbar-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-nav>.dropdown>a .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.badge:empty{display:none}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.btn .badge{position:relative;top:-1px}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1{font-size:63px}}.thumbnail{display:inline-block;display:block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img{display:block;height:auto;max-width:100%}a.thumbnail:hover,a.thumbnail:focus{border-color:#428bca}.thumbnail>img{margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image: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)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#fbeed5}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#fbeed5}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#fbeed5}.panel-danger{border-color:#eed3d7}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#eed3d7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#eed3d7}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}body.modal-open,.modal-open .navbar-fixed-top,.modal-open .navbar-fixed-bottom{margin-right:15px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{z-index:1050;width:auto;padding:10px;margin-right:auto;margin-left:auto}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.modal-dialog{right:auto;left:50%;width:600px;padding-top:30px;padding-bottom:30px}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;left:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media screen and (max-width:400px){@-ms-viewport{width:320px}}.hidden{display:none!important;visibility:hidden!important}.visible-xs{display:none!important}tr.visible-xs{display:none!important}th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm{display:none!important}tr.visible-sm{display:none!important}th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md{display:none!important}tr.visible-md{display:none!important}th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg{display:none!important}tr.visible-lg{display:none!important}th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs{display:none!important}tr.hidden-xs{display:none!important}th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm{display:none!important}tr.hidden-xs.hidden-sm{display:none!important}th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md{display:none!important}tr.hidden-xs.hidden-md{display:none!important}th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg{display:none!important}tr.hidden-xs.hidden-lg{display:none!important}th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs{display:none!important}tr.hidden-sm.hidden-xs{display:none!important}th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}tr.hidden-sm{display:none!important}th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md{display:none!important}tr.hidden-sm.hidden-md{display:none!important}th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg{display:none!important}tr.hidden-sm.hidden-lg{display:none!important}th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs{display:none!important}tr.hidden-md.hidden-xs{display:none!important}th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm{display:none!important}tr.hidden-md.hidden-sm{display:none!important}th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}tr.hidden-md{display:none!important}th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg{display:none!important}tr.hidden-md.hidden-lg{display:none!important}th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs{display:none!important}tr.hidden-lg.hidden-xs{display:none!important}th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm{display:none!important}tr.hidden-lg.hidden-sm{display:none!important}th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md{display:none!important}tr.hidden-lg.hidden-md{display:none!important}th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}tr.hidden-lg{display:none!important}th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print{display:none!important}tr.visible-print{display:none!important}th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print{display:none!important}tr.hidden-print{display:none!important}th.hidden-print,td.hidden-print{display:none!important}}</style><!-- END extlib/css/bootstrap-3.0.0.min.css -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   103
<!-- START extlib/js/jquery-1.8.3.min.js -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   104
<script type="text/javascript">/*! jQuery v1.8.3 jquery.com | jquery.org/license */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   105
(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},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(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.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(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.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(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={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,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window);</script>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   106
<!-- END extlib/js/jquery-1.8.3.min.js -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   107
<!-- START extlib/js/bootstrap-3.0.0.min.js -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   108
<script type="text/javascript">/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   109
* bootstrap.js v3.0.0 by @fat and @mdo
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   110
* Copyright 2013 Twitter Inc.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   111
* http://www.apache.org/licenses/LICENSE-2.0
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   112
*/
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   113
if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("dropdown");d||c.data("dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery);</script>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   114
<!-- END extlib/js/bootstrap-3.0.0.min.js -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   115
<!-- START extlib/js/highlight-7.3.pack.min.js -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   116
<script type="text/javascript">/* highlight.js Copyright (c) 2006, Ivan Sagalaev. Licensed under BSD 3-clause.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   117
   See https://github.com/isagalaev/highlight.js/blob/master/LICENSE */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   118
var hljs=new function(){function l(o){return o.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;")}function b(p){for(var o=p.firstChild;o;o=o.nextSibling){if(o.nodeName=="CODE"){return o}if(!(o.nodeType==3&&o.nodeValue.match(/\s+/))){break}}}function h(p,o){return Array.prototype.map.call(p.childNodes,function(q){if(q.nodeType==3){return o?q.nodeValue.replace(/\n/g,""):q.nodeValue}if(q.nodeName=="BR"){return"\n"}return h(q,o)}).join("")}function a(q){var p=(q.className+" "+q.parentNode.className).split(/\s+/);p=p.map(function(r){return r.replace(/^language-/,"")});for(var o=0;o<p.length;o++){if(e[p[o]]||p[o]=="no-highlight"){return p[o]}}}function c(q){var o=[];(function p(r,s){for(var t=r.firstChild;t;t=t.nextSibling){if(t.nodeType==3){s+=t.nodeValue.length}else{if(t.nodeName=="BR"){s+=1}else{if(t.nodeType==1){o.push({event:"start",offset:s,node:t});s=p(t,s);o.push({event:"stop",offset:s,node:t})}}}}return s})(q,0);return o}function j(x,v,w){var p=0;var y="";var r=[];function t(){if(x.length&&v.length){if(x[0].offset!=v[0].offset){return(x[0].offset<v[0].offset)?x:v}else{return v[0].event=="start"?x:v}}else{return x.length?x:v}}function s(A){function z(B){return" "+B.nodeName+'="'+l(B.value)+'"'}return"<"+A.nodeName+Array.prototype.map.call(A.attributes,z).join("")+">"}while(x.length||v.length){var u=t().splice(0,1)[0];y+=l(w.substr(p,u.offset-p));p=u.offset;if(u.event=="start"){y+=s(u.node);r.push(u.node)}else{if(u.event=="stop"){var o,q=r.length;do{q--;o=r[q];y+=("</"+o.nodeName.toLowerCase()+">")}while(o!=u.node);r.splice(q,1);while(q<r.length){y+=s(r[q]);q++}}}}return y+l(w.substr(p))}function f(q){function o(s,r){return RegExp(s,"m"+(q.cI?"i":"")+(r?"g":""))}function p(y,w){if(y.compiled){return}y.compiled=true;var s=[];if(y.k){var r={};function z(A,t){t.split(" ").forEach(function(B){var C=B.split("|");r[C[0]]=[A,C[1]?Number(C[1]):1];s.push(C[0])})}y.lR=o(y.l||hljs.IR,true);if(typeof y.k=="string"){z("keyword",y.k)}else{for(var x in y.k){if(!y.k.hasOwnProperty(x)){continue}z(x,y.k[x])}}y.k=r}if(w){if(y.bWK){y.b="\\b("+s.join("|")+")\\s"}y.bR=o(y.b?y.b:"\\B|\\b");if(!y.e&&!y.eW){y.e="\\B|\\b"}if(y.e){y.eR=o(y.e)}y.tE=y.e||"";if(y.eW&&w.tE){y.tE+=(y.e?"|":"")+w.tE}}if(y.i){y.iR=o(y.i)}if(y.r===undefined){y.r=1}if(!y.c){y.c=[]}for(var v=0;v<y.c.length;v++){if(y.c[v]=="self"){y.c[v]=y}p(y.c[v],y)}if(y.starts){p(y.starts,w)}var u=[];for(var v=0;v<y.c.length;v++){u.push(y.c[v].b)}if(y.tE){u.push(y.tE)}if(y.i){u.push(y.i)}y.t=u.length?o(u.join("|"),true):{exec:function(t){return null}}}p(q)}function d(D,E){function o(r,M){for(var L=0;L<M.c.length;L++){var K=M.c[L].bR.exec(r);if(K&&K.index==0){return M.c[L]}}}function s(K,r){if(K.e&&K.eR.test(r)){return K}if(K.eW){return s(K.parent,r)}}function t(r,K){return K.i&&K.iR.test(r)}function y(L,r){var K=F.cI?r[0].toLowerCase():r[0];return L.k.hasOwnProperty(K)&&L.k[K]}function G(){var K=l(w);if(!A.k){return K}var r="";var N=0;A.lR.lastIndex=0;var L=A.lR.exec(K);while(L){r+=K.substr(N,L.index-N);var M=y(A,L);if(M){v+=M[1];r+='<span class="'+M[0]+'">'+L[0]+"</span>"}else{r+=L[0]}N=A.lR.lastIndex;L=A.lR.exec(K)}return r+K.substr(N)}function z(){if(A.sL&&!e[A.sL]){return l(w)}var r=A.sL?d(A.sL,w):g(w);if(A.r>0){v+=r.keyword_count;B+=r.r}return'<span class="'+r.language+'">'+r.value+"</span>"}function J(){return A.sL!==undefined?z():G()}function I(L,r){var K=L.cN?'<span class="'+L.cN+'">':"";if(L.rB){x+=K;w=""}else{if(L.eB){x+=l(r)+K;w=""}else{x+=K;w=r}}A=Object.create(L,{parent:{value:A}});B+=L.r}function C(K,r){w+=K;if(r===undefined){x+=J();return 0}var L=o(r,A);if(L){x+=J();I(L,r);return L.rB?0:r.length}var M=s(A,r);if(M){if(!(M.rE||M.eE)){w+=r}x+=J();do{if(A.cN){x+="</span>"}A=A.parent}while(A!=M.parent);if(M.eE){x+=l(r)}w="";if(M.starts){I(M.starts,"")}return M.rE?0:r.length}if(t(r,A)){throw"Illegal"}w+=r;return r.length||1}var F=e[D];f(F);var A=F;var w="";var B=0;var v=0;var x="";try{var u,q,p=0;while(true){A.t.lastIndex=p;u=A.t.exec(E);if(!u){break}q=C(E.substr(p,u.index-p),u[0]);p=u.index+q}C(E.substr(p));return{r:B,keyword_count:v,value:x,language:D}}catch(H){if(H=="Illegal"){return{r:0,keyword_count:0,value:l(E)}}else{throw H}}}function g(s){var o={keyword_count:0,r:0,value:l(s)};var q=o;for(var p in e){if(!e.hasOwnProperty(p)){continue}var r=d(p,s);r.language=p;if(r.keyword_count+r.r>q.keyword_count+q.r){q=r}if(r.keyword_count+r.r>o.keyword_count+o.r){q=o;o=r}}if(q.language){o.second_best=q}return o}function i(q,p,o){if(p){q=q.replace(/^((<[^>]+>|\t)+)/gm,function(r,v,u,t){return v.replace(/\t/g,p)})}if(o){q=q.replace(/\n/g,"<br>")}return q}function m(r,u,p){var v=h(r,p);var t=a(r);if(t=="no-highlight"){return}var w=t?d(t,v):g(v);t=w.language;var o=c(r);if(o.length){var q=document.createElement("pre");q.innerHTML=w.value;w.value=j(o,c(q),v)}w.value=i(w.value,u,p);var s=r.className;if(!s.match("(\\s|^)(language-)?"+t+"(\\s|$)")){s=s?(s+" "+t):t}r.innerHTML=w.value;r.className=s;r.result={language:t,kw:w.keyword_count,re:w.r};if(w.second_best){r.second_best={language:w.second_best.language,kw:w.second_best.keyword_count,re:w.second_best.r}}}function n(){if(n.called){return}n.called=true;Array.prototype.map.call(document.getElementsByTagName("pre"),b).filter(Boolean).forEach(function(o){m(o,hljs.tabReplace)})}function k(){window.addEventListener("DOMContentLoaded",n,false);window.addEventListener("load",n,false)}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=m;this.initHighlighting=n;this.initHighlightingOnLoad=k;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.inherit=function(q,r){var o={};for(var p in q){o[p]=q[p]}if(r){for(var p in r){o[p]=r[p]}}return o}}();hljs.LANGUAGES.bash=function(a){var g="true false";var e="if then else elif fi for break continue while in do done echo exit return set declare";var c={cN:"variable",b:"\\$[a-zA-Z0-9_#]+"};var b={cN:"variable",b:"\\${([^}]|\\\\})+}"};var h={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE,c,b],r:0};var d={cN:"string",b:"'",e:"'",c:[{b:"''"}],r:0};var f={cN:"test_condition",b:"",e:"",c:[h,d,c,b],k:{literal:g},r:0};return{k:{keyword:e,literal:g},c:[{cN:"shebang",b:"(#!\\/bin\\/bash)|(#!\\/bin\\/sh)",r:10},c,b,a.HCM,h,d,a.inherit(f,{b:"\\[ ",e:" \\]",r:0}),a.inherit(f,{b:"\\[\\[ ",e:" \\]\\]"})]}}(hljs);hljs.LANGUAGES.cs=function(a){return{k:"abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while ascending descending from get group into join let orderby partial select set value var where yield",c:[{cN:"comment",b:"///",e:"$",rB:true,c:[{cN:"xmlDocTag",b:"///|<!--|-->"},{cN:"xmlDocTag",b:"</?",e:">"}]},a.CLCM,a.CBLCLM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},a.ASM,a.QSM,a.CNM]}}(hljs);hljs.LANGUAGES.ruby=function(e){var a="[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?";var j="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?";var g={keyword:"and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include"};var c={cN:"yardoctag",b:"@[A-Za-z]+"};var k=[{cN:"comment",b:"#",e:"$",c:[c]},{cN:"comment",b:"^\\=begin",e:"^\\=end",c:[c],r:10},{cN:"comment",b:"^__END__",e:"\\n$"}];var d={cN:"subst",b:"#\\{",e:"}",l:a,k:g};var i=[e.BE,d];var b=[{cN:"string",b:"'",e:"'",c:i,r:0},{cN:"string",b:'"',e:'"',c:i,r:0},{cN:"string",b:"%[qw]?\\(",e:"\\)",c:i},{cN:"string",b:"%[qw]?\\[",e:"\\]",c:i},{cN:"string",b:"%[qw]?{",e:"}",c:i},{cN:"string",b:"%[qw]?<",e:">",c:i,r:10},{cN:"string",b:"%[qw]?/",e:"/",c:i,r:10},{cN:"string",b:"%[qw]?%",e:"%",c:i,r:10},{cN:"string",b:"%[qw]?-",e:"-",c:i,r:10},{cN:"string",b:"%[qw]?\\|",e:"\\|",c:i,r:10}];var h={cN:"function",bWK:true,e:" |$|;",k:"def",c:[{cN:"title",b:j,l:a,k:g},{cN:"params",b:"\\(",e:"\\)",l:a,k:g}].concat(k)};var f=k.concat(b.concat([{cN:"class",bWK:true,e:"$|;",k:"class module",c:[{cN:"title",b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",r:0},{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+e.IR+"::)?"+e.IR}]}].concat(k)},h,{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:":",c:b.concat([{b:j}]),r:0},{cN:"symbol",b:a+":",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"number",b:"\\?\\w"},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+e.RSR+")\\s*",c:k.concat([{cN:"regexp",b:"/",e:"/[a-z]*",i:"\\n",c:[e.BE,d]}]),r:0}]));d.c=f;h.c[1].c=f;return{l:a,k:g,c:f}}(hljs);hljs.LANGUAGES.javascript=function(a){return{k:{keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const",literal:"true false null undefined NaN Infinity"},c:[a.ASM,a.QSM,a.CLCM,a.CBLCLM,a.CNM,{b:"("+a.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[a.CLCM,a.CBLCLM,{cN:"regexp",b:"/",e:"/[gim]*",i:"\\n",c:[{b:"\\\\/"}]},{b:"<",e:">;",sL:"xml"}],r:0},{cN:"function",bWK:true,e:"{",k:"function",c:[{cN:"title",b:"[A-Za-z$_][0-9A-Za-z$_]*"},{cN:"params",b:"\\(",e:"\\)",c:[a.CLCM,a.CBLCLM],i:"[\"'\\(]"}],i:"\\[|%"}]}}(hljs);hljs.LANGUAGES.xml=function(a){var c="[A-Za-z0-9\\._:-]+";var b={eW:true,c:[{cN:"attribute",b:c,r:0},{b:'="',rB:true,e:'"',c:[{cN:"value",b:'"',eW:true}]},{b:"='",rB:true,e:"'",c:[{cN:"value",b:"'",eW:true}]},{b:"=",c:[{cN:"value",b:"[^\\s/>]+"}]}]};return{cI:true,c:[{cN:"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:"style"},c:[b],starts:{e:"</style>",rE:true,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:"script"},c:[b],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"",sL:"vbscript"},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"title",b:"[^ />]+"},b]}]}}(hljs);hljs.LANGUAGES.markdown=function(a){return{c:[{cN:"header",b:"^#{1,3}",e:"$"},{cN:"header",b:"^.+?\\n[=-]{2,}$"},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",b:"\\*.+?\\*"},{cN:"emphasis",b:"_.+?_",r:0},{cN:"blockquote",b:"^>\\s+",e:"$"},{cN:"code",b:"`.+?`"},{cN:"code",b:"^    ",e:"$",r:0},{cN:"horizontal_rule",b:"^-{3,}",e:"$"},{b:"\\[.+?\\]\\(.+?\\)",rB:true,c:[{cN:"link_label",b:"\\[.+\\]"},{cN:"link_url",b:"\\(",e:"\\)",eB:true,eE:true}]}]}}(hljs);hljs.LANGUAGES.css=function(a){var b={cN:"function",b:a.IR+"\\(",e:"\\)",c:[a.NM,a.ASM,a.QSM]};return{cI:true,i:"[=/|']",c:[a.CBLCLM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",eE:true,k:"import page media charset",c:[b,a.ASM,a.QSM,a.NM]},{cN:"tag",b:a.IR,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[a.CBLCLM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[b,a.NM,a.QSM,a.ASM,a.CBLCLM,{cN:"hexcolor",b:"\\#[0-9A-F]+"},{cN:"important",b:"!important"}]}}]}]}]}}(hljs);hljs.LANGUAGES.http=function(a){return{i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:true,e:"$",c:[{cN:"string",b:" ",e:" ",eB:true,eE:true}]},{cN:"attribute",b:"^\\w",e:": ",eE:true,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:"",eW:true}}]}}(hljs);hljs.LANGUAGES.java=function(a){return{k:"false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws",c:[{cN:"javadoc",b:"/\\*\\*",e:"\\*/",c:[{cN:"javadoctag",b:"@[A-Za-z]+"}],r:10},a.CLCM,a.CBLCLM,a.ASM,a.QSM,{cN:"class",bWK:true,e:"{",k:"class interface",i:":",c:[{bWK:true,k:"extends implements",r:10},{cN:"title",b:a.UIR}]},a.CNM,{cN:"annotation",b:"@[A-Za-z]+"}]}}(hljs);hljs.LANGUAGES.php=function(a){var e={cN:"variable",b:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"};var b=[a.inherit(a.ASM,{i:null}),a.inherit(a.QSM,{i:null}),{cN:"string",b:'b"',e:'"',c:[a.BE]},{cN:"string",b:"b'",e:"'",c:[a.BE]}];var c=[a.BNM,a.CNM];var d={cN:"title",b:a.UIR};return{cI:true,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return implements parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception php_user_filter default die require __FUNCTION__ enddeclare final try this switch continue endfor endif declare unset true false namespace trait goto instanceof insteadof __DIR__ __NAMESPACE__ __halt_compiler",c:[a.CLCM,a.HCM,{cN:"comment",b:"/\\*",e:"\\*/",c:[{cN:"phpdoc",b:"\\s@[A-Za-z]+"}]},{cN:"comment",eB:true,b:"__halt_compiler.+?;",eW:true},{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[a.BE]},{cN:"preprocessor",b:"<\\?php",r:10},{cN:"preprocessor",b:"\\?>"},e,{cN:"function",bWK:true,e:"{",k:"function",i:"\\$|\\[|%",c:[d,{cN:"params",b:"\\(",e:"\\)",c:["self",e,a.CBLCLM].concat(b).concat(c)}]},{cN:"class",bWK:true,e:"{",k:"class",i:"[:\\(\\$]",c:[{bWK:true,eW:true,k:"extends",c:[d]},d]},{b:"=>"}].concat(b).concat(c)}}(hljs);hljs.LANGUAGES.python=function(a){var f={cN:"prompt",b:"^(>>>|\\.\\.\\.) "};var c=[{cN:"string",b:"(u|b)?r?'''",e:"'''",c:[f],r:10},{cN:"string",b:'(u|b)?r?"""',e:'"""',c:[f],r:10},{cN:"string",b:"(u|r|ur)'",e:"'",c:[a.BE],r:10},{cN:"string",b:'(u|r|ur)"',e:'"',c:[a.BE],r:10},{cN:"string",b:"(b|br)'",e:"'",c:[a.BE]},{cN:"string",b:'(b|br)"',e:'"',c:[a.BE]}].concat([a.ASM,a.QSM]);var e={cN:"title",b:a.UIR};var d={cN:"params",b:"\\(",e:"\\)",c:["self",a.CNM,f].concat(c)};var b={bWK:true,e:":",i:"[${=;\\n]",c:[e,d],r:10};return{k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10",built_in:"None True False Ellipsis NotImplemented"},i:"(</|->|\\?)",c:c.concat([f,a.HCM,a.inherit(b,{cN:"function",k:"def"}),a.inherit(b,{cN:"class",k:"class"}),a.CNM,{cN:"decorator",b:"@",e:"$"},{b:"\\b(print|exec)\\("}])}}(hljs);hljs.LANGUAGES.sql=function(a){return{cI:true,c:[{cN:"operator",b:"(begin|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma|grant)\\b(?!:)",e:";",eW:true,k:{keyword:"all partial global month current_timestamp using go revoke smallint indicator end-exec disconnect zone with character assertion to add current_user usage input local alter match collate real then rollback get read timestamp session_user not integer bit unique day minute desc insert execute like ilike|2 level decimal drop continue isolation found where constraints domain right national some module transaction relative second connect escape close system_user for deferred section cast current sqlstate allocate intersect deallocate numeric public preserve full goto initially asc no key output collation group by union session both last language constraint column of space foreign deferrable prior connection unknown action commit view or first into float year primary cascaded except restrict set references names table outer open select size are rows from prepare distinct leading create only next inner authorization schema corresponding option declare precision immediate else timezone_minute external varying translation true case exception join hour default double scroll value cursor descriptor values dec fetch procedure delete and false int is describe char as at in varchar null trailing any absolute current_time end grant privileges when cross check write current_date pad begin temporary exec time update catalog user sql date on identity timezone_hour natural whenever interval work order cascade diagnostics nchar having left call do handler load replace truncate start lock show pragma exists number",aggregate:"count sum min max avg"},c:[{cN:"string",b:"'",e:"'",c:[a.BE,{b:"''"}],r:0},{cN:"string",b:'"',e:'"',c:[a.BE,{b:'""'}],r:0},{cN:"string",b:"`",e:"`",c:[a.BE]},a.CNM]},a.CBLCLM,{cN:"comment",b:"--",e:"$"}]}}(hljs);hljs.LANGUAGES.vala=function(a){return{k:{keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var",built_in:"DBus GLib CCode Gee Object",literal:"false true null"},c:[{cN:"class",bWK:true,e:"{",k:"class interface delegate namespace",c:[{bWK:true,k:"extends implements"},{cN:"title",b:a.UIR}]},a.CLCM,a.CBLCLM,{cN:"string",b:'"""',e:'"""',r:5},a.ASM,a.QSM,a.CNM,{cN:"preprocessor",b:"^#",e:"$",r:2},{cN:"constant",b:" [A-Z_]+ ",r:0}]}}(hljs);hljs.LANGUAGES.perl=function(e){var a="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when";var d={cN:"subst",b:"[$@]\\{",e:"\\}",k:a,r:10};var b={cN:"variable",b:"\\$\\d"};var i={cN:"variable",b:"[\\$\\%\\@\\*](\\^\\w\\b|#\\w+(\\:\\:\\w+)*|[^\\s\\w{]|{\\w+}|\\w+(\\:\\:\\w*)*)"};var f=[e.BE,d,b,i];var h={b:"->",c:[{b:e.IR},{b:"{",e:"}"}]};var g={cN:"comment",b:"^(__END__|__DATA__)",e:"\\n$",r:5};var c=[b,i,e.HCM,g,{cN:"comment",b:"^\\=\\w",e:"\\=cut",eW:true},h,{cN:"string",b:"q[qwxr]?\\s*\\(",e:"\\)",c:f,r:5},{cN:"string",b:"q[qwxr]?\\s*\\[",e:"\\]",c:f,r:5},{cN:"string",b:"q[qwxr]?\\s*\\{",e:"\\}",c:f,r:5},{cN:"string",b:"q[qwxr]?\\s*\\|",e:"\\|",c:f,r:5},{cN:"string",b:"q[qwxr]?\\s*\\<",e:"\\>",c:f,r:5},{cN:"string",b:"qw\\s+q",e:"q",c:f,r:5},{cN:"string",b:"'",e:"'",c:[e.BE],r:0},{cN:"string",b:'"',e:'"',c:f,r:0},{cN:"string",b:"`",e:"`",c:[e.BE]},{cN:"string",b:"{\\w+}",r:0},{cN:"string",b:"-?\\w+\\s*\\=\\>",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"("+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,g,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"sub",bWK:true,e:"(\\s*\\(.*?\\))?[;{]",k:"sub",r:5},{cN:"operator",b:"-\\w\\b",r:0}];d.c=c;h.c[1].c=c;return{k:a,c:c}}(hljs);hljs.LANGUAGES.scala=function(a){var c={cN:"annotation",b:"@[A-Za-z]+"};var b={cN:"string",b:'u?r?"""',e:'"""',r:10};return{k:"type yield lazy override def with val var false true sealed abstract private trait object null if for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws",c:[{cN:"javadoc",b:"/\\*\\*",e:"\\*/",c:[{cN:"javadoctag",b:"@[A-Za-z]+"}],r:10},a.CLCM,a.CBLCLM,a.ASM,a.QSM,b,{cN:"class",b:"((case )?class |object |trait )",e:"({|$)",i:":",k:"case class trait object",c:[{bWK:true,k:"extends with",r:10},{cN:"title",b:a.UIR},{cN:"params",b:"\\(",e:"\\)",c:[a.ASM,a.QSM,b,c]}]},a.CNM,c]}}(hljs);hljs.LANGUAGES.cmake=function(a){return{cI:true,k:"add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_subdirectory add_test aux_source_directory break build_command cmake_minimum_required cmake_policy configure_file create_test_sourcelist define_property else elseif enable_language enable_testing endforeach endfunction endif endmacro endwhile execute_process export find_file find_library find_package find_path find_program fltk_wrap_ui foreach function get_cmake_property get_directory_property get_filename_component get_property get_source_file_property get_target_property get_test_property if include include_directories include_external_msproject include_regular_expression install link_directories load_cache load_command macro mark_as_advanced message option output_required_files project qt_wrap_cpp qt_wrap_ui remove_definitions return separate_arguments set set_directory_properties set_property set_source_files_properties set_target_properties set_tests_properties site_name source_group string target_link_libraries try_compile try_run unset variable_watch while build_name exec_program export_library_dependencies install_files install_programs install_targets link_libraries make_directory remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file",c:[{cN:"envvar",b:"\\${",e:"}"},a.HCM,a.QSM,a.NM]}}(hljs);hljs.LANGUAGES.objectivec=function(a){var b={keyword:"int float while private char catch export sizeof typedef const struct for union unsigned long volatile static protected bool mutable if public do return goto void enum else break extern class asm case short default double throw register explicit signed typename try this switch continue wchar_t inline readonly assign property protocol self synchronized end synthesize id optional required implementation nonatomic interface super unichar finally dynamic IBOutlet IBAction selector strong weak readonly",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"NSString NSDictionary CGRect CGPoint UIButton UILabel UITextView UIWebView MKMapView UISegmentedControl NSObject UITableViewDelegate UITableViewDataSource NSThread UIActivityIndicator UITabbar UIToolBar UIBarButtonItem UIImageView NSAutoreleasePool UITableView BOOL NSInteger CGFloat NSException NSLog NSMutableString NSMutableArray NSMutableDictionary NSURL NSIndexPath CGSize UITableViewCell UIView UIViewController UINavigationBar UINavigationController UITabBarController UIPopoverController UIPopoverControllerDelegate UIImage NSNumber UISearchBar NSFetchedResultsController NSFetchedResultsChangeType UIScrollView UIScrollViewDelegate UIEdgeInsets UIColor UIFont UIApplication NSNotFound NSNotificationCenter NSNotification UILocalNotification NSBundle NSFileManager NSTimeInterval NSDate NSCalendar NSUserDefaults UIWindow NSRange NSArray NSError NSURLRequest NSURLConnection class UIInterfaceOrientation MPMoviePlayerController dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"};return{k:b,i:"</",c:[a.CLCM,a.CBLCLM,a.CNM,a.QSM,{cN:"string",b:"'",e:"[^\\\\]'",i:"[^\\\\][^']"},{cN:"preprocessor",b:"#import",e:"$",c:[{cN:"title",b:'"',e:'"'},{cN:"title",b:"<",e:">"}]},{cN:"preprocessor",b:"#",e:"$"},{cN:"class",bWK:true,e:"({|$)",k:"interface class protocol implementation",c:[{cN:"id",b:a.UIR}]},{cN:"variable",b:"\\."+a.UIR}]}}(hljs);hljs.LANGUAGES.coffeescript=function(c){var b={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off ",reserved:"case default function var void with const let enum export import native __hasProp __extends __slice __bind __indexOf"};var a="[A-Za-z$_][0-9A-Za-z$_]*";var e={cN:"title",b:a};var d={cN:"subst",b:"#\\{",e:"}",k:b,c:[c.BNM,c.CNM]};return{k:b,c:[c.BNM,c.CNM,c.ASM,{cN:"string",b:'"""',e:'"""',c:[c.BE,d]},{cN:"string",b:'"',e:'"',c:[c.BE,d],r:0},{cN:"comment",b:"###",e:"###"},c.HCM,{cN:"regexp",b:"///",e:"///",c:[c.HCM]},{cN:"regexp",b:"//[gim]*"},{cN:"regexp",b:"/\\S(\\\\.|[^\\n])*/[gim]*"},{b:"`",e:"`",eB:true,eE:true,sL:"javascript"},{cN:"function",b:a+"\\s*=\\s*(\\(.+\\))?\\s*[-=]>",rB:true,c:[e,{cN:"params",b:"\\(",e:"\\)"}]},{cN:"class",bWK:true,k:"class",e:"$",i:":",c:[{bWK:true,k:"extends",eW:true,i:":",c:[e]},e]},{cN:"property",b:"@"+a}]}}(hljs);hljs.LANGUAGES.r=function(a){var b="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{c:[a.HCM,{b:b,l:b,k:{keyword:"function if in break next repeat else for return switch while try tryCatch|10 stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...|10",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},r:0},{cN:"number",b:"0[xX][0-9a-fA-F]+[Li]?\\b",r:0},{cN:"number",b:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",r:0},{cN:"number",b:"\\d+\\.(?!\\d)(?:i\\b)?",r:0},{cN:"number",b:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",r:0},{cN:"number",b:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",r:0},{b:"`",e:"`",r:0},{cN:"string",b:'"',e:'"',c:[a.BE],r:0},{cN:"string",b:"'",e:"'",c:[a.BE],r:0}]}}(hljs);hljs.LANGUAGES.json=function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}}(hljs);hljs.LANGUAGES.django=function(c){function e(h,g){return(g==undefined||(!h.cN&&g.cN=="tag")||h.cN=="value")}function f(l,k){var g={};for(var j in l){if(j!="contains"){g[j]=l[j]}var m=[];for(var h=0;l.c&&h<l.c.length;h++){m.push(f(l.c[h],l))}if(e(l,k)){m=b.concat(m)}if(m.length){g.c=m}}return g}var d={cN:"filter",b:"\\|[A-Za-z]+\\:?",eE:true,k:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone",c:[{cN:"argument",b:'"',e:'"'}]};var b=[{cN:"template_comment",b:"{%\\s*comment\\s*%}",e:"{%\\s*endcomment\\s*%}"},{cN:"template_comment",b:"{#",e:"#}"},{cN:"template_tag",b:"{%",e:"%}",k:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor in ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup by as ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone",c:[d]},{cN:"variable",b:"{{",e:"}}",c:[d]}];var a=f(c.LANGUAGES.xml);a.cI=true;return a}(hljs);hljs.LANGUAGES.cpp=function(a){var b={keyword:"false int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long throw volatile static protected bool template mutable if public friend do return goto auto void enum else break new extern using true class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue wchar_t inline delete alignof char16_t char32_t constexpr decltype noexcept nullptr static_assert thread_local restrict _Bool complex",built_in:"std string cin cout cerr clog stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr"};return{k:b,i:"</",c:[a.CLCM,a.CBLCLM,a.QSM,{cN:"string",b:"'\\\\?.",e:"'",i:"."},{cN:"number",b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},a.CNM,{cN:"preprocessor",b:"#",e:"$"},{cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:b,r:10,c:["self"]}]}}(hljs);hljs.LANGUAGES.matlab=function(a){var b=[a.CNM,{cN:"string",b:"'",e:"'",c:[a.BE,{b:"''"}],r:0}];return{k:{keyword:"break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while",built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson"},i:'(//|"|#|/\\*|\\s+/\\w+)',c:[{cN:"function",bWK:true,e:"$",k:"function",c:[{cN:"title",b:a.UIR},{cN:"params",b:"\\(",e:"\\)"},{cN:"params",b:"\\[",e:"\\]"}]},{cN:"transposed_variable",b:"[a-zA-Z_][a-zA-Z_0-9]*('+[\\.']*|[\\.']+)",e:""},{cN:"matrix",b:"\\[",e:"\\]'*[\\.']*",c:b},{cN:"cell",b:"\\{",e:"\\}'*[\\.']*",c:b},{cN:"comment",b:"\\%",e:"$"}].concat(b)}}(hljs);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   119
</script>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   120
<!-- END extlib/js/highlight-7.3.pack.min.js -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   121
<!-- START extlib/css/colorbox.css -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   122
<style id="style:extlib/css/colorbox.css">/*
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   123
    ColorBox Core Style:
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   124
    The following CSS is consistent between example themes and should not be altered.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   125
*/
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   126
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   127
#cboxOverlay{position:fixed; width:100%; height:100%;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   128
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   129
#cboxContent{position:relative;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   130
#cboxLoadedContent{overflow:auto;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   131
#cboxTitle{margin:0;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   132
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   133
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   134
.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   135
.cboxIframe{width:100%; height:100%; display:block; border:0;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   136
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   137
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   138
/*
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   139
    User Style:
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   140
    Change the following styles to modify the appearance of ColorBox.  They are
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   141
    ordered & tabbed in a way that represents the nesting of the generated HTML.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   142
*/
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   143
#cboxOverlay{background:#000;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   144
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   145
#colorbox{}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   146
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   147
        #cboxTitle{position:absolute; bottom:-25px; left:0; text-align:center; width:100%; font-weight:bold; color:#7C7C7C;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   148
        #cboxCurrent{position:absolute; bottom:-25px; left:58px; font-weight:bold; color:#7C7C7C;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   149
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   150
        #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background-repeat: no-repeat; background-position: 0px 0px; width:23px; height:23px; text-indent:-9999px;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   151
        #cboxPrevious{left:0px; background-position: -51px -25px;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   152
        #cboxPrevious:hover{background-position:-51px 0px;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   153
        #cboxNext{left:27px; background-position:-75px -25px;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   154
        #cboxNext:hover{background-position:-75px 0px;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   155
        #cboxClose{right:0; background-position:-100px -25px;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   156
        #cboxClose:hover{background-position:-100px 0px;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   157
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   158
        .cboxSlideshow_on #cboxSlideshow{background-position:-125px 0px; right:27px;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   159
        .cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0px;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   160
        .cboxSlideshow_off #cboxSlideshow{background-position:-150px -25px; right:27px;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   161
        .cboxSlideshow_off #cboxSlideshow:hover{background-position:-125px 0px;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   162
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   163
/* begin inline customizing */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   164
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   165
    #cboxBottomCenter{height:43px; background-repeat: repeat-x; background-position: bottom left;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   166
    #cboxTopCenter{height:14px; background-repeat: repeat-x; background-position: top left;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   167
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   168
    #cboxBottomCenter, #cboxTopCenter {background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABLCAMAAACGCB2xAAAAM1BMVEVSUlJHR0dPT09BQUFLS0tQUFA6OjpgYGCKioozMzPS0tJaWlpRUVHy8vKJiYn////m5eV3dK93AAAAK0lEQVR4XqXBhQ2AQBAAsJ48bvtPywyE1GLGYUgtlPuT0+b5abealNDScL0YiAPSV/RH9wAAAABJRU5ErkJggg==);}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   169
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   170
    #cboxTopLeft, #cboxTopRight, #cboxBottomLeft, #cboxBottomRight, #cboxMiddleLeft,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   171
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   172
    #cboxMiddleRight, #cboxContent,#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   173
        background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAABLCAMAAACx6hDAAAABj1BMVEVPT0/e3t7b29vS0tK7urq5uLjq6uqZmZmSkpJaWlrU1NTj4+PFxcWvr6+goKBbW1u3t7c9PT27u7vCwsKsrKxiYWGqqqq5ublbWlpeXV2Xl5fExMSbmpq6ubmNjY18fHzy8vIrKystLS0sLCxNTU0uLi4wMDDNzc05OTns6+vl5eUvLy/q6ekqKipMTExDQ0M4ODgyMjI2NjbZ2dk6OjrY2NjMzMxLS0vAwMBCQkLo5+dHR0cxMTFKSkpBQUHv7u43NzdISEhFRUVRUVHx8fE7Ozs8PDwzMzNJSUnp6elGRkZQUFDr6upeXl7t7e1gYGCoqKjv7+81NTWKiorn5uZERESCgoJdXV3p6OhOTk51dXVAQEA+Pj6np6fu7e2+vr5cXFxSUlKJiYnOzs7s7OxTU1P29vbw8PB2dnZfX1/m5eV4eHifn59qamqmpqbQ0NCOjo7Kysqzs7P4+PiDg4Otra3z8/M/Pz80NDSrq6u/v7/Pz890dHRpaWmBgYH5+fn08/NoaGjPzs7///+ioqIRuwm9AAAGHUlEQVR4XsTXZY/jPBAA4PwUQxjKzMzLjMfMzPfiD7+xm23ibjZVu5u7+VBL7ljyI3scW9pZOv59+gdjZ+NOeyzlyzXtv9B408/Uynlp3L4r7bzYWC5E4a4xvAQYGkEA2/DG2GL6biBmHbGoz9pVhTBkuRCEhx0TzVNKKNspBczXdHtLnTRa9yC78MdhAND+6xaLh3+7bf1mhO3guEpooJfbaH56h2i7gOx5oCmlckBkwFzqGIi+9LdocllofMSUUnzrndui6wo5bnxVzJyC8BztO06A0HFeM4IIxLgBRAZsYAeI/vSf6DxASAkhFIS8vbaQ6aSw4ExBWNoyDyjFAUKM6Q9zy1ddEwBSSnStY3c0ncCo78j2px+YW6VLQqIoCgEhb68p5L4jWY6xyIsR4yHLgASiJ4S5JohCaICQQn8756suI5vC0KlkNKRlFBiEU9mJkN7KdYaRCpkvVh00y8HRbA6qMZkRZ8L7aJMolmUpiMe6u215ENafOEPe6Qlbk0K22tvoqTCGwob1lpyn0zN0PzIhB8aqzdFevFgLjGJ8b9TMA3EmrJuPAaiqqvVgbe3g9rFp8834z+2DtbUHvF8h+151QfUliKVWWKgWSUBFekI3/TGqzwstV2jdgFCulj+EjfhSbLlEELIDv82A0wmzXffVYJMqOBTcLkQhrLo8om5VkhAg1BnQE16kt81HpWiEfAmb/4cPeV5rDWKu8BAVGpRJ2IQ5ERemQsy73X6+GXdnRK1bSfb7/WSlqwHQJ/TSCyD3hIorVG5CKFdHr8KF907j5ao8FRppBxMFgDDfpCgkU/i0n2DHq0UbPXGFz5AtHEy+9KwRkRCWMP4tXKhlTlpVWZqtIVBAEryGSRYBa6jyP9T5NfTSYQ0j2qVH+XLx3gJh4nRvEAPh3Ys6nNUbq8OCWIccLtahlpmdNLom1qGb3k5HVofSUX5UWyDMpXpxVoggdM9SIPrO0olwllZUAL4XzlId6NOwFF08S3l6hGcpO2iqrZNFwu1esRljQ0K+h3XEg/frm8L3MEEU6O4+gR9Y9IT/e8jTyWYE30NB+Gk5Ib/T6ErInUbzXVKMdAMTCF1Dmk4gcCM9d6dh6RELtQXCz11BGHovpYH3UgorZ8NqUhh1jGx/evC9FOQg5O1vFa72thj73xZ47m2xv9LbInqh+D4MffABUeLAp5wYwfswEiHEcKU3fnalN37kwl/s2M9LAkEUB/C0ml12VgmKLh2+cwtBOkWRUdIvIpJayYNdgkIIukUDdYz8x2tnt96OjQMS8hbzexFhDn6QN2/eIyHTnoZByJD/KJwL58L5TdM/FY5uIZ3dQvx0C2l3C+HuFsNKmuF7/tlm6vixdnR8vfm744tQV/OOX9UJEen4SBpDpKm85J9Mr7Ya4BACK4ZgAYGUaICAIdLxmroro7DVFQHGCFEX1ss7BRpi0wBTYrN4PBDdVumE5reOFSKsFqcnqZERVQaElh3r+A0dn5pwQ3mzOiIcqBgmjo1wZoiLE/A3LEBOLUzAMInVYMrCtUVv1m1hWyTIEgZfSYTZCIt6+iVEFqqurPoopiJHhEhUe7rCpSdvlkloLvwQViKziYpAoeoiogNIQoTysVUSYV9FGl4hUXoWkYAOIXREcl5hQwJeIaW4EQ4A0D3qEAKyMfP/YW+261Aw16H/Lu3MyF36936o6Qpy9ENW4eRvmv6kbxpmIcO7lEHIMFuwCf3zYaSaE8+H/EL2GZ9BWOY9zWc7d+wSMQzFcbzDCTqVCnJ3ok4HdrpAKZRSWnInicUOQiVISYeem25O6Xz+4/YJWaokg8Px4P3+gw/p+L79p/AkQyEkIQlJSEISkpCEJCQhCUmofcJWIhXa+1KfcJlIBsIDSmEzCatLt/CW96pGLNzu2LlbeBcbe+eNURhs6r2+cQGvuczhVh+tsMsK1qdX769DuLqYLQyHdc+lht4CqfDnMy0LZmScjI+/N7Y8llpNT4hYGABRVSYSIp1PCBmZygJRCn1pV87UHsKurnnAK3Tnebu6zCDOgydEKZwnlts/+srOBpY4hdbYOBtZACIWghHm7JyRCu3efEP6T4Vv0sK5wmQ8JLkAAAAASUVORK5CYII=);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   174
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   175
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   176
    #cboxTopLeft{width:14px; height:14px; background-repeat: no-repeat; background-position: 0 0;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   177
    #cboxTopRight{width:14px; height:14px; background-repeat: no-repeat; background-position: -36px 0;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   178
    #cboxBottomLeft{width:14px; height:43px; background-repeat: no-repeat; background-position: 0 -32px;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   179
    #cboxBottomRight{width:14px; height:43px;  background-repeat: no-repeat; background-position: -36px -32px;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   180
    #cboxMiddleLeft{width:14px; background-repeat: repeat-y; background-position: -175px 0;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   181
    #cboxMiddleRight{width:14px; background-repeat: repeat-y; background-position: -211px 0;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   182
    #cboxContent{background:#fff; overflow:visible;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   183
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   184
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   185
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   186
        .cboxIframe{background:#fff;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   187
        #cboxError{padding:50px; border:1px solid #ccc;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   188
        #cboxLoadedContent{margin-bottom:5px;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   189
        #cboxLoadingOverlay{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAElBMVEX///////////8AAAD///////9H1zSfAAAABXRSTlPvgBAAz5JLnNUAAAA+SURBVHhe7dMhAQAgEEPRIfAYEkCCi0ACEOtfBc8WAHFfPr0hGp/KwKS00BUPquIGTZ9gYqIdrZ23PYK9zAX6sAYavSqAMgAAAABJRU5ErkJggg==);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   190
         background-repeat: no-repeat; background-position: center center;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   191
        #cboxLoadingGraphic{background: url(data:image/gif;base64,R0lGODlhIAAgAPYAAP////9VAP77+v7j1v7m2v78/P7Quv6qgP6wiv7UwP749v7v6P6viP6ofv6/oP7u5v6fcP6LUv6rgv7s5P728v6nfP7Aov7Irv54Nv57Ov5/QP6bav7n3P739P6mev7Dpv76+P7ayP58PP6cbP7w6v6+nv6keP7Tvv7g0v53NP56OP7HrP7Yxv7czP7z7v7i1P50MP7MtP7SvP7EqP708P6ebv62kv7k2P7r4v6uhv5gEv5fEP5sJP5eDv5zLv67mv7q4P7o3v7y7P7KsP68nP64lv6WYv6zjv63lP6DRv6HTP6KUP6CRP6GSv60kP7ezv6ESP6AQv7f0P7Wwv6ITv66mP5mGv5vKP52Mv5jFv5iFP7PuP6QWv6MVP7CpP6gcv6PWP6TXv6XZP6SXP6OVv5rIv5qIP5oHv5wKv7byv7XxP6aaP7Otv6YZv5yLP7Gqv5kGP6UYP5nHP6idP6jdv7Lsv5uJv6shP5+Pv6yjP5cDAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJBQAAACwAAAAAIAAgAAAH/4AAgoOEhYaHiImKi4yNjo+QkZKECzk2NJOCDxchgwU1OjsSmQoQGCIWghQiOz01npALERkYGQ4AFBqtP4ILN0ACjgISGhkpGDIANjw+KABCKNEujxMbGiowowAEHIIT0SgUkBwjGiIzhkIvKDiSJCsxwYYdmI8KFB0FjfqLAgYMEiSUEJeoAJABBAgiGnCgQQUPJlgoIgGuWyICCBhoRNBCEbRoFhEVSODAwocTIBQVwEEgiMJEChSkzNTPRQdEFF46KsABxYtphUisAxLpW7QJgkDMxAFO5yIC0V5gEjrg5kcUQB098ElCEFQURAH4CiLvEQUFg25ECwKLpiCmKBC6ui0kYILcuXjz6t3Ld1IgACH5BAkFAAAALAAAAAAgACAAAAf/gACCg4SFhoeIiYqLjI2Ohw8Tj44XKlhbk4sKEVZZXAWZgwsxLYMdTJ1RCqEAIA1JSjOCFKhaUSCCoI8kRkpMULIKVFZaXaALN0C6jAVHS01RTFMAVVc8XgBCKNsujwsmS1AaCIJSpQAT2ygUk0AeS0oXhkIvKDihQjEyy4QdNJMgOqxqxC9RCyJFkKwYiKgAkAEE2CWi4CChDSdSFJFQx0ERiCEWQlq4oUjbto6KgCQwIOOJAEUFcBAIInGRgIKsGrrogIhCzUcFgqB40a0QiXpAMj1QJ6kVLgA41P1kxGHbi39HB/A0iaKoo6MvSAgisC0pAGRBXk4SOOjGtiCDFXCGSodCSM6GC7ze3cu3r9+/gAcFAgAh+QQJBQAAACwAAAAAIAAgAAAH/4AAgoOEhYaHiImKi4yNjoYkTj8Uj40SPGUMlYsdSzxmSiCbg0IyKIM0TTxnTAqjACAIYGNDgh1Uq1CiAB2VLl9hZGAXsGSrXAUKEjNABY4FRGJjXV0sAD8+aB8ANmItKC6PJAxiXBFIAAIhIYJVUygolI8TCNIxhkAvKDijLidTzgx1oLEJxC5GAReRkLFixZSDhwoAGUBAXiIWQy6smMFBEQl4KDoqenKi5Al+iYSAFJmIwgAUL5opKoCDQBCLM189c9HrEAWcz4LADFeIhD4gmxaAnCDIoCAcIIEuEgqToNEBvVTCI+rIxYAXJAQRgIcUwIIbQQQUPHiD7KCEOhMBTIAnJG7EBVzt6t3Lt6/fvYEAACH5BAkFAAAALAAAAAAgACAAAAf/gACCg4SFhoeIiYqLjI2OhiRVDhSPjQhYPkeViwpjWG5dIJuDBTdBgxRkWGhKCqOCK18QW4IdXKsRogAPHY8FNl8bG2wAIEarRgUKDW4ROI8XHl9rbS0ADhkYbwBIWj1wU48uPx4QYg4ABS1pgm09ZUc0lQtE5SeGR1hEz5sUIWkFDAkAIq9SAQGOAjIC8YLFFBQIExUAMoAAJUU41oVQs0ARCRQgOSyaABKkC0VCSopUJADHjRsTFhXAQSDIRZmvErrodYjCTV9BULw4WYjECxRANn0EGbNYRBwlfzIiKVSe0Ru9UpqsRGHAABKCCIBMCmCBqYiPBKC9MZZUTkJUEIW8PVRgAdG5ePPq3ctXbyAAIfkECQUAAAAsAAAAACAAIAAAB/+AAIKDhIWGh4iJiouMjY6GQhZDHY+NSFEiRZWLCmtRGXEgm4QgCoMdYhoZYKajAA9ETmqCnRoqY6IACy6VCQgHDQkAIBAaGCMAChIpShyPTzYMDR4oADNQUUMAVXJZOj+PHRdOOR4rAAVST4Ij3joXlS7jOSyGNnA7YRSbHSgvhyAMvBHiqlEBgxNu3MCxqACQAQT2KXKBoiIKGopIWHQ20eJFRUI2NsShcMJIAkEkNixo0AWlQxRUPioQxB+vQiReoACySWNFk8MECMJhUSajCRVfYMx5g1LIijcdKSAwgIQgAhV56roBRGilAgcF3cg6KCxLAEhREDxbqACJqGwI48qdS7fuqEAAIfkECQUAAAAsAAAAACAAIAAAB/+AAIKDhIWGh4iJiouMjY6GLitsCo+NJRFUM5WLICYRTSMCm4kdc59iIIIgLw+VT2woggp0EVBrogtfblFSjhNeP0hpAAINEUl0AApfZWdyTr4rFkVOBAB1YBFsAD92zlZ1jiBTbw42WwAFL7ECRmZycEYUjxRqbyW9hUfwRiSbIEGCHKLwxoKQUY1AUCjQiAQBAhMWFWjRgkCHRRRQaERBQxGJjRwwbuSoSAhIRg9u3IioqAAOAkAuMmKIsFEBFzINUZi3qUAQFC9cGCKxDsimjxpZghAFAMdGno4eaHzRkeiNiyY1Cn0EgsAAfwAIaDQKYMENIEwr0QRwY+ygtTUUAUzQeDCuoQIkttrdy7ev3799AwEAIfkECQUAAAAsAAAAACAAIAAAB/+AAIKDhIWGh4iJiouMjY6GBQMDj45sI20ylIsgDG1jBwWaiQp3nl8ggiAyQxSPJCgPqZ1cdAIAJB4pbkeOCmoxF5MCR21cEgAKFTBodmO2jB0hqzM4ADIjRpkOKcw8P48cLAYrIQAFN5MFI252ZRutjiAELFschkVXZWskmgUkC4coXPjgQlQjEDj4MSJBgMCERRPA2MlgYJGCFygy0lCE5MwVH21QjcKoUREBNglY3GC04MaNh4oK4CAARIHBm4gKuOiAiAI8SgWCoHhRsBAJjEA0vcoIE8QzHBlR/Gz0IOOLjUdv8BQStWg8AjcUEsiYFEBLIM+ADrpBdlAonIIRJmQUAhcSCa918+rdy7evqEAAIfkECQUAAAAsAAAAACAAIAAAB/+AAIKDhIWGh4iJiouMjY6HIAKPjkFFP0CTjB8VXx+ZigI/FRAMkgACCWwdjwVCNIICRKMHkkJ3URlIj0FPITgABQ4VNUcFIDl4KiliposCLygtUyQAIXd0LQAzuClYDo9AKFIhN4ITmAV0GSkwX6uOIBziC4ZEKT4QQpmtr4YddStcfGoEYoI+RkIIEJiwaEIYNxpkLAIBDQWKfojy6NiYRIEiihYvKjrSo2QTEIsW3LjBUNEDD1SohBgIqlmjAi7eGaJA4VOBICheCCxEAhqmSSRCtowkCEfIno8eWHzxquiNVUJCDoVH4AY1AAQsHlUJpIDPQTfEDjJLc9AEiwcP2xYqQGKr3Lt48+rdizcQACH5BAkFAAAALAAAAAAgACAAAAf/gACCg4SFhoeIiYqLjI2Oj5CHCmkhCpGLU0gMMpeJBUOaPwWCAiwyHZAdlgACF0g5NgIALkcRTSWPEy8DQgAFdUh3uCBOVFBMELKMBTcoKC8UAC8/CC8AQ11NTBozj0DOKA+CJOIFEtp4FaiOIBzPLoZeTHge8JAFLtGGHVt1NJ2MQEzoxUgIAQITFj1og4EJm0UCBoD7l8iGHCtWlIBQFHGiIhtZQmpcZPBGQkUPxIhY8hDgoQIUlDnCt84QBX33grwzROIFCiCRSIA7CUIZDnA4Gz1w9uJfzxuohICzx47ADRKCCDgDCmDBDRyjIoUF0OznoLEuJzgj6LJQARJUCtvKnUu3rt25gQAAIfkECQUAAAAsAAAAACAAIAAAB/+AAIKDhIWGh4iJiouMjY6PkIgkC5GMHEMzN5WKLBcOQ4MCL2oKkCAgggWdJR8FADREbWMfjyQvA0KCaRdEFwACJUZcXQ2ujRwoKC8UAEB1FhwABrJdS76OOMkoD4I0JIJOY11UOaWOIMgvNIYXZOTrkAUuzIYKJ1vwm4oCD0FCxomEECAwYRGQGhpUJPmSz5CAAdoaGrpjpyKPKzISFYCYTGIhBGZCmrFjQJELAjcKKnqwIQoTJk4E6DNUoIPNR/I6IGIxRGe8IMpcGCKR4EsbobW0qQQhE0A2KQ5QQHqQTB0AWzd0CtGW6xEIlN8AEEgGRNCCGzgA4hx0g+wgtfoTJiTrOrNQARJI6+rdy7evX76BAAAh+QQJBQAAACwAAAAAIAAgAAAH/4AAgoOEhYaHiImKi4yNjo+QiCACkYxCTywklYoEaTIsgwUcQJEgBYM3aQYygh1vHiYtj0IvN0KCnVtTAAUrJhBrDo8cKCgvFABCLQYTAGoVwGJbjzjFKA+CCjSCDl9rRkgKjyDEL9uFWxtxNuePBS7IhiAsJ/GbigILQED2iEIEBJop4jCHShImYlAkEjDAWrtDOVKkwEIRwilEBBwquuOmY0cIilwQuCEwEQ4ISpRQmUPgnqECHWJeZPSuwyEQQ4bYhFQgiDEXhhxo0TIG6CMS1gROEpQGih4dMSA9KGYOAIlaNoUYwKOHCCQQIzUByIiCFIAFMiqUdIeqmFleLhQHTSh2K26hAiSM2t3Lt6/fv5sCAQAh+QQJBQAAACwAAAAAIAAgAAAH/4AAgoOEhYaHiImKi4yNjo+QiAWRjRQ3BAqUihwoKByEIJOQBaIABJ0vggoJRBeZjjQ3N0KCp1IDAAUyRzkHKI9BqBQAQgMoLgBSNgwNDZ+OOJ0oC4Igr3XMJl6ljCCcL8OFagd0Dh2RBS7hhSBPIeeaiwIkODjriC4EBBOLQAdjZLpAwJXoVCcaio4wicJQgwdFBlEgTJQng0WLDxNRIHCDn6IJHsiAAVPhWTxCBTp0eNUoHbxCAmLEeOmoQLAXyAoxsCLHSE5HJKR5BCFAUJgdWqywgfQAFUISL26cQ6IDqQNIIDiSqNUJCAAFDdyI8Thq0I2ugx4UPQlgQidabA4LFSDxM67du3jz6qUUCAAh+QQJBQAAACwAAAAAIAAgAAAH/4AAgoOEhYaHiImKi4yNjo+QkZKECkBAApOJQCgoD5mDBQWDBJwcggUDUwSQHTc3QoKkKEGCTzMODjSPOJwvHQBCAwMUAEErDkVVLo8TnCgLggIggiwWRUd1kCAcKC/EhVJVeRcKkQUu34UCNwPln4kFQg8Pv4oUBAQTixN5NW1iDVYlkoVCV6IfZLp0iRAhhyKCBhEVaUKR4h17BG7oU/TgjpiPOWi9o6TAXaNz9dRt2ZLSUYEg3ZYVysPjyoaIjUg42wgCEwAjVs7YMQDpQS9dJF7c+FXESlAv2jKSiMUJCAAFErBwMWVu0I2qgxZMe9cMBayRhAqQkIm2rdu3cATjNgoEACH5BAkFAAAALAAAAAAgACAAAAf/gACCg4SFhoeIiYqLjI2Oj5CRkoQKQDgCk4k4KCgPmYMFBYMEnByDJBwUkB03N0KCpChBgkAsBiGQE5wvHQBCAwOqJCEydWyYjg+cKAuCAiCCHMUzuI8CHCgvqoU4dR8J0JAFLtuGOEHhn4gFNCQkyIkUBAQTiwtEBx4mSECKsSg0FH3YsKaNQST+lgVM5GDMmDAObSiSd6OeIhJHvnyZYwOHukIKFKRjNK6XIQpvLph8VCBINheGjrjBMufVIxLLLIIIKIALDzQ+6Ch4pCxbQBIvvrABgIQHjytYTjwCQeAGCVgoPJApoOBLmadeIokSdAMFka0AaHjAomTAJ10XFIiA4nD1UwESC0Z+3Mu3r9+/kAIBACH5BAkFAAAALAAAAAAgACAAAAf/gACCg4SFhoeIiYqLjI2Oj5CRkoQCEwsFk4k4KCgLmYOYgwScHIMULpEdBDdCgqMoQYITLyg4kBOcLx0AQgMDFLycLS+QC5ydggIgsigtakCQBRwoL8CFQi1TKKGPBS7WhkKXn4unHdyIFAQEE4tCK0VONh+tia8oNIoxBw0VFR5bFN3Ll+jCl4MHYyhSd6OdIiFEJNy54wAVOUIgMnZzscuQixVsOnYLQs0iIRsZNDQw2YjEMYdPSinggkUFngMiGT3IlQ+ICjQBq/jAggGPl0cgVpEQ9ELFjjEFQHgYimGEgGiDWvjYQQaTEAg+Uvz49OKKjiKm2IT8ROFIlZwXCOPKnUu3LqRAACH5BAkFAAAALAAAAAAgACAAAAf/gACCg4SFhoeIiYqLjI2Oj5CRkoQFJCSTijgoKAuYiASbHIMdHZEKHARCgqAoQYITLy+Xjw+bL6VCAwMUAEKbrZALv50AAiCvv6qPBRwoL7yFvig4kgUu0IYUNJ6MChTHixQEBBOLHVMrHytSi6wo24ksVUVISD/wn7/4h1MM/gw2XCgSd6PcwDdIbBBhx62QAAUClrkoZYhGDBkKIhUI4kxgoR9NIiDYx4jEr3ICWrgCIUYDFCp5KDaq5WxbDjlYDABwIEJDEiorHoEgcOMSBRU64BgpAEJCzyQmCkCSCoAEjKRhpLrwICKKBU9tkv4YRMEARk8TjvyQ2bCt27dwBONGCgQAIfkECQUAAAAsAAAAACAAIAAAB/+AAIKDhIWGh4iJiouMjY6PkJGShAUkJJOKEygoC5iIBJscgyAgkQocBEKCoChBgg8vAzSQD5svHQBCAzcUuZsoOJALv50AAgKCmpuqjwUcKC+9hUKbwZEFLtKGFLOeiwIgBYwUBAQT3y9qCSzMiawo3Yg3dUMXFyeL7/GHUhb+FgYWUeBw45yiDgZmvIlxyVshAeKaucBliIYMNaUgFQgCzYUhL2PaVNHWiMSvcwKeAAEA4ksELnGqKHhUC9osBDxE4PtAJQKYODEegSBw4xIFPFbKbCgAIo8SnzkiOoooBEPSNuJo3KHS5Y2nEVZ4lBjUIc2UmZgm2HCA1qHbt3AF48qVFAgAIfkECQUAAAAsAAAAACAAIAAAB/+AAIKDhIWGh4iJiouMjY6PkJGShAUkQpOKDygoC5iIBJscgyAFkQocBJcAoChBgg8vNx2Qmigvs0IDNxQAQpsoD5ALv50AAgKCE7+qjgUctryFQi8oOJIFLtGGHTSejAWljBQEBBOLBUADA0DIiqwo3YkPTy1padbuv/GIQTL+Mq4UUeBww5wiEC1OnJACwpshcJCwzdrG4knDiEFQSAlh6AIEDx8mOnKx6cgcYyFQGDvQpgadDxcbaXqDxQsAJz7wGAAwJE6bEXMSPALxQgwDARSS2IFhwliVMD9/QBJQDAcWOz7aIKPgxEibGJgWqMCqVZCCjTEjUVBix80dh4UQLuChkgZuoQck7Ordy5dQIAAh+QQJBQAAACwAAAAAIAAgAAAH/4AAgoOEhYaHiImKi4yNjo+QkZKEBSQuk4oPKCgkmIgEmxyDAgWRChwEQoKgKEGCDwMEIJCaKC8dAEIDNxS5mygLkAu/wQCkghO/qo8FHLa9hUIvKDiSBS7Qhh00noyljRQEBBOLBUC71YusKNyJw7/Zn7/tiO+b8YcUHDfkigVBLwak60bwWhABhkCguIEQUrMiWH4YksHAxhYFkIQgMLMDgrE0L4w5qXDnCJuGjWZY6QFnBoAiGZQkAGBgDsk8LR6lyeAmj4AOS1LguWPMyxwPEthAIvFAEAkmKUR8KdXBgok7UjA9jVrjm4AbrjC5aJIigwmChTxEfYOW0IISbwgwtp1Lt66gQAAh+QQJBQAAACwAAAAAIAAgAAAH/4AAgoOEhYaHiImKi4yNjo+QkZKEBUIuk4oPKCgkmIgEmxyDBZIKHARCgqAoQYIPAxwCkJooLx0AQgM3FLibKKmPC74LggKkABO+vI8FHLXLhEIvKDiSBS7QhR00nozHjBQEBBOLBUC6xIurKNyJwpu26r7tiEK+8YoUHDfkigU4BDgA60YQSAkZsgoJCILjm6MJSXrIKWEohIMVaRI6qrJDB5w5AAQ8uSFoho0SH1pAMqEjS5kVAIg0GcMCgBoENoh8ePCohYYUTgR0GBNliRMABergJAIEkpB0QpZEoXKAFIgtPwyAwBQ1ipIK3255okHG6x2Che54rYOWEIkPdQi2tp1Lt66gQAAh+QQJBQAAACwAAAAAIAAgAAAH/4AAgoOEhYaHiImKi4yNjo+QkZKEBUIuk4oPKCgkmIgEmxyDBZIKHARCgqAoQYILN0ECkJooLx0AQgM3FLibKKmPC74LggKkABO+vI8FHLXLhEIvKDiSBS7QhR00nozHjBQEBBOLBUC6nYurKNyJwpsDsorr7YhCvvGLFBw35IoFOAhwqNetGw4HJ+QVInEp0gQlWXhYMHRDBosg3xodgSOnTAUABV60AnBixZYpIx15kGPGzRAAXrjUeAJAioUVbNSAePQECp4iAhSs6WKkBMgpXlac2PlICDEALsJ0iXOElIAXCaphchGnS5g8GbvREOPVRsFCR7waOBvtggGmbAbjyp0LIBAAIfkECQUAAAAsAAAAACAAIAAAB/+AAIKDhIWGh4iJiouMjY6PkJGShAVCLpOKDygoJJiIBJscgwWSChwEQoKgKEGCCzdApI+aKC8dAEIDNxS4myi8jwu+C4ICshO+wI4FHLXKg0IvKDiSBS7PhB00noyyjBQEBBOLBUC6qYurKNuJJL433ogDagkxnYlC7/GHLWFNJrcSFcBBIAi7RR2E7ONGCAeRISAOubgUKUgXM24cGKIV6xGJMGWu+JAAoAABagBQhJCC4sEjByHdqFgB4EINCQMABDmxksAjCXbcpMgjQIGJNSZopuQpypGUCFGK3KJRYw0djSWBAFEAycU4QTQgrJlDhCEhCnPWfLFglpADtWoN2g6iIIOFALl48+YNBAAh+QQJBQAAACwAAAAAIAAgAAAH/4AAgoOEhYaHiImKi4yNjo+QkZKEBUIuk4oPKCgkmIgEmxyDBZIKHARCgqAoQYILN0Ckj5ooLx0AQgM3FLibKLyPC74LggKyE77AjgUctcqDQi8oOJIFLs+EHTSejLKMuTcTiwVAupeKQmBKNRI3iiS+BIskKT09Ox/o8YwXTCk12AoVwEEgSMBDHVx442ZogoUYIA65OAcJyBgfKvIVgoci1iMhbXykEJEHADliAIAMe+QExkgodQBskVClFUcUohqB4JIiQxQHBUAwaODkhKAJ0h48YpBBg5OIFCQ0yBNTEAWKjSjIOKHA6p0GCIYwJAQiD9gtYwkZOOAkZ1qTHAeovZ1Ll24gACH5BAkFAAAALAAAAAAgACAAAAf/gACCg4SFhoeIiYqLjI2Oj5CRkoQFQi6Tig8oKCSYiASbHJ4ACkEEQoKgKEGCJARABZCaKC8dAEIDNxS3myi7jwu9C4ICsQATvb+OBRy0yoNCLyg4kgUuz4QdNJFCqI3GjCsYMGudiQVAuduKQhg772+KJL0EiyQZWVlwM+y9ootDmoiYg61QARwEghQ8pMAFuFGGHswwAOIQhYWLcLQRAeWCIRLSYD0SAgEPEypVWl0CAETYoyomlXAxAEDNjyHDhPQC4ghEGyZNuswoIIBIkRlSBD148cJbIydNIhCpSMNGkQ8sBnVQAKnDFDVcAXQoUsSLGoiEBHwoYgEFWkI4DS4kWPdW0MO6ePPWDQQAIfkECQUAAAAsAAAAACAAIAAAB/+AAIKDhIWGh4iJiouMjY6PkJGShAVCLpOKDygoJJiIBJscngAKQQRCgqAoQYIkBEAFkJooLx0AQgM3FLebKLuPC70LggKxABO9v44FHLTKg0IvKDiSBS7PhB00kS6ojcaMQyIYI52JBUADBNiGQnhWcHAXiiS9oopCUWZmZW/49oxidEnigR0lHASCGDSkgAa4UYYWXEgg4BCFhYomzFHChY0hEtKAQHJRgQqZOF4E0VAgCEgvb40cLCETZoQaAFJipNklpNcERyDm0FwTo4CAIUPUUAPw4MUAjIaIhGnzpmKHGUOm3CMFAlKHEC2MgbgwJMFWiIJYDDkxDO0gBTcKfrqdS7euXUOBAAAh+QQJBQAAACwAAAAAIAAgAAAH/4AAgoOEhYaHiImKi4yNjo+QkZKEBUIuk4oPKCgkmIgEmxyeAApBBEKCoChBgiQEQAWQMi0oLx0AQgM3FLibKLyPORC0C4ICsQATvsCOQFBfT8yDQi8oOJI4DsWHHTSPBS4kQgKNyIokXxoZIhuoiQVAAwS3iV52djw8ZQ7nvqKJM9wIFOhFkRBfrBKRoNMEypIGl97heKVgUSUSEUchIsEmBDlDFKQ5WnAgTo0EhkhUAwKJBoI4G+jUEaQAhCAgvtw1emNkwxwJTwAEeTLg1sFN2xgJkLDhS4UTAAqwoMUSwAN5FR3NcMqGnAA1tP4BOAZJgZQXyAqkoaqxEJAnLw1EtqWQta3du3jzKgoEACH5BAkFAAAALAAAAAAgACAAAAf/gACCg4SFhoeIiYqLjI2Oj5CRkoQFQi6Tig8oKCSYgx0FgwSbHJ4AaU0/QoKjKEGCJARAoY9zPSkGHQBCAzcUu5sov48SOz1GD4ICtBPBw444STtlT4ZCLyg4kjg/bLSFHTSPBTSWAo3fiSwbTUxJX52JBUADBLqIIEZY+zAwSIokgr3CtyGDQYMOFAkJBkRRiw1kyIxhEA9RARyyQCwCIUSIOFOJXCR4km4QhWePSDiZc6eFIRLYGj6iUIXOgTwJBIHQCABHsI+N2Jg4gODHDQAwB+hauGnBIyIHGCBxCaCVzAX1eDZSk6eImlAFbmwaCKBASUYTkonapA0kIV4EDRS4LWR2rt27ePMeCgQAIfkECQUAAAAsAAAAACAAIAAAB/+AAIKDhIWGh4iJiouMjY6PkJGShAVCLpOKDygoJJiDFEKDBJscngAtTSlFgqMoQYIkBEAFkB5ZOlYGAEIDNxS7myi/jwxwWjsSggK0ABPBw444VHBnF4ZCLyg4khMlW8yFHTSPBTRCNOCK6Yhpc2RLER6hiQVAAwQdiSA1UVEaGniIKCIR7BUiAXSaKFQ4Q5GQYEAUSTHRps0IG/MQFcAhC8QiEC5cQDN1iEaaG+sEURjpyIWFPD9uGCKRLeIjEG+OVPmAQhAIjwBwBBvnCIWTKl5iPABAc0C+h5s6Fa1i4cIAVptsLrgHtJGCE2xkAihwY5PBsSkZCSDEYdMCkoUOKHDg0BWu3bt48+pdFAgAIfkECQUAAAAsAAAAACAAIAAAB/+AAIKDhIWGh4iJiouMjY6PkJGShAVCLpOKDygoJJiDNEKDBJscngAtUBlVgqMoQYIkBEAFkAdmVmUyAEIDNxS7myi/j0c8Z1Y5ggK0ABPBw44TZDx2dYZCLyg4khNeMsyFHTSPBRQuNOCK6YhSB2JhcTnjiQVAAwQKiQIVXV0RS0suKCIRDIi+O2MSJhyiSEhBRQMYmDDRwME8RAVwyAKxSAAFGh1MKerwwuAhCtAeUYjhhc0DQySymXx04kOdKdsAgOAIAMezRyRW1DnxZFzMASEdbrrkyAUbGWleAmhlcsGNIAIg2esEoMCNTa8ErZsUZNMCkYUUBJkwFq3bt3AF48pFFAgAIfkECQUAAAAsAAAAACAAIAAAB/+AAIKDhIWGh4iJiouMjY6PkJGShA8XLpOECxOEX01SJJgAU0l4JYIUKkpSHKEVblduRAAUGWQoQYIkBEAFj04wbnZoBgBObTcUAEIozMmOD2EwaDwVghO9ABPMKM6ON9E+FoZCLyg4kg8fFwKHHTSQ7hTYi/OJL0dzEBBO74kFQAMIKEgkIM+aNm3EGGGjiMQ2IP6QfJk4kViiZcwgJuJQBQECJxe6HSqAYxeIRQI6UBgYSpECHEIQURDpCESIBE8uFSJRTuOjF1OeoNgEAMRJADi20XQZQuiLdzwHdFC2TWejAgNQvAAFgEBGQQtu4KjHSMECqzeY4RJEdhIQZgsPWhoSMOGa3Lt48+rdiykQACH5BAkFAAAALAAAAAAgACAAAAf/gACCg4SFhoeIiYqLjI2Oj5CRkoQLRTMKk4JCFyGEdDs6R5kCBxgiFoIUeDs9Jpk0XBkpKg4AFBqsRIIkBEAFjwwaGVgYMgA2PFgoAEIozhSPExsaKjASggQPghPOKNCPHCMaIjOGQi8oOJIkKzEChx00kAoUHb+M94pCFjkSEiXfEBUAMoAApkRDGlTw4MFEAkUkugFRFIOBRYss9ElU5IKNAwcfTnRQVABHLxCMFChAmWmRABcjD1EI+KgABxQvXBgigW4iJG7OJggCwRJHN5qMCDh7IY/ngJHNnkECgpMENmc+F9xQB6mAi4MAbjgLMihfS6MorLY0JOCB2rVwB+PKnUtXbiAAOwAAAAAAAAAAAA==);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   192
            background-repeat: no-repeat; background-position: center center;}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   193
</style><!-- END extlib/css/colorbox.css -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   194
<!-- START extlib/js/jquery.colorbox.min.js -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   195
<script type="text/javascript">(function(a,b,c){function Z(c,d,e){var g=b.createElement(c);return d&&(g.id=f+d),e&&(g.style.cssText=e),a(g)}function $(a){var b=y.length,c=(Q+a)%b;return 0>c?b+c:c}function _(a,b){return Math.round((/%/.test(a)?("x"===b?bb():cb())/100:1)*parseInt(a,10))}function ab(a){return K.photo||/\.(gif|png|jp(e|g|eg)|bmp|ico)((#|\?).*)?$/i.test(a)}function bb(){return c.innerWidth||z.width()}function cb(){return c.innerHeight||z.height()}function db(){var b,c=a.data(P,e);null==c?(K=a.extend({},d),console&&console.log&&console.log("Error: cboxElement missing settings object")):K=a.extend({},c);for(b in K)a.isFunction(K[b])&&"on"!==b.slice(0,2)&&(K[b]=K[b].call(P));K.rel=K.rel||P.rel||a(P).data("rel")||"nofollow",K.href=K.href||a(P).attr("href"),K.title=K.title||P.title,"string"==typeof K.href&&(K.href=a.trim(K.href))}function eb(b,c){a.event.trigger(b),c&&c.call(P)}function fb(){var a,d,e,b=f+"Slideshow_",c="click."+f;K.slideshow&&y[1]?(d=function(){F.text(K.slideshowStop).unbind(c).bind(j,function(){(K.loop||y[Q+1])&&(a=setTimeout(W.next,K.slideshowSpeed))}).bind(i,function(){clearTimeout(a)}).one(c+" "+k,e),r.removeClass(b+"off").addClass(b+"on"),a=setTimeout(W.next,K.slideshowSpeed)},e=function(){clearTimeout(a),F.text(K.slideshowStart).unbind([j,i,k,c].join(" ")).one(c,function(){W.next(),d()}),r.removeClass(b+"on").addClass(b+"off")},K.slideshowAuto?d():e()):r.removeClass(b+"off "+b+"on")}function gb(b){U||(P=b,db(),y=a(P),Q=0,"nofollow"!==K.rel&&(y=a("."+g).filter(function(){var c,b=a.data(this,e);return b&&(c=a(this).data("rel")||b.rel||this.rel),c===K.rel}),Q=y.index(P),-1===Q&&(y=y.add(P),Q=y.length-1)),S||(S=T=!0,r.show(),K.returnFocus&&a(P).blur().one(l,function(){a(this).focus()}),q.css({opacity:+K.opacity,cursor:K.overlayClose?"pointer":"auto"}).show(),K.w=_(K.initialWidth,"x"),K.h=_(K.initialHeight,"y"),W.position(),o&&z.bind("resize."+p+" scroll."+p,function(){q.css({width:bb(),height:cb(),top:z.scrollTop(),left:z.scrollLeft()})}).trigger("resize."+p),eb(h,K.onOpen),J.add(D).hide(),I.html(K.close).show()),W.load(!0))}function hb(){!r&&b.body&&(Y=!1,z=a(c),r=Z(X).attr({id:e,"class":n?f+(o?"IE6":"IE"):""}).hide(),q=Z(X,"Overlay",o?"position:absolute":"").hide(),C=Z(X,"LoadingOverlay").add(Z(X,"LoadingGraphic")),s=Z(X,"Wrapper"),t=Z(X,"Content").append(A=Z(X,"LoadedContent","width:0; height:0; overflow:hidden"),D=Z(X,"Title"),E=Z(X,"Current"),G=Z(X,"Next"),H=Z(X,"Previous"),F=Z(X,"Slideshow").bind(h,fb),I=Z(X,"Close")),s.append(Z(X).append(Z(X,"TopLeft"),u=Z(X,"TopCenter"),Z(X,"TopRight")),Z(X,!1,"clear:left").append(v=Z(X,"MiddleLeft"),t,w=Z(X,"MiddleRight")),Z(X,!1,"clear:left").append(Z(X,"BottomLeft"),x=Z(X,"BottomCenter"),Z(X,"BottomRight"))).find("div div").css({"float":"left"}),B=Z(X,!1,"position:absolute; width:9999px; visibility:hidden; display:none"),J=G.add(H).add(E).add(F),a(b.body).append(q,r.append(s,B)))}function ib(){return r?(Y||(Y=!0,L=u.height()+x.height()+t.outerHeight(!0)-t.height(),M=v.width()+w.width()+t.outerWidth(!0)-t.width(),N=A.outerHeight(!0),O=A.outerWidth(!0),r.css({"padding-bottom":L,"padding-right":M}),G.click(function(){W.next()}),H.click(function(){W.prev()}),I.click(function(){W.close()}),q.click(function(){K.overlayClose&&W.close()}),a(b).bind("keydown."+f,function(a){var b=a.keyCode;S&&K.escKey&&27===b&&(a.preventDefault(),W.close()),S&&K.arrowKey&&y[1]&&(37===b?(a.preventDefault(),H.click()):39===b&&(a.preventDefault(),G.click()))}),a("."+g,b).live("click",function(a){a.which>1||a.shiftKey||a.altKey||a.metaKey||(a.preventDefault(),gb(this))})),!0):!1}var 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,Y,d={transition:"elastic",speed:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,inline:!1,html:!1,iframe:!1,fastIframe:!0,photo:!1,href:!1,title:!1,rel:!1,opacity:.9,preloading:!0,current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",open:!1,returnFocus:!0,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0},e="colorbox",f="cbox",g=f+"Element",h=f+"_open",i=f+"_load",j=f+"_complete",k=f+"_cleanup",l=f+"_closed",m=f+"_purge",n=!a.support.opacity&&!a.support.style,o=n&&!c.XMLHttpRequest,p=f+"_IE6",X="div";a.colorbox||(a(hb),W=a.fn[e]=a[e]=function(b,c){var f=this;if(b=b||{},hb(),ib()){if(!f[0]){if(f.selector)return f;f=a("<a/>"),b.open=!0}c&&(b.onComplete=c),f.each(function(){a.data(this,e,a.extend({},a.data(this,e)||d,b))}).addClass(g),(a.isFunction(b.open)&&b.open.call(f)||b.open)&&gb(f[0])}return f},W.position=function(a,b){function j(a){u[0].style.width=x[0].style.width=t[0].style.width=a.style.width,t[0].style.height=v[0].style.height=w[0].style.height=a.style.height}var c,h,i,d=0,e=0,g=r.offset();z.unbind("resize."+f),r.css({top:-9e4,left:-9e4}),h=z.scrollTop(),i=z.scrollLeft(),K.fixed&&!o?(g.top-=h,g.left-=i,r.css({position:"fixed"})):(d=h,e=i,r.css({position:"absolute"})),e+=K.right!==!1?Math.max(bb()-K.w-O-M-_(K.right,"x"),0):K.left!==!1?_(K.left,"x"):Math.round(Math.max(bb()-K.w-O-M,0)/2),d+=K.bottom!==!1?Math.max(cb()-K.h-N-L-_(K.bottom,"y"),0):K.top!==!1?_(K.top,"y"):Math.round(Math.max(cb()-K.h-N-L,0)/2),r.css({top:g.top,left:g.left}),a=r.width()===K.w+O&&r.height()===K.h+N?0:a||0,s[0].style.width=s[0].style.height="9999px",c={width:K.w+O,height:K.h+N,top:d,left:e},0===a&&r.css(c),r.dequeue().animate(c,{duration:a,complete:function(){j(this),T=!1,s[0].style.width=K.w+O+M+"px",s[0].style.height=K.h+N+L+"px",K.reposition&&setTimeout(function(){z.bind("resize."+f,W.position)},1),b&&b()},step:function(){j(this)}})},W.resize=function(a){S&&(a=a||{},a.width&&(K.w=_(a.width,"x")-O-M),a.innerWidth&&(K.w=_(a.innerWidth,"x")),A.css({width:K.w}),a.height&&(K.h=_(a.height,"y")-N-L),a.innerHeight&&(K.h=_(a.innerHeight,"y")),a.innerHeight||a.height||(A.css({height:"auto"}),K.h=A.height()),A.css({height:K.h}),W.position("none"===K.transition?0:K.speed))},W.prep=function(b){function g(){return K.w=K.w||A.width(),K.w=K.mw&&K.mw<K.w?K.mw:K.w,K.w}function h(){return K.h=K.h||A.height(),K.h=K.mh&&K.mh<K.h?K.mh:K.h,K.h}if(S){var c,d="none"===K.transition?0:K.speed;A.remove(),A=Z(X,"LoadedContent").append(b),A.hide().appendTo(B.show()).css({width:g(),overflow:K.scrolling?"auto":"hidden"}).css({height:h()}).prependTo(t),B.hide(),a(R).css({"float":"none"}),o&&a("select").not(r.find("select")).filter(function(){return"hidden"!==this.style.visibility}).css({visibility:"hidden"}).one(k,function(){this.style.visibility="inherit"}),c=function(){function s(){n&&r[0].style.removeAttribute("filter")}var b,c,h,l,o,p,q,g=y.length,i="frameBorder",k="allowTransparency";if(S){if(l=function(){clearTimeout(V),C.detach().hide(),eb(j,K.onComplete)},n&&R&&A.fadeIn(100),D.html(K.title).add(A).show(),g>1){if("string"==typeof K.current&&E.html(K.current.replace("{current}",Q+1).replace("{total}",g)).show(),G[K.loop||g-1>Q?"show":"hide"]().html(K.next),H[K.loop||Q?"show":"hide"]().html(K.previous),K.slideshow&&F.show(),K.preloading)for(b=[$(-1),$(1)];c=y[b.pop()];)q=a.data(c,e),q&&q.href?(o=q.href,a.isFunction(o)&&(o=o.call(c))):o=c.href,ab(o)&&(p=new Image,p.src=o)}else J.hide();K.iframe?(h=Z("iframe")[0],i in h&&(h[i]=0),k in h&&(h[k]="true"),h.name=f+ +new Date,K.fastIframe?l():a(h).one("load",l),h.src=K.href,K.scrolling||(h.scrolling="no"),a(h).addClass(f+"Iframe").appendTo(A).one(m,function(){h.src="//about:blank"})):l(),"fade"===K.transition?r.fadeTo(d,1,s):s()}},"fade"===K.transition?r.fadeTo(d,0,function(){W.position(0,c)}):W.position(d,c)}},W.load=function(b){var c,d,e=W.prep;T=!0,R=!1,P=y[Q],b||db(),eb(m),eb(i,K.onLoad),K.h=K.height?_(K.height,"y")-N-L:K.innerHeight&&_(K.innerHeight,"y"),K.w=K.width?_(K.width,"x")-O-M:K.innerWidth&&_(K.innerWidth,"x"),K.mw=K.w,K.mh=K.h,K.maxWidth&&(K.mw=_(K.maxWidth,"x")-O-M,K.mw=K.w&&K.w<K.mw?K.w:K.mw),K.maxHeight&&(K.mh=_(K.maxHeight,"y")-N-L,K.mh=K.h&&K.h<K.mh?K.h:K.mh),c=K.href,V=setTimeout(function(){C.show().appendTo(t)},100),K.inline?(Z(X).hide().insertBefore(a(c)[0]).one(m,function(){a(this).replaceWith(A.children())}),e(a(c))):K.iframe?e(" "):K.html?e(K.html):ab(c)?(a(R=new Image).addClass(f+"Photo").error(function(){K.title=!1,e(Z(X,"Error").html(K.imgError))}).load(function(){var a;R.onload=null,K.scalePhotos&&(d=function(){R.height-=R.height*a,R.width-=R.width*a},K.mw&&R.width>K.mw&&(a=(R.width-K.mw)/R.width,d()),K.mh&&R.height>K.mh&&(a=(R.height-K.mh)/R.height,d())),K.h&&(R.style.marginTop=Math.max(K.h-R.height,0)/2+"px"),y[1]&&(K.loop||y[Q+1])&&(R.style.cursor="pointer",R.onclick=function(){W.next()}),n&&(R.style.msInterpolationMode="bicubic"),setTimeout(function(){e(R)},1)}),setTimeout(function(){R.src=c},1)):c&&B.load(c,K.data,function(b,c){e("error"===c?Z(X,"Error").html(K.xhrError):a(this).contents())})},W.next=function(){!T&&y[1]&&(K.loop||y[Q+1])&&(Q=$(1),W.load())},W.prev=function(){!T&&y[1]&&(K.loop||Q)&&(Q=$(-1),W.load())},W.close=function(){S&&!U&&(U=!0,S=!1,eb(k,K.onCleanup),z.unbind("."+f+" ."+p),q.fadeTo(200,0),r.stop().fadeTo(300,0,function(){r.add(q).css({opacity:1,cursor:"auto"}).hide(),eb(m),A.remove(),setTimeout(function(){U=!1,eb(l,K.onClosed)},1)}))},W.remove=function(){a([]).add(r).add(q).remove(),r=null,a("."+g).removeData(e).removeClass(g).die()},W.element=function(){return a(P)},W.settings=d)})(jQuery,document,this);</script>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   196
<!-- END extlib/js/jquery.colorbox.min.js -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   197
<!-- START dist/MDwiki.js -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   198
<script type="text/javascript">;(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   199
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   200
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   201
 * Block-Level Grammar
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   202
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   203
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   204
var block = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   205
  newline: /^\n+/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   206
  code: /^( {4}[^\n]+\n*)+/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   207
  fences: noop,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   208
  hr: /^( *[-*_]){3,} *(?:\n+|$)/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   209
  heading: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   210
  nptable: noop,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   211
  lheading: /^([^\n]+)\n *(=|-){3,} *\n*/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   212
  blockquote: /^( *>[^\n]+(\n[^\n]+)*\n*)+/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   213
  list: /^( *)(bull) [\s\S]+?(?:hr|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   214
  html: /^ *(?:comment|closed|closing) *(?:\n{2,}|\s*$)/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   215
  def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   216
  table: noop,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   217
  paragraph: /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   218
  text: /^[^\n]+/
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   219
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   220
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   221
block.bullet = /(?:[*+-]|\d+\.)/;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   222
block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   223
block.item = replace(block.item, 'gm')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   224
  (/bull/g, block.bullet)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   225
  ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   226
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   227
block.list = replace(block.list)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   228
  (/bull/g, block.bullet)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   229
  ('hr', /\n+(?=(?: *[-*_]){3,} *(?:\n+|$))/)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   230
  ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   231
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   232
block._tag = '(?!(?:'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   233
  + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   234
  + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   235
  + '|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|@)\\b';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   236
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   237
block.html = replace(block.html)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   238
  ('comment', /<!--[\s\S]*?-->/)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   239
  ('closed', /<(tag)[\s\S]+?<\/\1>/)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   240
  ('closing', /<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   241
  (/tag/g, block._tag)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   242
  ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   243
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   244
block.paragraph = replace(block.paragraph)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   245
  ('hr', block.hr)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   246
  ('heading', block.heading)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   247
  ('lheading', block.lheading)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   248
  ('blockquote', block.blockquote)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   249
  ('tag', '<' + block._tag)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   250
  ('def', block.def)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   251
  ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   252
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   253
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   254
 * Normal Block Grammar
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   255
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   256
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   257
block.normal = merge({}, block);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   258
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   259
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   260
 * GFM Block Grammar
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   261
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   262
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   263
block.gfm = merge({}, block.normal, {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   264
  fences: /^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   265
  paragraph: /^/
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   266
});
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   267
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   268
block.gfm.paragraph = replace(block.paragraph)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   269
  ('(?!', '(?!' + block.gfm.fences.source.replace('\\1', '\\2') + '|')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   270
  ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   271
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   272
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   273
 * GFM + Tables Block Grammar
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   274
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   275
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   276
block.tables = merge({}, block.gfm, {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   277
  nptable: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   278
  table: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   279
});
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   280
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   281
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   282
 * Block Lexer
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   283
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   284
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   285
function Lexer(options) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   286
  this.tokens = [];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   287
  this.tokens.links = {};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   288
  this.options = options || marked.defaults;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   289
  this.rules = block.normal;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   290
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   291
  if (this.options.gfm) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   292
    if (this.options.tables) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   293
      this.rules = block.tables;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   294
    } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   295
      this.rules = block.gfm;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   296
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   297
  }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   298
}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   299
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   300
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   301
 * Expose Block Rules
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   302
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   303
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   304
Lexer.rules = block;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   305
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   306
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   307
 * Static Lex Method
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   308
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   309
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   310
Lexer.lex = function(src, options) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   311
  var lexer = new Lexer(options);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   312
  return lexer.lex(src);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   313
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   314
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   315
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   316
 * Preprocessing
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   317
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   318
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   319
Lexer.prototype.lex = function(src) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   320
  src = src
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   321
    .replace(/\r\n|\r/g, '\n')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   322
    .replace(/\t/g, '    ')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   323
    .replace(/\u00a0/g, ' ')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   324
    .replace(/\u2424/g, '\n');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   325
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   326
  return this.token(src, true);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   327
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   328
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   329
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   330
 * Lexing
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   331
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   332
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   333
Lexer.prototype.token = function(src, top) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   334
  var src = src.replace(/^ +$/gm, '')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   335
    , next
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   336
    , loose
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   337
    , cap
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   338
    , bull
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   339
    , b
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   340
    , item
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   341
    , space
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   342
    , i
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   343
    , l;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   344
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   345
  while (src) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   346
    // newline
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   347
    if (cap = this.rules.newline.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   348
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   349
      if (cap[0].length > 1) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   350
        this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   351
          type: 'space'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   352
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   353
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   354
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   355
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   356
    // code
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   357
    if (cap = this.rules.code.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   358
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   359
      cap = cap[0].replace(/^ {4}/gm, '');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   360
      this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   361
        type: 'code',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   362
        text: !this.options.pedantic
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   363
          ? cap.replace(/\n+$/, '')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   364
          : cap
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   365
      });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   366
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   367
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   368
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   369
    // fences (gfm)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   370
    if (cap = this.rules.fences.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   371
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   372
      this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   373
        type: 'code',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   374
        lang: cap[2],
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   375
        text: cap[3]
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   376
      });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   377
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   378
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   379
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   380
    // heading
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   381
    if (cap = this.rules.heading.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   382
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   383
      this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   384
        type: 'heading',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   385
        depth: cap[1].length,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   386
        text: cap[2]
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   387
      });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   388
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   389
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   390
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   391
    // table no leading pipe (gfm)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   392
    if (top && (cap = this.rules.nptable.exec(src))) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   393
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   394
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   395
      item = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   396
        type: 'table',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   397
        header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   398
        align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   399
        cells: cap[3].replace(/\n$/, '').split('\n')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   400
      };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   401
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   402
      for (i = 0; i < item.align.length; i++) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   403
        if (/^ *-+: *$/.test(item.align[i])) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   404
          item.align[i] = 'right';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   405
        } else if (/^ *:-+: *$/.test(item.align[i])) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   406
          item.align[i] = 'center';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   407
        } else if (/^ *:-+ *$/.test(item.align[i])) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   408
          item.align[i] = 'left';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   409
        } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   410
          item.align[i] = null;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   411
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   412
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   413
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   414
      for (i = 0; i < item.cells.length; i++) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   415
        item.cells[i] = item.cells[i].split(/ *\| */);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   416
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   417
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   418
      this.tokens.push(item);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   419
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   420
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   421
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   422
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   423
    // lheading
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   424
    if (cap = this.rules.lheading.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   425
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   426
      this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   427
        type: 'heading',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   428
        depth: cap[2] === '=' ? 1 : 2,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   429
        text: cap[1]
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   430
      });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   431
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   432
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   433
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   434
    // hr
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   435
    if (cap = this.rules.hr.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   436
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   437
      this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   438
        type: 'hr'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   439
      });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   440
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   441
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   442
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   443
    // blockquote
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   444
    if (cap = this.rules.blockquote.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   445
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   446
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   447
      this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   448
        type: 'blockquote_start'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   449
      });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   450
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   451
      cap = cap[0].replace(/^ *> ?/gm, '');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   452
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   453
      // Pass `top` to keep the current
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   454
      // "toplevel" state. This is exactly
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   455
      // how markdown.pl works.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   456
      this.token(cap, top);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   457
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   458
      this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   459
        type: 'blockquote_end'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   460
      });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   461
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   462
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   463
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   464
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   465
    // list
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   466
    if (cap = this.rules.list.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   467
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   468
      bull = cap[2];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   469
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   470
      this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   471
        type: 'list_start',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   472
        ordered: bull.length > 1
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   473
      });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   474
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   475
      // Get each top-level item.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   476
      cap = cap[0].match(this.rules.item);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   477
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   478
      next = false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   479
      l = cap.length;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   480
      i = 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   481
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   482
      for (; i < l; i++) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   483
        item = cap[i];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   484
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   485
        // Remove the list item's bullet
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   486
        // so it is seen as the next token.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   487
        space = item.length;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   488
        item = item.replace(/^ *([*+-]|\d+\.) +/, '');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   489
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   490
        // Outdent whatever the
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   491
        // list item contains. Hacky.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   492
        if (~item.indexOf('\n ')) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   493
          space -= item.length;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   494
          item = !this.options.pedantic
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   495
            ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   496
            : item.replace(/^ {1,4}/gm, '');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   497
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   498
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   499
        // Determine whether the next list item belongs here.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   500
        // Backpedal if it does not belong in this list.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   501
        if (this.options.smartLists && i !== l - 1) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   502
          b = block.bullet.exec(cap[i+1])[0];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   503
          if (bull !== b && !(bull.length > 1 && b.length > 1)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   504
            src = cap.slice(i + 1).join('\n') + src;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   505
            i = l - 1;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   506
          }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   507
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   508
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   509
        // Determine whether item is loose or not.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   510
        // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   511
        // for discount behavior.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   512
        loose = next || /\n\n(?!\s*$)/.test(item);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   513
        if (i !== l - 1) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   514
          next = item[item.length-1] === '\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   515
          if (!loose) loose = next;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   516
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   517
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   518
        this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   519
          type: loose
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   520
            ? 'loose_item_start'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   521
            : 'list_item_start'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   522
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   523
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   524
        // Recurse.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   525
        this.token(item, false);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   526
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   527
        this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   528
          type: 'list_item_end'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   529
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   530
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   531
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   532
      this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   533
        type: 'list_end'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   534
      });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   535
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   536
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   537
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   538
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   539
    // html
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   540
    if (cap = this.rules.html.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   541
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   542
      this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   543
        type: this.options.sanitize
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   544
          ? 'paragraph'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   545
          : 'html',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   546
        pre: cap[1] === 'pre' || cap[1] === 'script',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   547
        text: cap[0]
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   548
      });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   549
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   550
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   551
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   552
    // def
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   553
    if (top && (cap = this.rules.def.exec(src))) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   554
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   555
      this.tokens.links[cap[1].toLowerCase()] = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   556
        href: cap[2],
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   557
        title: cap[3]
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   558
      };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   559
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   560
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   561
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   562
    // table (gfm)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   563
    if (top && (cap = this.rules.table.exec(src))) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   564
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   565
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   566
      item = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   567
        type: 'table',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   568
        header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   569
        align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   570
        cells: cap[3].replace(/(?: *\| *)?\n$/, '').split('\n')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   571
      };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   572
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   573
      for (i = 0; i < item.align.length; i++) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   574
        if (/^ *-+: *$/.test(item.align[i])) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   575
          item.align[i] = 'right';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   576
        } else if (/^ *:-+: *$/.test(item.align[i])) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   577
          item.align[i] = 'center';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   578
        } else if (/^ *:-+ *$/.test(item.align[i])) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   579
          item.align[i] = 'left';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   580
        } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   581
          item.align[i] = null;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   582
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   583
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   584
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   585
      for (i = 0; i < item.cells.length; i++) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   586
        item.cells[i] = item.cells[i]
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   587
          .replace(/^ *\| *| *\| *$/g, '')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   588
          .split(/ *\| */);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   589
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   590
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   591
      this.tokens.push(item);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   592
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   593
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   594
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   595
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   596
    // top-level paragraph
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   597
    if (top && (cap = this.rules.paragraph.exec(src))) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   598
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   599
      this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   600
        type: 'paragraph',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   601
        text: cap[1][cap[1].length-1] === '\n'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   602
          ? cap[1].slice(0, -1)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   603
          : cap[1]
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   604
      });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   605
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   606
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   607
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   608
    // text
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   609
    if (cap = this.rules.text.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   610
      // Top-level should never reach here.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   611
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   612
      this.tokens.push({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   613
        type: 'text',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   614
        text: cap[0]
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   615
      });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   616
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   617
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   618
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   619
    if (src) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   620
      throw new
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   621
        Error('Infinite loop on byte: ' + src.charCodeAt(0));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   622
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   623
  }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   624
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   625
  return this.tokens;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   626
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   627
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   628
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   629
 * Inline-Level Grammar
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   630
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   631
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   632
var inline = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   633
  escape: /^\\([\\`*{}\[\]()#+\-.!_>])/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   634
  autolink: /^<([^ >]+(@|:\/)[^ >]+)>/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   635
  url: noop,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   636
  tag: /^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   637
  link: /^!?\[(inside)\]\(href\)/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   638
  reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   639
  nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   640
  strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   641
  em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   642
  code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   643
  br: /^ {2,}\n(?!\s*$)/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   644
  del: noop,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   645
  text: /^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   646
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   647
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   648
inline._inside = /(?:\[[^\]]*\]|[^\]]|\](?=[^\[]*\]))*/;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   649
inline._href = /\s*<?(.*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   650
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   651
inline.link = replace(inline.link)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   652
  ('inside', inline._inside)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   653
  ('href', inline._href)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   654
  ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   655
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   656
inline.reflink = replace(inline.reflink)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   657
  ('inside', inline._inside)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   658
  ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   659
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   660
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   661
 * Normal Inline Grammar
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   662
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   663
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   664
inline.normal = merge({}, inline);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   665
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   666
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   667
 * Pedantic Inline Grammar
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   668
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   669
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   670
inline.pedantic = merge({}, inline.normal, {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   671
  strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   672
  em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   673
});
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   674
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   675
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   676
 * GFM Inline Grammar
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   677
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   678
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   679
inline.gfm = merge({}, inline.normal, {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   680
  escape: replace(inline.escape)('])', '~|])')(),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   681
  url: /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   682
  del: /^~~(?=\S)([\s\S]*?\S)~~/,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   683
  text: replace(inline.text)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   684
    (']|', '~]|')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   685
    ('|', '|https?://|')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   686
    ()
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   687
});
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   688
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   689
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   690
 * GFM + Line Breaks Inline Grammar
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   691
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   692
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   693
inline.breaks = merge({}, inline.gfm, {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   694
  br: replace(inline.br)('{2,}', '*')(),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   695
  text: replace(inline.gfm.text)('{2,}', '*')()
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   696
});
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   697
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   698
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   699
 * Inline Lexer & Compiler
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   700
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   701
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   702
function InlineLexer(links, options) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   703
  this.options = options || marked.defaults;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   704
  this.links = links;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   705
  this.rules = inline.normal;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   706
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   707
  if (!this.links) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   708
    throw new
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   709
      Error('Tokens array requires a `links` property.');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   710
  }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   711
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   712
  if (this.options.gfm) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   713
    if (this.options.breaks) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   714
      this.rules = inline.breaks;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   715
    } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   716
      this.rules = inline.gfm;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   717
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   718
  } else if (this.options.pedantic) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   719
    this.rules = inline.pedantic;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   720
  }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   721
}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   722
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   723
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   724
 * Expose Inline Rules
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   725
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   726
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   727
InlineLexer.rules = inline;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   728
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   729
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   730
 * Static Lexing/Compiling Method
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   731
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   732
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   733
InlineLexer.output = function(src, links, options) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   734
  var inline = new InlineLexer(links, options);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   735
  return inline.output(src);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   736
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   737
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   738
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   739
 * Lexing/Compiling
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   740
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   741
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   742
InlineLexer.prototype.output = function(src) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   743
  var out = ''
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   744
    , link
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   745
    , text
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   746
    , href
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   747
    , cap;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   748
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   749
  while (src) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   750
    // escape
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   751
    if (cap = this.rules.escape.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   752
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   753
      out += cap[1];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   754
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   755
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   756
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   757
    // autolink
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   758
    if (cap = this.rules.autolink.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   759
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   760
      if (cap[2] === '@') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   761
        text = cap[1][6] === ':'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   762
          ? this.mangle(cap[1].substring(7))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   763
          : this.mangle(cap[1]);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   764
        href = this.mangle('mailto:') + text;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   765
      } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   766
        text = escape(cap[1]);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   767
        href = text;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   768
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   769
      out += '<a href="'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   770
        + href
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   771
        + '">'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   772
        + text
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   773
        + '</a>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   774
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   775
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   776
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   777
    // url (gfm)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   778
    if (cap = this.rules.url.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   779
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   780
      text = escape(cap[1]);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   781
      href = text;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   782
      out += '<a href="'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   783
        + href
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   784
        + '">'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   785
        + text
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   786
        + '</a>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   787
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   788
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   789
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   790
    // tag
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   791
    if (cap = this.rules.tag.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   792
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   793
      out += this.options.sanitize
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   794
        ? escape(cap[0])
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   795
        : cap[0];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   796
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   797
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   798
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   799
    // link
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   800
    if (cap = this.rules.link.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   801
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   802
      out += this.outputLink(cap, {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   803
        href: cap[2],
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   804
        title: cap[3]
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   805
      });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   806
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   807
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   808
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   809
    // reflink, nolink
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   810
    if ((cap = this.rules.reflink.exec(src))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   811
        || (cap = this.rules.nolink.exec(src))) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   812
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   813
      link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   814
      link = this.links[link.toLowerCase()];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   815
      if (!link || !link.href) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   816
        out += cap[0][0];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   817
        src = cap[0].substring(1) + src;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   818
        continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   819
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   820
      out += this.outputLink(cap, link);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   821
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   822
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   823
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   824
    // strong
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   825
    if (cap = this.rules.strong.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   826
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   827
      out += '<strong>'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   828
        + this.output(cap[2] || cap[1])
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   829
        + '</strong>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   830
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   831
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   832
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   833
    // em
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   834
    if (cap = this.rules.em.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   835
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   836
      out += '<em>'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   837
        + this.output(cap[2] || cap[1])
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   838
        + '</em>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   839
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   840
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   841
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   842
    // code
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   843
    if (cap = this.rules.code.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   844
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   845
      out += '<code>'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   846
        + escape(cap[2], true)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   847
        + '</code>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   848
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   849
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   850
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   851
    // br
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   852
    if (cap = this.rules.br.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   853
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   854
      out += '<br>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   855
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   856
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   857
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   858
    // del (gfm)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   859
    if (cap = this.rules.del.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   860
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   861
      out += '<del>'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   862
        + this.output(cap[1])
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   863
        + '</del>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   864
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   865
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   866
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   867
    // text
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   868
    if (cap = this.rules.text.exec(src)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   869
      src = src.substring(cap[0].length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   870
      out += escape(cap[0]);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   871
      continue;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   872
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   873
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   874
    if (src) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   875
      throw new
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   876
        Error('Infinite loop on byte: ' + src.charCodeAt(0));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   877
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   878
  }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   879
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   880
  return out;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   881
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   882
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   883
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   884
 * Compile Link
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   885
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   886
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   887
InlineLexer.prototype.outputLink = function(cap, link) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   888
  if (cap[0][0] !== '!') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   889
    return '<a href="'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   890
      + escape(link.href)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   891
      + '"'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   892
      + (link.title
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   893
      ? ' title="'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   894
      + escape(link.title)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   895
      + '"'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   896
      : '')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   897
      + '>'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   898
      + this.output(cap[1])
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   899
      + '</a>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   900
  } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   901
    return '<img src="'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   902
      + escape(link.href)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   903
      + '" alt="'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   904
      + escape(cap[1])
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   905
      + '"'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   906
      + (link.title
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   907
      ? ' title="'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   908
      + escape(link.title)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   909
      + '"'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   910
      : '')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   911
      + '>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   912
  }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   913
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   914
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   915
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   916
 * Smartypants Transformations
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   917
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   918
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   919
InlineLexer.prototype.smartypants = function(text) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   920
  if (!this.options.smartypants) return text;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   921
  return text
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   922
    .replace(/--/g, '—')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   923
    .replace(/'([^']*)'/g, '‘$1’')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   924
    .replace(/"([^"]*)"/g, '“$1”')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   925
    .replace(/\.{3}/g, '…');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   926
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   927
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   928
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   929
 * Mangle Links
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   930
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   931
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   932
InlineLexer.prototype.mangle = function(text) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   933
  var out = ''
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   934
    , l = text.length
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   935
    , i = 0
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   936
    , ch;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   937
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   938
  for (; i < l; i++) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   939
    ch = text.charCodeAt(i);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   940
    if (Math.random() > 0.5) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   941
      ch = 'x' + ch.toString(16);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   942
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   943
    out += '&#' + ch + ';';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   944
  }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   945
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   946
  return out;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   947
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   948
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   949
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   950
 * Parsing & Compiling
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   951
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   952
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   953
function Parser(options) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   954
  this.tokens = [];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   955
  this.token = null;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   956
  this.options = options || marked.defaults;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   957
}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   958
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   959
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   960
 * Static Parse Method
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   961
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   962
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   963
Parser.parse = function(src, options) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   964
  var parser = new Parser(options);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   965
  return parser.parse(src);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   966
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   967
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   968
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   969
 * Parse Loop
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   970
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   971
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   972
Parser.prototype.parse = function(src) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   973
  this.inline = new InlineLexer(src.links, this.options);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   974
  this.tokens = src.reverse();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   975
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   976
  var out = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   977
  while (this.next()) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   978
    out += this.tok();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   979
  }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   980
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   981
  return out;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   982
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   983
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   984
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   985
 * Next Token
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   986
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   987
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   988
Parser.prototype.next = function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   989
  return this.token = this.tokens.pop();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   990
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   991
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   992
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   993
 * Preview Next Token
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   994
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   995
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   996
Parser.prototype.peek = function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   997
  return this.tokens[this.tokens.length-1] || 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   998
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
   999
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1000
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1001
 * Parse Text Tokens
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1002
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1003
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1004
Parser.prototype.parseText = function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1005
  var body = this.token.text;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1006
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1007
  while (this.peek().type === 'text') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1008
    body += '\n' + this.next().text;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1009
  }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1010
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1011
  return this.inline.output(body);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1012
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1013
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1014
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1015
 * Parse Current Token
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1016
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1017
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1018
Parser.prototype.tok = function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1019
  switch (this.token.type) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1020
    case 'space': {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1021
      return '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1022
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1023
    case 'hr': {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1024
      return '<hr>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1025
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1026
    case 'heading': {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1027
      return '<h'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1028
        + this.token.depth
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1029
        + '>'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1030
        + this.inline.output(this.token.text)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1031
        + '</h'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1032
        + this.token.depth
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1033
        + '>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1034
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1035
    case 'code': {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1036
      if (this.options.highlight) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1037
        var code = this.options.highlight(this.token.text, this.token.lang);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1038
        if (code != null && code !== this.token.text) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1039
          this.token.escaped = true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1040
          this.token.text = code;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1041
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1042
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1043
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1044
      if (!this.token.escaped) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1045
        this.token.text = escape(this.token.text, true);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1046
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1047
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1048
      return '<pre><code'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1049
        + (this.token.lang
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1050
        ? ' class="'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1051
        + this.options.langPrefix
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1052
        + this.token.lang
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1053
        + '"'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1054
        : '')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1055
        + '>'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1056
        + this.token.text
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1057
        + '</code></pre>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1058
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1059
    case 'table': {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1060
      var body = ''
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1061
        , heading
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1062
        , i
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1063
        , row
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1064
        , cell
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1065
        , j;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1066
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1067
      // header
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1068
      body += '<thead>\n<tr>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1069
      for (i = 0; i < this.token.header.length; i++) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1070
        heading = this.inline.output(this.token.header[i]);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1071
        body += this.token.align[i]
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1072
          ? '<th align="' + this.token.align[i] + '">' + heading + '</th>\n'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1073
          : '<th>' + heading + '</th>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1074
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1075
      body += '</tr>\n</thead>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1076
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1077
      // body
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1078
      body += '<tbody>\n'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1079
      for (i = 0; i < this.token.cells.length; i++) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1080
        row = this.token.cells[i];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1081
        body += '<tr>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1082
        for (j = 0; j < row.length; j++) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1083
          cell = this.inline.output(row[j]);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1084
          body += this.token.align[j]
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1085
            ? '<td align="' + this.token.align[j] + '">' + cell + '</td>\n'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1086
            : '<td>' + cell + '</td>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1087
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1088
        body += '</tr>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1089
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1090
      body += '</tbody>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1091
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1092
      return '<table>\n'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1093
        + body
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1094
        + '</table>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1095
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1096
    case 'blockquote_start': {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1097
      var body = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1098
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1099
      while (this.next().type !== 'blockquote_end') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1100
        body += this.tok();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1101
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1102
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1103
      return '<blockquote>\n'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1104
        + body
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1105
        + '</blockquote>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1106
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1107
    case 'list_start': {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1108
      var type = this.token.ordered ? 'ol' : 'ul'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1109
        , body = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1110
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1111
      while (this.next().type !== 'list_end') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1112
        body += this.tok();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1113
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1114
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1115
      return '<'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1116
        + type
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1117
        + '>\n'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1118
        + body
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1119
        + '</'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1120
        + type
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1121
        + '>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1122
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1123
    case 'list_item_start': {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1124
      var body = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1125
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1126
      while (this.next().type !== 'list_item_end') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1127
        body += this.token.type === 'text'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1128
          ? this.parseText()
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1129
          : this.tok();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1130
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1131
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1132
      return '<li>'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1133
        + body
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1134
        + '</li>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1135
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1136
    case 'loose_item_start': {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1137
      var body = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1138
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1139
      while (this.next().type !== 'list_item_end') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1140
        body += this.tok();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1141
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1142
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1143
      return '<li>'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1144
        + body
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1145
        + '</li>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1146
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1147
    case 'html': {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1148
      return !this.token.pre && !this.options.pedantic
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1149
        ? this.inline.output(this.token.text)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1150
        : this.token.text;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1151
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1152
    case 'paragraph': {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1153
      return '<p>'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1154
        + this.inline.output(this.token.text)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1155
        + '</p>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1156
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1157
    case 'text': {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1158
      return '<p>'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1159
        + this.parseText()
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1160
        + '</p>\n';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1161
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1162
  }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1163
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1164
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1165
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1166
 * Helpers
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1167
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1168
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1169
function escape(html, encode) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1170
  return html
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1171
    .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&amp;')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1172
    .replace(/</g, '&lt;')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1173
    .replace(/>/g, '&gt;')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1174
    .replace(/"/g, '&quot;')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1175
    .replace(/'/g, '&#39;');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1176
}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1177
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1178
function replace(regex, opt) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1179
  regex = regex.source;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1180
  opt = opt || '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1181
  return function self(name, val) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1182
    if (!name) return new RegExp(regex, opt);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1183
    val = val.source || val;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1184
    val = val.replace(/(^|[^\[])\^/g, '$1');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1185
    regex = regex.replace(name, val);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1186
    return self;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1187
  };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1188
}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1189
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1190
function noop() {}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1191
noop.exec = noop;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1192
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1193
function merge(obj) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1194
  var i = 1
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1195
    , target
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1196
    , key;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1197
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1198
  for (; i < arguments.length; i++) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1199
    target = arguments[i];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1200
    for (key in target) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1201
      if (Object.prototype.hasOwnProperty.call(target, key)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1202
        obj[key] = target[key];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1203
      }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1204
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1205
  }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1206
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1207
  return obj;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1208
}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1209
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1210
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1211
 * Marked
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1212
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1213
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1214
function marked(src, opt, callback) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1215
  if (callback || typeof opt === 'function') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1216
    if (!callback) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1217
      callback = opt;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1218
      opt = null;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1219
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1220
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1221
    if (opt) opt = merge({}, marked.defaults, opt);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1222
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1223
    var tokens = Lexer.lex(tokens, opt)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1224
      , highlight = opt.highlight
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1225
      , pending = 0
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1226
      , l = tokens.length
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1227
      , i = 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1228
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1229
    if (!highlight || highlight.length < 3) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1230
      return callback(null, Parser.parse(tokens, opt));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1231
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1232
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1233
    var done = function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1234
      delete opt.highlight;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1235
      var out = Parser.parse(tokens, opt);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1236
      opt.highlight = highlight;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1237
      return callback(null, out);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1238
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1239
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1240
    for (; i < l; i++) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1241
      (function(token) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1242
        if (token.type !== 'code') return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1243
        pending++;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1244
        return highlight(token.text, token.lang, function(err, code) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1245
          if (code == null || code === token.text) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1246
            return --pending || done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1247
          }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1248
          token.text = code;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1249
          token.escaped = true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1250
          --pending || done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1251
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1252
      })(tokens[i]);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1253
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1254
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1255
    return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1256
  }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1257
  try {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1258
    if (opt) opt = merge({}, marked.defaults, opt);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1259
    return Parser.parse(Lexer.lex(src, opt), opt);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1260
  } catch (e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1261
    e.message += '\nPlease report this to https://github.com/chjj/marked.';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1262
    if ((opt || marked.defaults).silent) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1263
      return '<p>An error occured:</p><pre>'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1264
        + escape(e.message + '', true)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1265
        + '</pre>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1266
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1267
    throw e;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1268
  }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1269
}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1270
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1271
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1272
 * Options
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1273
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1274
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1275
marked.options =
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1276
marked.setOptions = function(opt) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1277
  merge(marked.defaults, opt);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1278
  return marked;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1279
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1280
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1281
marked.defaults = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1282
  gfm: true,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1283
  tables: true,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1284
  breaks: false,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1285
  pedantic: false,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1286
  sanitize: false,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1287
  smartLists: false,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1288
  silent: false,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1289
  highlight: null,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1290
  langPrefix: 'lang-'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1291
};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1292
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1293
/**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1294
 * Expose
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1295
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1296
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1297
marked.Parser = Parser;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1298
marked.parser = Parser.parse;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1299
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1300
marked.Lexer = Lexer;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1301
marked.lexer = Lexer.lex;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1302
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1303
marked.InlineLexer = InlineLexer;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1304
marked.inlineLexer = InlineLexer.output;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1305
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1306
marked.parse = marked;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1307
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1308
if (typeof exports === 'object') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1309
  module.exports = marked;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1310
} else if (typeof define === 'function' && define.amd) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1311
  define(function() { return marked; });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1312
} else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1313
  this.marked = marked;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1314
}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1315
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1316
}).call(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1317
  return this || (typeof window !== 'undefined' ? window : global);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1318
}());
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1319
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1320
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1321
    'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1322
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1323
    // hide the whole page so we dont see the DOM flickering
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1324
    // will be shown upon page load complete or error
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1325
    $('html').addClass('md-hidden-load');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1326
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1327
    // register our $.md object
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1328
    $.md = function (method){
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1329
        if ($.md.publicMethods[method]) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1330
            return $.md.publicMethods[method].apply(this,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1331
                Array.prototype.slice.call(arguments, 1)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1332
            );
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1333
        } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1334
            $.error('Method ' + method + ' does not exist on jquery.md');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1335
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1336
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1337
    // default config
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1338
    $.md.config = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1339
        title:  null,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1340
        useSideMenu: true,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1341
        lineBreaks: 'gfm',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1342
        additionalFooterText: '',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1343
        anchorCharacter: '&para;',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1344
        tocAnchor: '[ &uarr; ]'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1345
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1346
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1347
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1348
    $.md.gimmicks = [];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1349
    $.md.stages = [];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1350
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1351
    // the location of the main markdown file we display
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1352
    $.md.mainHref = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1353
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1354
    // the in-page anchor that is specified after the !
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1355
    $.md.inPageAnchor = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1356
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1357
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1358
    $.md.loglevel = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1359
        TRACE: 10,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1360
        DEBUG: 20,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1361
        INFO: 30,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1362
        WARN: 40,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1363
        ERROR: 50,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1364
        FATAL: 60
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1365
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1366
    // $.md.logThreshold = $.md.loglevel.DEBUG;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1367
    $.md.logThreshold = $.md.loglevel.WARN;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1368
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1369
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1370
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1371
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1372
    'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1373
    $.md.getLogger = function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1374
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1375
        var loglevel = $.md.loglevel;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1376
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1377
        var log = function(logtarget) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1378
            var self = this;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1379
            var level = loglevel[logtarget];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1380
            return function(msg) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1381
                if ($.md.logThreshold <= level) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1382
                    console.log('[' + logtarget + '] ' + msg);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1383
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1384
            };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1385
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1386
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1387
        var logger = {};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1388
        logger.trace = log('TRACE');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1389
        logger.debug = log('DEBUG');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1390
        logger.info = log('INFO');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1391
        logger.warn = log('WARN');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1392
        logger.error = log('ERROR');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1393
        logger.fatal = log('FATAL');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1394
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1395
        return logger;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1396
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1397
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1398
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1399
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1400
    'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1401
    var log = $.md.getLogger();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1402
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1403
    $.Stage = function(name) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1404
        var self = $.extend($.Deferred(), {});
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1405
        self.name = name;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1406
        self.events = [];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1407
        self.started = false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1408
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1409
        self.reset = function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1410
            self.complete = $.Deferred();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1411
            self.outstanding = [];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1412
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1413
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1414
        self.reset();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1415
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1416
        self.subscribe = function(fn) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1417
            if (self.started) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1418
                $.error('Subscribing to stage which already started!');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1419
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1420
            self.events.push(fn);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1421
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1422
        self.unsubscribe = function(fn) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1423
            self.events.remove(fn);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1424
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1425
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1426
        self.executeSubscribedFn = function (fn) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1427
            var d = $.Deferred();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1428
            self.outstanding.push(d);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1429
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1430
            // display an error if our done() callback is not called
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1431
            $.md.util.wait(2500).done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1432
                if(d.state() !== 'resolved') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1433
                    log.fatal('Timeout reached for done callback in stage: ' + self.name +
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1434
                        '. Did you forget a done() call in a .subscribe() ?');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1435
                    log.fatal('stage ' + name + ' failed running subscribed function: ' + fn );
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1436
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1437
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1438
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1439
            var done = function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1440
                d.resolve();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1441
            };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1442
            fn(done);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1443
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1444
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1445
        self.run = function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1446
            self.started = true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1447
            $(self.events).each(function (i,fn) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1448
                self.executeSubscribedFn(fn);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1449
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1450
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1451
            // if no events are in our queue, we resolve immediately
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1452
            if (self.outstanding.length === 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1453
                self.resolve();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1454
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1455
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1456
            // we resolve when all our registered events have completed
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1457
            $.when.apply($, self.outstanding)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1458
            .done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1459
                self.resolve();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1460
            })
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1461
            .fail(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1462
                self.resolve();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1463
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1464
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1465
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1466
        self.done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1467
            log.debug('stage ' + self.name + ' completed successfully.');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1468
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1469
        self.fail(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1470
            log.debug('stage ' + self.name + ' completed with errors!');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1471
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1472
        return self;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1473
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1474
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1475
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1476
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1477
    'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1478
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1479
    var log = $.md.getLogger();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1480
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1481
    function init() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1482
        $.md.stages = [
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1483
            $.Stage('init'),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1484
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1485
            // loads config, initial markdown and navigation
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1486
            $.Stage('load'),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1487
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1488
            // will transform the markdown to html
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1489
            $.Stage('transform'),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1490
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1491
            // HTML transformation finished
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1492
            $.Stage('ready'),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1493
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1494
            // after we have a polished html skeleton
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1495
            $.Stage('skel_ready'),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1496
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1497
            // will bootstrapify the skeleton
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1498
            $.Stage('bootstrap'),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1499
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1500
            // before we run any gimmicks
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1501
            $.Stage('pregimmick'),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1502
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1503
            // after we have bootstrapified the skeleton
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1504
            $.Stage('gimmick'),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1505
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1506
            // postprocess
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1507
            $.Stage('postgimmick'),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1508
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1509
            $.Stage('all_ready'),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1510
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1511
            // used for integration tests, not intended to use in MDwiki itself
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1512
            $.Stage('final_tests')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1513
        ];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1514
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1515
        $.md.stage = function(name) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1516
            var m = $.grep($.md.stages, function(e,i) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1517
                return e.name === name;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1518
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1519
            if (m.length === 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1520
                $.error('A stage by name ' + name + '  does not exist');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1521
            } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1522
                return m[0];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1523
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1524
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1525
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1526
    init();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1527
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1528
    function resetStages() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1529
        var old_stages = $.md.stages;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1530
        $.md.stages = [];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1531
        $(old_stages).each(function(i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1532
            $.md.stages.push($.Stage(e.name));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1533
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1534
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1535
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1536
    var publicMethods = {};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1537
    $.md.publicMethods = $.extend ({}, $.md.publicMethods, publicMethods);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1538
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1539
    function transformMarkdown (markdown) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1540
        var options = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1541
            gfm: true,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1542
            tables: true,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1543
            breaks: true
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1544
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1545
        if ($.md.config.lineBreaks === 'original')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1546
            options.breaks = false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1547
        else if ($.md.config.lineBreaks === 'gfm')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1548
            options.breaks = true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1549
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1550
        marked.setOptions(options);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1551
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1552
        // get sample markdown
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1553
        var uglyHtml = marked(markdown);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1554
        return uglyHtml;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1555
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1556
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1557
    function registerFetchMarkdown() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1558
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1559
        var md = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1560
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1561
        $.md.stage('init').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1562
            var ajaxReq = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1563
                url: $.md.mainHref,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1564
                dataType: 'text'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1565
            };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1566
            $.ajax(ajaxReq).done(function(data) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1567
                // TODO do this elsewhere
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1568
                md = data;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1569
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1570
            }).fail(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1571
                var log = $.md.getLogger();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1572
                log.fatal('Could not get ' + $.md.mainHref);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1573
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1574
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1575
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1576
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1577
        // find baseUrl
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1578
        $.md.stage('transform').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1579
            var len = $.md.mainHref.lastIndexOf('/');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1580
            var baseUrl = $.md.mainHref.substring(0, len+1);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1581
            $.md.baseUrl = baseUrl;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1582
            done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1583
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1584
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1585
        $.md.stage('transform').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1586
            var uglyHtml = transformMarkdown(md);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1587
            $('#md-content').html(uglyHtml);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1588
            md = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1589
            var dfd = $.Deferred();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1590
            loadExternalIncludes(dfd);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1591
            dfd.always(function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1592
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1593
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1594
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1595
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1596
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1597
    // load [include](/foo/bar.md) external links
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1598
    function loadExternalIncludes(parent_dfd) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1599
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1600
        function findExternalIncludes () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1601
            return $('a').filter (function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1602
                var href = $(this).attr('href');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1603
                var text = $(this).toptext();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1604
                var isMarkdown = $.md.util.hasMarkdownFileExtension(href);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1605
                var isInclude = text === 'include';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1606
                var isPreview = text.startsWith('preview:');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1607
                return (isInclude || isPreview) && isMarkdown;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1608
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1609
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1610
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1611
        function selectPreviewElements ($jqcol, num_elements) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1612
            function isTextNode(node) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1613
                return node.nodeType === 3;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1614
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1615
            var count = 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1616
            var elements = [];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1617
            $jqcol.each(function (i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1618
                if (count < num_elements) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1619
                    elements.push(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1620
                    if (!isTextNode(e)) count++;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1621
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1622
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1623
            return $(elements);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1624
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1625
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1626
        var external_links = findExternalIncludes ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1627
        // continue execution when all external resources are fully loaded
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1628
        var latch = $.md.util.countDownLatch (external_links.length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1629
        latch.always (function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1630
            parent_dfd.resolve();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1631
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1632
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1633
        external_links.each(function (i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1634
            var $el = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1635
            var href = $el.attr('href');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1636
            var text = $el.toptext();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1637
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1638
            $.ajax({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1639
                url: href,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1640
                dataType: 'text'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1641
            })
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1642
            .done(function (data) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1643
                var $html = $(transformMarkdown(data));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1644
                if (text.startsWith('preview:')) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1645
                    // only insert the selected number of paragraphs; default 3
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1646
                    var num_preview_elements = parseInt(text.substring(8), 10) ||3;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1647
                    var $preview = selectPreviewElements ($html, num_preview_elements);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1648
                    $preview.last().append('<a href="' + href +'"> ...read more &#10140;</a>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1649
                    $preview.insertBefore($el.parent('p').eq(0));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1650
                    $el.remove();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1651
                } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1652
                    $html.insertAfter($el.parents('p'));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1653
                    $el.remove();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1654
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1655
            }).always(function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1656
                latch.countDown();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1657
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1658
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1659
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1660
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1661
    function isSpecialLink(href) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1662
        if (!href) return false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1663
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1664
        if (href.lastIndexOf('data:') >= 0)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1665
            return true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1666
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1667
        if (href.startsWith('mailto:'))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1668
            return true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1669
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1670
        if (href.startsWith('file:'))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1671
            return true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1672
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1673
        if (href.startsWith('ftp:'))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1674
            return true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1675
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1676
        // TODO capture more special links: every non-http link with : like
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1677
        // torrent:// etc.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1678
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1679
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1680
    // modify internal links so we load them through our engine
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1681
    function processPageLinks(domElement, baseUrl) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1682
        var html = $(domElement);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1683
        if (baseUrl === undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1684
            baseUrl = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1685
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1686
        // HACK against marked: empty links will have empy href attribute
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1687
        // we remove the href attribute from the a tag
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1688
        html.find('a').not('#md-menu a').filter(function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1689
            var $this = $(this);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1690
            var attr = $this.attr('href');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1691
            if (!attr || attr.length === 0)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1692
                $this.removeAttr('href');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1693
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1694
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1695
        html.find('a, img').each(function(i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1696
            var link = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1697
            // link must be jquery collection
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1698
            var isImage = false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1699
            var hrefAttribute = 'href';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1700
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1701
            if (!link.attr(hrefAttribute)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1702
                isImage = true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1703
                hrefAttribute = 'src';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1704
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1705
            var href = link.attr(hrefAttribute);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1706
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1707
            if (href && href.lastIndexOf ('#!') >= 0)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1708
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1709
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1710
            if (isSpecialLink(href))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1711
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1712
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1713
            if (!isImage && href.startsWith ('#') && !href.startsWith('#!')) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1714
                // in-page link
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1715
                link.click(function(ev) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1716
                    ev.preventDefault();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1717
                    $.md.scrollToInPageAnchor (href);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1718
                });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1719
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1720
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1721
            if (! $.md.util.isRelativeUrl(href))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1722
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1723
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1724
            if (isImage && ! $.md.util.isRelativePath(href))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1725
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1726
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1727
            if (!isImage && $.md.util.isGimmickLink(link))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1728
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1729
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1730
            function build_link (url) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1731
                if ($.md.util.hasMarkdownFileExtension (url))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1732
                    return '#!' + url;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1733
                else
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1734
                    return url;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1735
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1736
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1737
            var newHref = baseUrl + href;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1738
            if (isImage)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1739
                link.attr(hrefAttribute, newHref);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1740
            else if ($.md.util.isRelativePath (href))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1741
                link.attr(hrefAttribute, build_link(newHref));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1742
            else
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1743
                link.attr(hrefAttribute, build_link(href));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1744
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1745
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1746
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1747
    var navMD = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1748
    $.md.NavigationDfd = $.Deferred();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1749
    var ajaxReq = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1750
        url: 'navigation.md',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1751
        dataType: 'text'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1752
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1753
    $.ajax(ajaxReq).done(function(data) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1754
        navMD = data;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1755
        $.md.NavigationDfd.resolve();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1756
    }).fail(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1757
        $.md.NavigationDfd.reject();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1758
    });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1759
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1760
    function registerBuildNavigation() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1761
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1762
        $.md.stage('init').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1763
            $.md.NavigationDfd.done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1764
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1765
            })
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1766
            .fail(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1767
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1768
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1769
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1770
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1771
        $.md.stage('transform').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1772
            if (navMD === '') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1773
                var log = $.md.getLogger();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1774
                log.info('no navgiation.md found, not using a navbar');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1775
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1776
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1777
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1778
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1779
            var navHtml = marked(navMD);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1780
            // TODO why are <script> tags from navHtml APPENDED to the jqcol?
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1781
            var $h = $('<div>' + navHtml + '</div>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1782
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1783
            // insert <scripts> from navigation.md into the DOM
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1784
            $h.each(function (i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1785
                if (e.tagName === 'SCRIPT') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1786
                    $('script').first().before(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1787
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1788
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1789
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1790
            // TODO .html() is evil!!!
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1791
            var $navContent = $h.eq(0);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1792
            $navContent.find('p').each(function(i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1793
                var $el = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1794
                $el.replaceWith($el.html());
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1795
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1796
            $('#md-menu').append($navContent.html());
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1797
            done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1798
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1799
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1800
        $.md.stage('bootstrap').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1801
            processPageLinks($('#md-menu'));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1802
            done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1803
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1804
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1805
        $.md.stage('postgimmick').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1806
            var num_links = $('#md-menu a').length;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1807
            var has_header = $('#md-menu .navbar-brand').eq(0).toptext().trim().length > 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1808
            if (!has_header && num_links <= 1)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1809
                $('#md-menu').hide();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1810
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1811
            done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1812
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1813
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1814
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1815
    $.md.ConfigDfd = $.Deferred();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1816
    $.ajax({url: 'config.json', dataType: 'text'}).done(function(data) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1817
        try {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1818
            var data_json = JSON.parse(data);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1819
            $.md.config = $.extend($.md.config, data_json);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1820
            log.info('Found a valid config.json file, using configuration');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1821
        } catch(err) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1822
            log.error('config.json was not JSON parsable: ' + err);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1823
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1824
        $.md.ConfigDfd.resolve();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1825
    }).fail(function(err, textStatus) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1826
        log.error('unable to retrieve config.json: ' + textStatus);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1827
        $.md.ConfigDfd.reject();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1828
    });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1829
    function registerFetchConfig() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1830
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1831
        $.md.stage('init').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1832
            // TODO 404 won't get cached, requesting it every reload is not good
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1833
            // maybe use cookies? or disable re-loading of the page
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1834
            //$.ajax('config.json').done(function(data){
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1835
            $.md.ConfigDfd.done(function(){
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1836
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1837
            }).fail(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1838
                var log = $.md.getLogger();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1839
                log.info('No config.json found, using default settings');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1840
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1841
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1842
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1843
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1844
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1845
    function registerClearContent() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1846
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1847
        $.md.stage('init').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1848
            $('#md-all').empty();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1849
            var skel ='<div id="md-body"><div id="md-title"></div><div id="md-menu">'+
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1850
                '</div><div id="md-content"></div></div>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1851
            $('#md-all').prepend($(skel));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1852
            done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1853
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1854
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1855
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1856
    function loadContent(href) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1857
        $.md.mainHref = href;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1858
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1859
        registerFetchMarkdown();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1860
        registerClearContent();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1861
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1862
        // find out which link gimmicks we need
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1863
        $.md.stage('ready').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1864
            $.md.initializeGimmicks();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1865
            $.md.registerLinkGimmicks();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1866
            done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1867
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1868
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1869
        // wire up the load method of the modules
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1870
        $.each($.md.gimmicks, function(i, module) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1871
            if (module.load === undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1872
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1873
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1874
            $.md.stage('load').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1875
                module.load();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1876
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1877
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1878
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1879
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1880
        $.md.stage('ready').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1881
            $.md('createBasicSkeleton');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1882
            done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1883
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1884
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1885
        $.md.stage('bootstrap').subscribe(function(done){
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1886
            $.mdbootstrap('bootstrapify');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1887
            processPageLinks($('#md-content'), $.md.baseUrl);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1888
            done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1889
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1890
        runStages();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1891
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1892
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1893
    function runStages() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1894
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1895
        // wire the stages up
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1896
        $.md.stage('init').done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1897
            $.md.stage('load').run();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1898
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1899
        $.md.stage('load').done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1900
            $.md.stage('transform').run();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1901
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1902
        $.md.stage('transform').done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1903
            $.md.stage('ready').run();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1904
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1905
        $.md.stage('ready').done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1906
            $.md.stage('skel_ready').run();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1907
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1908
        $.md.stage('skel_ready').done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1909
            $.md.stage('bootstrap').run();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1910
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1911
        $.md.stage('bootstrap').done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1912
            $.md.stage('pregimmick').run();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1913
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1914
        $.md.stage('pregimmick').done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1915
            $.md.stage('gimmick').run();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1916
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1917
        $.md.stage('gimmick').done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1918
            $.md.stage('postgimmick').run();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1919
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1920
        $.md.stage('postgimmick').done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1921
            $.md.stage('all_ready').run();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1922
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1923
        $.md.stage('all_ready').done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1924
            $('html').removeClass('md-hidden-load');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1925
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1926
            // phantomjs hook when we are done
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1927
            if (typeof window.callPhantom === 'function') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1928
                window.callPhantom({});
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1929
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1930
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1931
            $.md.stage('final_tests').run();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1932
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1933
        $.md.stage('final_tests').done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1934
            // reset the stages for next iteration
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1935
            resetStages();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1936
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1937
            // required by dalekjs so we can wait the element to appear
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1938
            $('body').append('<span id="start-tests"></span>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1939
            $('#start-tests').hide();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1940
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1941
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1942
        // trigger the whole process by runing the init stage
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1943
        $.md.stage('init').run();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1944
        return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1945
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1946
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1947
    function extractHashData() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1948
        // first char is the # or #!
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1949
        var href;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1950
        if (window.location.hash.startsWith('#!')) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1951
            href = window.location.hash.substring(2);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1952
        } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1953
            href = window.location.hash.substring(1);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1954
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1955
        href = decodeURIComponent(href);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1956
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1957
        // extract possible in-page anchor
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1958
        var ex_pos = href.indexOf('#');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1959
        if (ex_pos !== -1) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1960
            $.md.inPageAnchor = href.substring(ex_pos + 1);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1961
            $.md.mainHref = href.substring(0, ex_pos);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1962
        } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1963
            $.md.mainHref = href;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1964
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1965
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1966
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1967
    function appendDefaultFilenameToHash () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1968
        var newHashString = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1969
        var currentHashString = window.location.hash || '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1970
        if (currentHashString === '' ||
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1971
            currentHashString === '#'||
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1972
            currentHashString === '#!')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1973
        {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1974
            newHashString = '#!index.md';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1975
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1976
        else if (currentHashString.startsWith ('#!') &&
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1977
                 currentHashString.endsWith('/')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1978
                ) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1979
            newHashString = currentHashString + 'index.md';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1980
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1981
        if (newHashString)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1982
            window.location.hash = newHashString;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1983
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1984
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1985
    $(document).ready(function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1986
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1987
        // stage init stuff
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1988
        registerFetchConfig();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1989
        registerBuildNavigation();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1990
        extractHashData();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1991
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1992
        appendDefaultFilenameToHash();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1993
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1994
        $(window).bind('hashchange', function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1995
            window.location.reload(false);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1996
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1997
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1998
        loadContent($.md.mainHref);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  1999
    });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2000
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2001
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2002
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2003
    var publicMethods = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2004
        isRelativeUrl: function(url) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2005
            if (url === undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2006
                return false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2007
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2008
            // if there is :// in it, its considered absolute
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2009
            // else its relative
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2010
            if (url.indexOf('://') === -1) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2011
                return true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2012
            } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2013
                return false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2014
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2015
        },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2016
        isRelativePath: function(path) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2017
            if (path === undefined)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2018
                return false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2019
            if (path.startsWith('/'))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2020
                return false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2021
            return true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2022
        },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2023
        isGimmickLink: function(domAnchor) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2024
            if (domAnchor.toptext().indexOf ('gimmick:') !== -1) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2025
                return true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2026
            } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2027
                return false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2028
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2029
        },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2030
        hasMarkdownFileExtension: function (str) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2031
            var markdownExtensions = [ '.md', '.markdown', '.mdown' ];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2032
            var result = false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2033
            var value = str.toLowerCase().split('#')[0];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2034
            $(markdownExtensions).each(function (i,ext) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2035
                if (value.toLowerCase().endsWith (ext)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2036
                    result = true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2037
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2038
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2039
            return result;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2040
        },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2041
        wait: function(time) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2042
            return $.Deferred(function(dfd) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2043
                setTimeout(dfd.resolve, time);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2044
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2045
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2046
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2047
    $.md.util = $.extend ({}, $.md.util, publicMethods);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2048
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2049
    if (typeof String.prototype.startsWith !== 'function') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2050
        String.prototype.startsWith = function(str) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2051
            return this.slice(0, str.length) === str;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2052
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2053
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2054
    if (typeof String.prototype.endsWith !== 'function') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2055
        String.prototype.endsWith = function(str) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2056
            return this.slice(this.length - str.length, this.length) === str;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2057
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2058
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2059
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2060
    $.fn.extend ({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2061
        toptext: function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2062
            return this.clone().children().remove().end().text();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2063
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2064
    });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2065
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2066
    // adds a :icontains selector to jQuery that is case insensitive
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2067
    $.expr[':'].icontains = $.expr.createPseudo(function(arg) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2068
        return function(elem) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2069
            return $(elem).toptext().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2070
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2071
    });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2072
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2073
    $.md.util.getInpageAnchorText = function (text) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2074
        var subhash = text.replace(/ /g, '_');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2075
        // TODO remove more unwanted characters like ?/,- etc.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2076
        return subhash;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2077
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2078
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2079
    $.md.util.getInpageAnchorHref = function (text, href) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2080
        href = href || $.md.mainHref;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2081
        var subhash = $.md.util.getInpageAnchorText(text);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2082
        return '#!' + href + '#' + subhash;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2083
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2084
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2085
    $.md.util.repeatUntil = function (interval, predicate, maxRepeats) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2086
        maxRepeats = maxRepeats || 10;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2087
        var dfd = $.Deferred();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2088
        function recursive_repeat (interval, predicate, maxRepeats) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2089
            if (maxRepeats === 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2090
                dfd.reject();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2091
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2092
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2093
            if (predicate()) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2094
                dfd.resolve();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2095
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2096
            } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2097
                $.md.util.wait(interval).always(function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2098
                    recursive_repeat(interval, predicate, maxRepeats - 1);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2099
                });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2100
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2101
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2102
        recursive_repeat(interval, predicate, maxRepeats);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2103
        return dfd;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2104
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2105
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2106
    // a count-down latch as in Java7.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2107
    $.md.util.countDownLatch = function (capacity, min) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2108
        min = min || 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2109
        var dfd = $.Deferred();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2110
        if (capacity <= min) dfd.resolve();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2111
        dfd.capacity = capacity;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2112
        dfd.countDown = function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2113
            dfd.capacity--;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2114
            if (dfd.capacity <= min)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2115
                dfd.resolve();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2116
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2117
        return dfd;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2118
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2119
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2120
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2121
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2122
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2123
    'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2124
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2125
    // PUBLIC API
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2126
    $.md.registerGimmick = function(module) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2127
        $.md.gimmicks.push(module);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2128
        return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2129
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2130
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2131
    // registers a script for a gimmick, that is later dynamically loaded
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2132
    // by the core.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2133
    // src may be an URL or direct javascript sourcecode. When options.callback
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2134
    // is provided, the done() function is passed to the function and needs to
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2135
    // be called.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2136
    $.md.registerScript = function(module, src, options) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2137
        var scriptinfo = new ScriptInfo({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2138
            module: module,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2139
            src: src,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2140
            options: options
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2141
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2142
        registeredScripts.push(scriptinfo);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2143
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2144
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2145
    // same as registerScript but for css. Note that we do not provide a
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2146
    // callback when the load finishes
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2147
    $.md.registerCss = function(module, url, options) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2148
        var license = options.license,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2149
            stage = options.stage || 'skel_ready',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2150
            callback = options.callback;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2151
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2152
        checkLicense(license, module);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2153
        var tag = '<link rel="stylesheet" href="' + url + '" type="text/css"></link>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2154
        $.md.stage(stage).subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2155
            $('head').append(tag);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2156
            if (callback !== undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2157
                callback(done);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2158
            } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2159
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2160
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2161
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2162
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2163
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2164
    // turns hostname/path links into http://hostname/path links
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2165
    // we need to do this because if accessed by file:///, we need a different
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2166
    // transport scheme for external resources (like http://)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2167
    $.md.prepareLink = function(link, options) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2168
        options = options || {};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2169
        var ownProtocol = window.location.protocol;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2170
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2171
        if (options.forceSSL)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2172
            return 'https://' + link;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2173
        if (options.forceHTTP)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2174
            return 'http://' + link;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2175
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2176
        if (ownProtocol === 'file:') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2177
            return 'http://' + link;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2178
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2179
        // default: use the same as origin resource
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2180
        return '//' + link;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2181
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2182
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2183
    // associate a link trigger for a gimmick. i.e. [gimmick:foo]() then
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2184
    // foo is the trigger and will invoke the corresponding gimmick
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2185
    $.md.linkGimmick = function(module, trigger, callback, stage) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2186
        if (stage === undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2187
            stage = 'gimmick';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2188
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2189
        var linktrigger = new LinkTrigger({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2190
            trigger: trigger,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2191
            module: module,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2192
            stage: stage,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2193
            callback: callback
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2194
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2195
        linkTriggers.push(linktrigger);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2196
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2197
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2198
    $.md.triggerIsActive = function(trigger) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2199
        if (activeLinkTriggers.indexOf(trigger) === -1) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2200
            return false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2201
        } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2202
            return true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2203
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2204
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2205
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2206
    var initialized = false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2207
    // TODO combine main.js and modules.js closure
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2208
    $.md.initializeGimmicks = function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2209
        findActiveLinkTrigger();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2210
        runGimmicksOnce();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2211
        loadRequiredScripts();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2212
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2213
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2214
    // END PUBLIC API
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2215
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2216
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2217
    var log = $.md.getLogger();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2218
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2219
    // triggers that we actually found on the page
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2220
    // array of string
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2221
    var activeLinkTriggers = [];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2222
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2223
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2224
    // array of ScriptInfo
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2225
    var registeredScripts = [];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2226
    function ScriptInfo(initial) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2227
        this.module = undefined;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2228
        this.options = {};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2229
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2230
        // can ba an URL or javascript sourcecode
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2231
        this.src = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2232
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2233
        $.extend(this, initial);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2234
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2235
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2236
    // array of linkTriggers
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2237
    var linkTriggers = [];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2238
    function LinkTrigger(initial) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2239
        this.trigger = undefined;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2240
        this.module = undefined;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2241
        this.callback = undefined;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2242
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2243
        $.extend(this, initial);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2244
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2245
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2246
    // jQuery does some magic when inserting inline scripts, so better
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2247
    // use vanilla JS. See:
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2248
    // http://stackoverflow.com/questions/610995/jquery-cant-append-script-element
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2249
    function insertInlineScript(src) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2250
        // scripts always need to go directly into the DOM
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2251
        var script = document.createElement('script');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2252
        script.type = 'text/javascript';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2253
        script.text = src;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2254
        document.body.appendChild(script);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2255
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2256
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2257
    // since we are GPL, we have to be cautious what other scripts we load
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2258
    // as delivering to the browser is considered delivering a derived work
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2259
    var licenses = ['MIT', 'BSD', 'GPL', 'GPL2', 'GPL3', 'LGPL', 'LGPL2',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2260
        'APACHE2', 'PUBLICDOMAIN', 'EXCEPTION', 'OTHER'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2261
    ];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2262
    function checkLicense(license, module) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2263
        if ($.inArray(license, licenses) === -1) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2264
            var availLicenses = JSON.stringify(licenses);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2265
            log.warn('license ' + license + ' is not known.');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2266
            log.warn('Known licenses:' + availLicenses);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2267
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2268
        } else if (license === 'OTHER') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2269
            log.warn('WARNING: Module ' + module.name + ' uses a script'+
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2270
                ' with unknown license. This may be a GPL license violation if'+
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2271
                ' this website is publically available!');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2272
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2273
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2274
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2275
    // will actually schedule the script load into the DOM.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2276
    function loadScript(scriptinfo) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2277
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2278
        var module = scriptinfo.module,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2279
            src = scriptinfo.src,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2280
            options = scriptinfo.options;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2281
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2282
        var license = options.license || 'OTHER',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2283
            loadstage = options.loadstage || 'skel_ready',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2284
            finishstage = options.finishstage || 'pregimmick',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2285
            callback = options.callback;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2286
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2287
        var loadDone = $.Deferred();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2288
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2289
        checkLicense(license, module);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2290
        // start script loading
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2291
        log.debug('subscribing ' + module.name + ' to start: ' + loadstage + ' end in: ' + finishstage);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2292
        $.md.stage(loadstage).subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2293
            if (src.startsWith('//') || src.startsWith('http')) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2294
                $.getScript(src, function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2295
                    if (callback !== undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2296
                        callback(done);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2297
                    } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2298
                        log.debug('module' + module.name + ' script load done: ' + src);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2299
                        done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2300
                    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2301
                    loadDone.resolve();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2302
                });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2303
            } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2304
                // inline script that we directly insert
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2305
                insertInlineScript(src);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2306
                log.debug('module' + module.name + ' script inject done');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2307
                loadDone.resolve();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2308
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2309
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2310
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2311
        // if loading is not yet finished in stage finishstage, wait
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2312
        // for the loading to complete
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2313
        $.md.stage(finishstage).subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2314
            loadDone.done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2315
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2316
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2317
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2318
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2319
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2320
    // finds out that kind of trigger words are acutally used on a given page
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2321
    // this is most likely a very small subset of all available gimmicks
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2322
    function findActiveLinkTrigger() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2323
        var $gimmicks = $('a:icontains(gimmick:)');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2324
        $gimmicks.each(function(i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2325
            var parts = getGimmickLinkParts($(e));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2326
            if (activeLinkTriggers.indexOf(parts.trigger) === -1) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2327
                activeLinkTriggers.push(parts.trigger);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2328
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2329
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2330
        log.debug('Scanning for required gimmick links: ' + JSON.stringify(activeLinkTriggers));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2331
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2332
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2333
    function loadRequiredScripts() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2334
        // find each module responsible for the link trigger
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2335
        $.each(activeLinkTriggers, function(i,trigger) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2336
            var module = findModuleByTrigger(trigger);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2337
            if (module === undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2338
                log.error('Gimmick link: "' + trigger + '" found but no suitable gimmick loaded');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2339
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2340
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2341
            var scriptinfo = registeredScripts.filter(function(info) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2342
                return info.module.name === module.name;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2343
            })[0];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2344
            // register to load the script
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2345
            if (scriptinfo !== undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2346
                loadScript(scriptinfo);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2347
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2348
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2349
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2350
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2351
    function findModuleByTrigger(trigger) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2352
        var ret;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2353
        $.each(linkTriggers, function(i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2354
            if (e.trigger === trigger) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2355
                ret = e.module;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2356
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2357
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2358
        return ret;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2359
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2360
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2361
    function getGimmickLinkParts($link) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2362
        var link_text = $.trim($link.toptext());
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2363
        // returns linkTrigger, options, linkText
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2364
        if (link_text.match(/gimmick:/i) === null) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2365
            return null;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2366
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2367
        var href = $.trim($link.attr('href'));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2368
        var r = new RegExp(/gimmick:\s*([^(\s]*)\s*(\(\s*{?(.*)\s*}?\s*\))*/i);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2369
        var matches = r.exec(link_text);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2370
        if (matches === null || matches[1] === undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2371
            $.error('Error matching a gimmick: ' + link_text);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2372
            return null;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2373
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2374
        var trigger = matches[1].toLowerCase();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2375
        var args = null;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2376
        // getting the parameters
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2377
        if (matches[2] !== undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2378
            // remove whitespaces
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2379
            var params = $.trim(matches[3].toString());
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2380
            // remove the closing } if present
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2381
            if (params.charAt (params.length - 1) === '}') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2382
                params = params.substring(0, params.length - 1);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2383
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2384
            // add surrounding braces and paranthese
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2385
            params = '({' + params + '})';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2386
            // replace any single quotes by double quotes
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2387
            params = params.replace(/'/g, '"');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2388
            // finally, try if the json object is valid
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2389
            try {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2390
                /*jshint -W061 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2391
                args = eval(params);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2392
            } catch (err) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2393
                log.error('error parsing argument of gimmick: ' + link_text + 'giving error: ' + err);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2394
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2395
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2396
        return { trigger: trigger, options: args, href: href };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2397
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2398
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2399
    function runGimmicksOnce() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2400
        // runs the once: callback for each gimmick within the init stage
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2401
        $.each($.md.gimmicks, function(i, module) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2402
            if (module.once === undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2403
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2404
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2405
            module.once();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2406
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2407
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2408
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2409
    // activate all gimmicks on a page, that are contain the text gimmick:
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2410
    // TODO make private / merge closures
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2411
    $.md.registerLinkGimmicks = function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2412
        var $gimmick_links = $('a:icontains(gimmick:)');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2413
        $gimmick_links.each(function(i, e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2414
            var $link = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2415
            var gimmick_arguments = getGimmickLinkParts($link);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2416
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2417
            $.each(linkTriggers, function(i, linktrigger) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2418
                if (gimmick_arguments.trigger === linktrigger.trigger) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2419
                    subscribeLinkTrigger($link, gimmick_arguments, linktrigger);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2420
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2421
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2422
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2423
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2424
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2425
    function subscribeLinkTrigger($link, args, linktrigger) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2426
        log.debug('Subscribing gimmick ' + linktrigger.module.name + ' to stage: ' + linktrigger.stage);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2427
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2428
        $.md.stage(linktrigger.stage).subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2429
            args.options = args.options ||{};
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2430
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2431
            // it is possible that broken modules or any other transformation removed the $link
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2432
            // from the dom in the meantime
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2433
            if (!jQuery.contains(document.documentElement, $link[0])) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2434
                log.error ('LINK IS NOT IN THE DOM ANYMORE: ');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2435
                console.log($link);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2436
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2437
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2438
            log.debug('Running gimmick ' + linktrigger.module.name);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2439
            linktrigger.callback($link, args.options, args.href, done);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2440
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2441
            // if the gimmick didn't call done, we trigger it here
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2442
            done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2443
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2444
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2445
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2446
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2447
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2448
    var publicMethods = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2449
        createBasicSkeleton: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2450
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2451
            setPageTitle();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2452
            wrapParagraphText();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2453
            linkImagesToSelf();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2454
            groupImages();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2455
            removeBreaks();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2456
            addInpageAnchors ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2457
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2458
            $.md.stage('all_ready').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2459
                if ($.md.inPageAnchor !== '') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2460
                    $.md.util.wait(500).then(function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2461
                        $.md.scrollToInPageAnchor($.md.inPageAnchor);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2462
                    });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2463
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2464
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2465
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2466
            return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2467
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2468
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2469
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2470
    $.md.publicMethods = $.extend ({}, $.md.publicMethods, publicMethods);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2471
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2472
    // set the page title to the browser document title, optionally picking
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2473
    // the first h1 element as title if no title is given
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2474
    function setPageTitle() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2475
        var $pageTitle;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2476
        if ($.md.config.title)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2477
            $('title').text($.md.config.title);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2478
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2479
        $pageTitle = $('#md-content h1').eq(0);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2480
        if ($.trim($pageTitle.toptext()).length > 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2481
            $('#md-title').prepend($pageTitle);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2482
            var title = $pageTitle.toptext();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2483
            // document.title = title;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2484
        } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2485
            $('#md-title').remove();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2486
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2487
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2488
    function wrapParagraphText () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2489
        // TODO is this true for marked.js?
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2490
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2491
        // markdown gives us sometime paragraph that contain child tags (like img),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2492
        // but the containing text is not wrapped. Make sure to wrap the text in the
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2493
        // paragraph into a <div>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2494
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2495
		// this also moves ANY child tags to the front of the paragraph!
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2496
		$('#md-content p').each (function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2497
			var $p = $(this);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2498
			// nothing to do for paragraphs without text
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2499
			if ($.trim($p.text ()).length === 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2500
				// make sure no whitespace are in the p and then exit
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2501
				//$p.text ('');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2502
				return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2503
			}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2504
			// children elements of the p
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2505
            var children = $p.contents ().filter (function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2506
                var $child =  $(this);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2507
                // we extract images and hyperlinks with images out of the paragraph
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2508
                if (this.tagName === 'A' && $child.find('img').length > 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2509
                    return true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2510
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2511
                if (this.tagName === 'IMG') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2512
                    return true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2513
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2514
                // else
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2515
                return false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2516
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2517
            var floatClass = getFloatClass($p);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2518
            $p.wrapInner ('<div class="md-text" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2519
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2520
            // if there are no children, we are done
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2521
            if (children.length === 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2522
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2523
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2524
            // move the children out of the wrapped div into the original p
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2525
            children.prependTo($p);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2526
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2527
            // at this point, we now have a paragraph that holds text AND images
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2528
            // we mark that paragraph to be a floating environment
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2529
            // TODO determine floatenv left/right
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2530
            $p.addClass ('md-floatenv').addClass (floatClass);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2531
		});
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2532
	}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2533
	function removeBreaks (){
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2534
		// since we use non-markdown-standard line wrapping, we get lots of
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2535
		// <br> elements we don't want.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2536
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2537
        // remove a leading <br> from floatclasses, that happen to
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2538
        // get insertet after an image
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2539
        $('.md-floatenv').find ('.md-text').each (function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2540
            var $first = $(this).find ('*').eq(0);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2541
            if ($first.is ('br')) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2542
                $first.remove ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2543
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2544
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2545
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2546
        // remove any breaks from image groups
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2547
        $('.md-image-group').find ('br').remove ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2548
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2549
	function getFloatClass (par) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2550
		var $p = $(par);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2551
		var floatClass = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2552
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2553
		// reduce content of the paragraph to images
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2554
		var nonTextContents = $p.contents().filter(function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2555
			if (this.tagName === 'IMG' || this.tagName === 'IFRAME') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2556
                return true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2557
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2558
			else if (this.tagName === 'A') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2559
                return $(this).find('img').length > 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2560
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2561
			else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2562
				return $.trim($(this).text ()).length > 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2563
			}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2564
		});
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2565
		// check the first element - if its an image or a link with image, we go left
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2566
		var elem = nonTextContents[0];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2567
		if (elem !== undefined && elem !== null) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2568
			if (elem.tagName === 'IMG' || elem.tagName === 'IFRAME') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2569
                floatClass = 'md-float-left';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2570
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2571
			else if (elem.tagName === 'A' && $(elem).find('img').length > 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2572
                floatClass = 'md-float-left';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2573
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2574
			else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2575
                floatClass = 'md-float-right';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2576
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2577
		}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2578
		return floatClass;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2579
	}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2580
    // images are put in the same image group as long as there is
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2581
    // not separating paragraph between them
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2582
    function groupImages() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2583
        var par = $('p img').parents('p');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2584
        // add an .md-image-group class to the p
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2585
        par.addClass('md-image-group');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2586
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2587
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2588
    // takes a standard <img> tag and adds a hyperlink to the image source
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2589
    // needed since we scale down images via css and want them to be accessible
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2590
    // in original format
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2591
    function linkImagesToSelf () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2592
        function selectNonLinkedImages () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2593
            // only select images that do not have a non-empty parent link
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2594
            $images = $('img').filter(function(index) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2595
                var $parent_link = $(this).parents('a').eq(0);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2596
                if ($parent_link.length === 0) return true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2597
                var attr = $parent_link.attr('href');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2598
                return (attr && attr.length === 0);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2599
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2600
            return $images;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2601
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2602
        var $images = selectNonLinkedImages ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2603
        return $images.each(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2604
            var $this = $(this);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2605
            var img_src = $this.attr('src');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2606
            var img_title = $this.attr('title');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2607
            if (img_title === undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2608
                img_title = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2609
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2610
            // wrap the <img> tag in an anchor and copy the title of the image
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2611
            $this.wrap('<a class="md-image-selfref" href="' + img_src + '" title="'+ img_title +'"/> ');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2612
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2613
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2614
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2615
    function addInpageAnchors()
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2616
    {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2617
        // adds a pilcrow (paragraph) character to heading with a link for the
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2618
        // inpage anchor
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2619
        function addPilcrow ($heading, href) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2620
            var c = $.md.config.anchorCharacter;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2621
            var $pilcrow = $('<span class="anchor-highlight"><a>' + c + '</a></span>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2622
            $pilcrow.find('a').attr('href', href);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2623
            $pilcrow.hide();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2624
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2625
            var mouse_entered = false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2626
            $heading.mouseenter(function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2627
                mouse_entered = true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2628
                $.md.util.wait(300).then(function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2629
                    if (!mouse_entered) return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2630
                    $pilcrow.fadeIn(200);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2631
                });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2632
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2633
            $heading.mouseleave(function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2634
                mouse_entered = false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2635
                $pilcrow.fadeOut(200);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2636
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2637
            $pilcrow.appendTo($heading);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2638
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2639
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2640
        // adds a link to the navigation at the top of the page
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2641
        function addJumpLinkToTOC($heading) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2642
            if($.md.config.useSideMenu === false) return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2643
            if($heading.prop("tagName") !== 'H2') return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2644
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2645
            var c = $.md.config.tocAnchor;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2646
            if (c === '')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2647
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2648
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2649
            var $jumpLink = $('<a class="visible-xs visible-sm jumplink" href="#md-page-menu">' + c + '</a>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2650
            $jumpLink.click(function(ev) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2651
                ev.preventDefault();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2652
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2653
                $('body').scrollTop($('#md-page-menu').position().top);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2654
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2655
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2656
            if ($heading.parents('#md-menu').length === 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2657
                $jumpLink.insertAfter($heading);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2658
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2659
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2660
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2661
        // adds a page inline anchor to each h1,h2,h3,h4,h5,h6 element
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2662
        // which can be accessed by the headings text
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2663
        $('h1,h2,h3,h4,h5,h6').not('#md-title h1').each (function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2664
            var $heading = $(this);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2665
            $heading.addClass('md-inpage-anchor');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2666
            var text = $heading.clone().children('.anchor-highlight').remove().end().text();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2667
            var href = $.md.util.getInpageAnchorHref(text);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2668
            addPilcrow($heading, href);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2669
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2670
            //add jumplink to table of contents
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2671
            addJumpLinkToTOC($heading);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2672
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2673
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2674
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2675
    $.md.scrollToInPageAnchor = function(anchortext) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2676
        if (anchortext.startsWith ('#'))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2677
            anchortext = anchortext.substring (1, anchortext.length);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2678
        // we match case insensitive
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2679
        var doBreak = false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2680
        $('.md-inpage-anchor').each (function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2681
            if (doBreak) { return; }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2682
            var $this = $(this);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2683
            // don't use the text of any subnode
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2684
            var text = $this.toptext();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2685
            var match = $.md.util.getInpageAnchorText (text);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2686
            if (anchortext === match) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2687
                this.scrollIntoView (true);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2688
                var navbar_offset = $('.navbar-collapse').height() + 5;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2689
                window.scrollBy(0, -navbar_offset + 5);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2690
                doBreak = true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2691
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2692
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2693
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2694
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2695
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2696
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2697
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2698
    'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2699
    // call the gimmick
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2700
    $.mdbootstrap = function (method){
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2701
        if ($.mdbootstrap.publicMethods[method]) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2702
            return $.mdbootstrap.publicMethods[method].apply(this, Array.prototype.slice.call(arguments, 1));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2703
        } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2704
            $.error('Method ' + method + ' does not exist on jquery.mdbootstrap');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2705
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2706
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2707
    // simple wrapper around $().bind
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2708
    $.mdbootstrap.events = [];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2709
    $.mdbootstrap.bind =  function (ev, func) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2710
        $(document).bind (ev, func);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2711
        $.mdbootstrap.events.push (ev);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2712
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2713
    $.mdbootstrap.trigger = function (ev) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2714
        $(document).trigger (ev);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2715
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2716
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2717
    var navStyle = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2718
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2719
    // PUBLIC API functions that are exposed
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2720
    var publicMethods = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2721
        bootstrapify: function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2722
            createPageSkeleton();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2723
            buildMenu ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2724
            changeHeading();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2725
            replaceImageParagraphs();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2726
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2727
            $('table').addClass('table').addClass('table-bordered');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2728
            //pullRightBumper ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2729
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2730
            // remove the margin for headings h1 and h2 that are the first
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2731
            // on page
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2732
            //if (navStyle == "sub" || (navStyle == "top" && $('#md-title').text ().trim ().length === 0))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2733
            //    $(".md-first-heading").css ("margin-top", "0");
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2734
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2735
            // external content should run after gimmicks were run
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2736
            $.md.stage('pregimmick').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2737
                if ($.md.config.useSideMenu !== false) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2738
                    createPageContentMenu();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2739
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2740
                addFooter();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2741
                addAdditionalFooterText();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2742
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2743
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2744
            $.md.stage('postgimmick').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2745
                adjustExternalContent();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2746
                highlightActiveLink();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2747
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2748
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2749
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2750
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2751
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2752
    // register the public API functions
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2753
    $.mdbootstrap.publicMethods = $.extend ({}, $.mdbootstrap.publicMethods, publicMethods);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2754
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2755
    // PRIVATE FUNCTIONS:
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2756
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2757
    function buildTopNav() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2758
        // replace with the navbar skeleton
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2759
        if ($('#md-menu').length <= 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2760
            return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2761
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2762
        navStyle = 'top';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2763
        var $menuContent = $('#md-menu').children();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2764
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2765
        // $('#md-menu').addClass ('navbar navbar-default navbar-fixed-top');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2766
        // var menusrc = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2767
        // menusrc += '<div id="md-menu-inner" class="container">';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2768
        // menusrc += '<ul id="md-menu-ul" class="nav navbar-nav">';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2769
        // menusrc += '</ul></div>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2770
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2771
        var navbar = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2772
        navbar += '<div id="md-main-navbar" class="navbar navbar-default navbar-fixed-top" role="navigation">';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2773
        navbar +=   '<div class="navbar-header">';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2774
        navbar +=     '<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2775
        navbar +=       '<span class="sr-only">Toggle navigation</span>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2776
        navbar +=       '<span class="icon-bar"></span>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2777
        navbar +=       '<span class="icon-bar"></span>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2778
        navbar +=       '<span class="icon-bar"></span>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2779
        navbar +=     '</button>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2780
        navbar +=     '<a class="navbar-brand" href="#"></a>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2781
        navbar +=   '</div>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2782
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2783
        navbar +=   '<div class="collapse navbar-collapse navbar-ex1-collapse">';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2784
        navbar +=     '<ul class="nav navbar-nav" />';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2785
        navbar +=     '<ul class="nav navbar-nav navbar-right" />';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2786
        navbar +=   '</div>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2787
        navbar += '</div>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2788
        var $navbar = $(navbar);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2789
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2790
        $navbar.appendTo('#md-menu');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2791
        // .eq(0) becase we dont want navbar-right to be appended to
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2792
        $('#md-menu ul.nav').eq(0).append($menuContent);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2793
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2794
        // the menu should be the first element in the body
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2795
        $('#md-menu').prependTo ('#md-all');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2796
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2797
        var brand_text = $('#md-menu h1').toptext();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2798
        $('#md-menu h1').remove();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2799
        $('a.navbar-brand').text(brand_text);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2800
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2801
        // initial offset
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2802
        $('#md-body').css('margin-top', '70px');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2803
        $.md.stage('pregimmick').subscribe(function (done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2804
            check_offset_to_navbar();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2805
            done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2806
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2807
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2808
    // the navbar has different height depending on theme, number of navbar entries,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2809
    // and window/device width. Therefore recalculate on start and upon window resize
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2810
    function set_offset_to_navbar () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2811
        var height = $('#md-main-navbar').height() + 10;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2812
        $('#md-body').css('margin-top', height + 'px');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2813
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2814
    function check_offset_to_navbar () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2815
        // HACK this is VERY UGLY. When an external theme is used, we don't know when the
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2816
        // css style will be finished loading - and we can only correctly calculate
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2817
        // the height AFTER it has completely loaded.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2818
        var navbar_height = 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2819
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2820
        var dfd1 = $.md.util.repeatUntil(40, function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2821
            navbar_height = $('#md-main-navbar').height();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2822
            return (navbar_height > 35) && (navbar_height < 481);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2823
        }, 25);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2824
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2825
        dfd1.done(function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2826
            navbar_height = $('#md-main-navbar').height();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2827
            set_offset_to_navbar();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2828
            // now bootstrap changes this maybe after a while, again watch for changes
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2829
            var dfd2 = $.md.util.repeatUntil(20, function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2830
                return navbar_height !== $('#md-main-navbar').height();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2831
            }, 25);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2832
            dfd2.done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2833
                // it changed, so we need to change it again
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2834
                set_offset_to_navbar();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2835
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2836
            // and finally, for real slow computers, make sure it is changed if changin very late
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2837
            $.md.util.wait(2000).done(function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2838
                set_offset_to_navbar();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2839
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2840
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2841
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2842
    function buildSubNav() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2843
        // replace with the navbar skeleton
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2844
        /* BROKEN CODE
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2845
        if ($('#md-menu').length <= 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2846
            return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2847
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2848
        navStyle = 'sub';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2849
        var $menuContent = $('#md-menu').html ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2850
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2851
        var menusrc = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2852
        menusrc += '<div id="md-menu-inner" class="subnav">';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2853
        menusrc += '<ul id="md-menu-ul" class="nav nav-pills">';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2854
        menusrc += $menuContent;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2855
        menusrc += '</ul></div>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2856
        $('#md-menu').empty();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2857
        $('#md-menu').wrapInner($(menusrc));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2858
        $('#md-menu').addClass ('col-md-12');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2859
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2860
        $('#md-menu-container').insertAfter ($('#md-title-container'));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2861
        */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2862
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2863
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2864
    function buildMenu () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2865
        if ($('#md-menu a').length === 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2866
            return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2867
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2868
        var h = $('#md-menu');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2869
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2870
        // make toplevel <a> a dropdown
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2871
        h.find('> a[href=""]')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2872
            .attr('data-toggle', 'dropdown')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2873
            .addClass('dropdown-toggle')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2874
            .attr('href','')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2875
            .append('<b class="caret"/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2876
        h.find('ul').addClass('dropdown-menu');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2877
        h.find('ul li').addClass('dropdown');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2878
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2879
        // replace hr with dividers
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2880
        $('#md-menu hr').each(function(i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2881
            var hr = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2882
            var prev = hr.prev();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2883
            var next = hr.next();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2884
            if (prev.is('ul') && prev.length >= 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2885
                prev.append($('<li class="divider"/>'));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2886
                hr.remove();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2887
                if (next.is('ul')) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2888
                    next.find('li').appendTo(prev);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2889
                    next.remove();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2890
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2891
                // next ul should now be empty
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2892
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2893
            return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2894
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2895
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2896
        // remove empty uls
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2897
        $('#md-menu ul').each(function(i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2898
            var ul = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2899
            if (ul.find('li').length === 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2900
                ul.remove();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2901
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2902
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2903
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2904
        $('#md-menu hr').replaceWith($('<li class="divider-vertical"/>'));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2905
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2906
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2907
        // wrap the toplevel links in <li>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2908
        $('#md-menu > a').wrap('<li />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2909
        $('#md-menu ul').each(function(i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2910
            var ul = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2911
            ul.appendTo(ul.prev());
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2912
            ul.parent('li').addClass('dropdown');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2913
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2914
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2915
        // submenu headers
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2916
        $('#md-menu li.dropdown').find('h1, h2, h3').each(function(i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2917
            var $e = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2918
            var text = $e.toptext();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2919
            var header = $('<li class="dropdown-header" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2920
            header.text(text);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2921
            $e.replaceWith(header);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2922
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2923
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2924
        // call the user specifed menu function
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2925
        buildTopNav();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2926
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2927
    function isVisibleInViewport(e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2928
        var el = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2929
        var top = $(window).scrollTop();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2930
        var bottom = top + $(window).height();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2931
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2932
        var eltop = el.offset().top;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2933
        var elbottom = eltop + el.height();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2934
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2935
        return (elbottom <= bottom) && (eltop >= top);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2936
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2937
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2938
    function createPageContentMenu () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2939
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2940
        // assemble the menu
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2941
        var $headings = $('#md-content').find('h2').clone();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2942
        // we dont want the text of any child nodes
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2943
        $headings.children().remove();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2944
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2945
        if ($headings.length <= 1) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2946
            return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2947
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2948
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2949
        $('#md-content').removeClass ('col-md-12');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2950
        $('#md-content').addClass ('col-md-9');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2951
        $('#md-content-row').prepend('<div class="col-md-3" id="md-left-column"/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2952
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2953
        var recalc_width = function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2954
            // if the page menu is affixed, it is not a child of the
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2955
            // <md-left-column> anymore and therefore does not inherit
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2956
            // its width. On every resize, change the class accordingly
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2957
            var width_left_column = $('#md-left-column').css('width');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2958
            $('#md-page-menu').css('width', width_left_column);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2959
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2960
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2961
        $(window).scroll(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2962
            recalc_width($('#md-page-menu'));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2963
            var $first;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2964
            $('*.md-inpage-anchor').each(function(i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2965
                if ($first === undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2966
                    var h = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2967
                    if (isVisibleInViewport(h)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2968
                        $first = h;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2969
                    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2970
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2971
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2972
            // highlight in the right menu
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2973
            $('#md-page-menu a').each(function(i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2974
                var $a = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2975
                if ($first && $a.toptext() === $first.toptext()) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2976
                    $('#md-page-menu a.active').removeClass('active');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2977
                    //$a.parent('a').addClass('active');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2978
                    $a.addClass('active');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2979
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2980
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2981
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2982
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2983
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2984
        var affixDiv = $('<div id="md-page-menu" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2985
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2986
        //var top_spacing = $('#md-menu').height() + 15;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2987
        var top_spacing = 70;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2988
        affixDiv.affix({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2989
            //offset: affix.position() - 50,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2990
            offset: 130
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2991
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2992
        affixDiv.css('top', top_spacing);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2993
        //affix.css('top','-250px');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2994
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2995
        var $pannel = $('<div class="panel panel-default"><ul class="list-group"/></div>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2996
        var $ul = $pannel.find("ul");
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2997
        affixDiv.append($pannel);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2998
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  2999
        $headings.each(function(i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3000
            var $heading = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3001
            var $li = $('<li class="list-group-item" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3002
            var $a = $('<a />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3003
            $a.attr('href', $.md.util.getInpageAnchorHref($heading.toptext()));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3004
            $a.click(function(ev) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3005
                ev.preventDefault();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3006
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3007
                var $this = $(this);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3008
                var anchortext = $.md.util.getInpageAnchorText($this.toptext());
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3009
                $.md.scrollToInPageAnchor(anchortext);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3010
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3011
            $a.text($heading.toptext());
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3012
            $li.append($a);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3013
            $ul.append($li);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3014
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3015
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3016
        $(window).resize(function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3017
            recalc_width($('#md-page-menu'));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3018
            check_offset_to_navbar();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3019
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3020
        $.md.stage('postgimmick').subscribe(function (done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3021
            // recalc_width();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3022
            done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3023
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3024
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3025
        //menu.css('width','100%');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3026
        $('#md-left-column').append(affixDiv);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3027
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3028
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3029
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3030
    function createPageSkeleton() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3031
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3032
        $('#md-title').wrap('<div class="container" id="md-title-container"/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3033
        $('#md-title').wrap('<div class="row" id="md-title-row"/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3034
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3035
        $('#md-menu').wrap('<div class="container" id="md-menu-container"/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3036
        $('#md-menu').wrap('<div class="row" id="md-menu-row"/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3037
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3038
        $('#md-content').wrap('<div class="container" id="md-content-container"/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3039
        $('#md-content').wrap('<div class="row" id="md-content-row"/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3040
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3041
        $('#md-body').wrap('<div class="container" id="md-body-container"/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3042
        $('#md-body').wrap('<div class="row" id="md-body-row"/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3043
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3044
        $('#md-title').addClass('col-md-12');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3045
        $('#md-content').addClass('col-md-12');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3046
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3047
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3048
    function pullRightBumper (){
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3049
 /*     $("span.bumper").each (function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3050
			$this = $(this);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3051
			$this.prev().addClass ("pull-right");
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3052
		});
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3053
		$('span.bumper').addClass ('pull-right');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3054
*/
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3055
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3056
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3057
    function changeHeading() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3058
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3059
        // HEADING
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3060
        var jumbo = $('<div class="page-header" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3061
        $('#md-title').wrapInner(jumbo);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3062
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3063
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3064
    function highlightActiveLink () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3065
        // when no menu is used, return
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3066
        if ($('#md-menu').find ('li').length === 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3067
            return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3068
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3069
		var filename = window.location.hash;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3070
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3071
		if (filename.length === 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3072
            filename = '#!index.md';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3073
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3074
		var selector = 'li:has(a[href="' + filename + '"])';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3075
		$('#md-menu').find (selector).addClass ('active');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3076
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3077
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3078
    // replace all <p> around images with a <div class="thumbnail" >
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3079
    function replaceImageParagraphs() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3080
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3081
        // only select those paragraphs that have images in them
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3082
        var $pars = $('p img').parents('p');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3083
        $pars.each(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3084
            var $p = $(this);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3085
            var $images = $(this).find('img')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3086
                .filter(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3087
                    // only select those images that have no parent anchor
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3088
                    return $(this).parents('a').length === 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3089
                })
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3090
                // add those anchors including images
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3091
                .add($(this).find ('img'))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3092
                .addClass('img-responsive')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3093
                .addClass('img-thumbnail');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3094
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3095
            // create a new url group at the fron of the paragraph
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3096
            //$p.prepend($('<ul class="thumbnails" />'));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3097
            // move the images to the newly created ul
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3098
            //$p.find('ul').eq(0).append($images);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3099
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3100
            // wrap each image with a <li> that limits their space
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3101
            // the number of images in a paragraphs determines thei width / span
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3102
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3103
            // if the image is a link, wrap around the link to avoid
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3104
            function wrapImage ($imgages, wrapElement) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3105
                return $images.each(function (i, img) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3106
                    var $img = $(img);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3107
                    var $parent_img = $img.parent('a');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3108
                    if ($parent_img.length > 0)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3109
                        $parent_img.wrap(wrapElement);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3110
                    else
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3111
                        $img.wrap(wrapElement);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3112
                });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3113
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3114
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3115
            if ($p.hasClass ('md-floatenv')) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3116
                if ($images.length === 1) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3117
                    wrapImage($images, '<div class="col-sm-8" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3118
                } else if ($images.length === 2) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3119
                    wrapImage($images, '<div class="col-sm-4" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3120
                } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3121
                    wrapImage($images, '<div class="col-sm-2" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3122
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3123
            } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3124
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3125
                // non-float => images are on their own single paragraph, make em larger
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3126
                // but remember, our image resizing will make them only as large as they are
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3127
                // but do no upscaling
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3128
                // TODO replace by calculation
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3129
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3130
                if ($images.length === 1) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3131
                    wrapImage($images, '<div class="col-sm-12" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3132
                } else if ($images.length === 2) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3133
                    wrapImage($images, '<div class="col-sm-6" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3134
                } else if ($images.length === 3) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3135
                    wrapImage($images, '<div class="col-sm-4" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3136
                } else if ($images.length === 4) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3137
                    wrapImage($images, '<div class="col-sm-3" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3138
                } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3139
                    wrapImage($images, '<div class="col-sm-2" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3140
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3141
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3142
            $p.addClass('row');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3143
            // finally, every img gets its own wrapping thumbnail div
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3144
            //$images.wrap('<div class="thumbnail" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3145
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3146
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3147
        // apply float to the ul thumbnails
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3148
        //$('.md-floatenv.md-float-left ul').addClass ('pull-left');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3149
        //$('.md-floatenv.md-float-right ul').addClass ('pull-right');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3150
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3151
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3152
    function adjustExternalContent() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3153
        // external content are usually iframes or divs that are integrated
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3154
        // by gimmicks
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3155
        // example: youtube iframes, google maps div canvas
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3156
        // all external content are in the md-external class
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3157
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3158
        $('iframe.md-external').not ('.md-external-nowidth')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3159
            .attr('width', '450')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3160
            .css ('width', '450px');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3161
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3162
        $('iframe.md-external').not ('.md-external-noheight')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3163
            .attr('height', '280')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3164
            .css ('height', '280px');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3165
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3166
        // make it appear like an image thumbnal
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3167
        //$('.md-external').addClass('img-thumbnail');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3168
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3169
        //.wrap($("<ul class='thumbnails' />")).wrap($("<li class='col-md-6' />"));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3170
        $('div.md-external').not('.md-external-noheight')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3171
            .css('height', '280px');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3172
        $('div.md-external').not('.md-external-nowidth')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3173
            .css('width', '450px');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3174
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3175
        // // make it appear like an image thumbnal
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3176
        // $("div.md-external").addClass("thumbnail").wrap($("<ul class='thumbnails' />")).wrap($("<li class='col-md-10' />"));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3177
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3178
        // $("div.md-external-large").css('width', "700px")
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3179
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3180
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3181
    // note: the footer is part of the GPLv3 legal information
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3182
    // and may not be removed or hidden to comply with licensing conditions.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3183
    function addFooter() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3184
        var navbar = '';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3185
        navbar += '<hr><div class="scontainer">';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3186
        navbar +=   '<div class="pull-right md-copyright-footer"> ';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3187
        navbar +=     '<span id="md-footer-additional"></span>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3188
        navbar +=     'Website generated with <a href="http://www.mdwiki.info">MDwiki</a> ';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3189
        navbar +=     '&copy; Timo D&ouml;rr and contributors. ';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3190
        navbar +=   '</div>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3191
        navbar += '</div>';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3192
        var $navbar = $(navbar);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3193
        $navbar.css('position', 'relative');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3194
        $navbar.css('margin-top', '1em');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3195
        $('#md-all').append ($navbar);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3196
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3197
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3198
    function addAdditionalFooterText () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3199
        var text = $.md.config.additionalFooterText;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3200
        if (text) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3201
            $('.md-copyright-footer #md-footer-additional').html(text);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3202
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3203
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3204
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3205
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3206
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3207
    $.gimmicks = $.fn.gimmicks = function(method) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3208
        if (method === undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3209
            return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3210
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3211
        // call the gimmick
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3212
        if ($.fn.gimmicks.methods[method]) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3213
            return $.fn.gimmicks.methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3214
        } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3215
            $.error('Gimmick ' + method + ' does not exist on jQuery.gimmicks');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3216
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3217
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3218
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3219
    // TODO underscores _ in Markdown links are not allowed! bug in our MD imlemenation
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3220
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3221
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3222
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3223
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3224
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3225
    //'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3226
    var alertsGimmick = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3227
        name: 'alerts',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3228
        // TODO
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3229
        //version: $.md.version,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3230
        load: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3231
            $.md.stage('bootstrap').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3232
                createAlerts();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3233
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3234
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3235
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3236
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3237
    $.md.registerGimmick(alertsGimmick);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3238
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3239
    // takes a standard <img> tag and adds a hyperlink to the image source
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3240
    // needed since we scale down images via css and want them to be accessible
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3241
    // in original format
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3242
    function createAlerts() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3243
        var matches = $(select_paragraphs());
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3244
        matches.each(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3245
            var $p = $(this.p);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3246
            var type = this.alertType;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3247
            $p.addClass('alert');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3248
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3249
            if (type === 'note') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3250
                $p.addClass('alert-info');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3251
            } else if (type === 'hint') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3252
                $p.addClass('alert-success');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3253
            } else if (type === 'warning') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3254
                $p.addClass('alert-warning');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3255
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3256
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3257
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3258
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3259
    // picks out the paragraphs that start with a trigger word
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3260
    function select_paragraphs() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3261
        var note = ['note', 'beachte' ];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3262
        var warning = [ 'achtung', 'attention', 'warnung', 'warning', 'atención', 'guarda', 'advertimiento' ];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3263
        var hint = ['hint', 'tipp', 'tip', 'hinweis'];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3264
        var exp = note.concat(warning);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3265
        exp = exp.concat(hint);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3266
        var matches = [];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3267
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3268
        $('p').filter (function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3269
            var $par = $(this);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3270
            // check against each expression
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3271
            $(exp).each (function (i,trigger) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3272
                var txt = $par.text().toLowerCase ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3273
                // we match only paragrachps in which the 'trigger' expression
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3274
                // is follow by a ! or :
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3275
                var re = new RegExp (trigger + '(:|!)+.*','i');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3276
                var alertType = 'none';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3277
                if (txt.match (re) !== null) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3278
                    if ($.inArray(trigger, note) >= 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3279
                        alertType = 'note';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3280
                    } else if ($.inArray(trigger, warning) >= 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3281
                        alertType = 'warning';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3282
                    } else if ($.inArray(trigger, hint) >= 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3283
                        alertType = 'hint';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3284
                    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3285
                    matches.push ({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3286
                        p: $par,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3287
                        alertType: alertType
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3288
                    });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3289
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3290
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3291
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3292
        return matches;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3293
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3294
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3295
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3296
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3297
    // makes trouble, find out why
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3298
    //'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3299
    var colorboxGimmick = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3300
        name: 'colorbox',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3301
        load: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3302
            $.md.stage('gimmick').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3303
                $.gimmicks('colorbox');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3304
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3305
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3306
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3307
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3308
    $.md.registerGimmick(colorboxGimmick);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3309
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3310
    var methods = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3311
        // takes a standard <img> tag and adds a hyperlink to the image source
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3312
        // needed since we scale down images via css and want them to be accessible
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3313
        // in original format
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3314
        colorbox: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3315
            var $image_groups;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3316
            if (!(this instanceof jQuery)) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3317
                // select the image groups of the page
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3318
                $image_groups = $('.md-image-group');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3319
            } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3320
                $image_groups = $(this);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3321
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3322
            // operate on md-image-group, which holds one
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3323
            // or more images that are to be colorbox'ed
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3324
            var counter = 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3325
            return $image_groups.each(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3326
                var $this = $(this);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3327
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3328
                // each group requires a unique name
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3329
                var gal_group = 'gallery-group-' + (counter++);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3330
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3331
                // create a hyperlink around the image
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3332
                $this.find('a.md-image-selfref img')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3333
                // filter out images that already are a hyperlink
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3334
                // (so won't be part of the gallery)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3335
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3336
                // apply colorbox on their parent anchors
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3337
                .parents('a').colorbox({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3338
                    rel: gal_group,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3339
                    opacity: 0.75,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3340
                    slideshow: true,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3341
                    maxWidth: '95%',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3342
                    maxHeight: '95%',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3343
                    scalePhotos: true,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3344
                    photo: true,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3345
                    slideshowAuto: false
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3346
                });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3347
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3348
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3349
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3350
    $.gimmicks.methods = $.extend({}, $.fn.gimmicks.methods, methods);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3351
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3352
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3353
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3354
    'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3355
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3356
    var themeChooserGimmick = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3357
        name: 'Themes',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3358
        version: $.md.version,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3359
        once: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3360
            $.md.linkGimmick(this, 'carousel', carousel);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3361
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3362
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3363
    $.md.registerGimmick(themeChooserGimmick);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3364
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3365
    function carousel($link, opt, href) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3366
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3367
        var $c = $('<div id="myCarousel" class="carousel slide"></div>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3368
        var $d = $('<div class="carousel-inner"/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3369
        $c.append('<ol class="carousel-indicators" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3370
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3371
        var imageUrls = [];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3372
        var i = 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3373
        $.each(href.split(','), function(i, e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3374
            imageUrls.push($.trim(e));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3375
            $c.find('ol').append('<li data-target="#myCarousel" data-slide-to="' + i + '" class="active" /');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3376
            var div;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3377
            if (i === 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3378
                div = ('<div class="active item"/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3379
            } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3380
                div = ('<div class="item"/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3381
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3382
            $d.append($(div).append('<img src="' + e + '"/>'));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3383
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3384
        $c.append($d);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3385
        $c.append('<a class="carousel-control left" href="#myCarousel" data-slide="prev">&lsaquo;</a>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3386
        $c.append('<a class="carousel-control right" href="#myCarousel" data-slide="next">&rsaquo;</a>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3387
        $link.replaceWith($c);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3388
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3389
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3390
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3391
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3392
    var disqusGimmick = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3393
        name: 'disqus',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3394
        version: $.md.version,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3395
        once: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3396
            $.md.linkGimmick(this, 'disqus', disqus);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3397
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3398
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3399
    $.md.registerGimmick(disqusGimmick);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3400
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3401
    var alreadyDone = false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3402
    var disqus = function($links, opt, text) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3403
        var default_options = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3404
            identifier: ''
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3405
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3406
        var options = $.extend (default_options, opt);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3407
        var disqus_div = $('<div id="disqus_thread" class="md-external md-external-noheight md-external-nowidth" >' + '<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a></div>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3408
        disqus_div.css ('margin-top', '2em');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3409
        return $links.each(function(i,link) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3410
            if (alreadyDone === true) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3411
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3412
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3413
            alreadyDone = true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3414
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3415
            var $link = $(link);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3416
            var disqus_shortname = $link.attr('href');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3417
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3418
            if (disqus_shortname !== undefined && disqus_shortname.length > 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3419
                // insert the div
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3420
                $link.remove ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3421
                // since disqus need lot of height, always but it on the bottom of the page
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3422
                $('#md-content').append(disqus_div);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3423
                if ($('#disqus_thread').length > 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3424
                    (function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3425
                        // all disqus_ variables are used by the script, they
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3426
                        // change the config behavious.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3427
                        // see: http://help.disqus.com/customer/portal/articles/472098-javascript-configuration-variables
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3428
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3429
                        // set to 1 if developing, or the site is password protected or not
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3430
                        // publicaly accessible
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3431
                        //var disqus_developer = 1;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3432
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3433
                        // by default, disqus will use the current url to determine a thread
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3434
                        // since we might have different parameters present, we remove them
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3435
                        // disqus_* vars HAVE TO BE IN GLOBAL SCOPE
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3436
                        var disqus_url = window.location.href;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3437
                        var disqus_identifier;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3438
                        if (options.identifier.length > 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3439
                            disqus_identifier = options.identifier;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3440
                        } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3441
                            disqus_identifier = disqus_url;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3442
                        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3443
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3444
                        // dynamically load the disqus script
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3445
                        var dsq = document.createElement('script');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3446
                        dsq.type = 'text/javascript';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3447
                        dsq.async = true;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3448
                        dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3449
                        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3450
                    })();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3451
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3452
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3453
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3454
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3455
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3456
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3457
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3458
    var language = window.navigator.userLanguage || window.navigator.language;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3459
    var code = language + "_" + language.toUpperCase();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3460
    var fbRootDiv = $('<div id="fb-root" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3461
    var fbScriptHref = $.md.prepareLink ('connect.facebook.net/' + code + '/all.js#xfbml=1', { forceHTTP: true });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3462
    var fbscript ='(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "' + fbScriptHref + '"; fjs.parentNode.insertBefore(js, fjs);}(document, "script", "facebook-jssdk"));';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3463
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3464
    var facebookLikeGimmick = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3465
        name: 'FacebookLike',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3466
        version: $.md.version,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3467
        once: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3468
            $.md.linkGimmick(this, 'facebooklike', facebooklike);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3469
            $.md.registerScript(this, fbscript, {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3470
                license: 'APACHE2',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3471
                loadstage: 'postgimmick',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3472
                finishstage: 'all_ready'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3473
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3474
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3475
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3476
    $.md.registerGimmick(facebookLikeGimmick);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3477
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3478
    function facebooklike($link, opt, text) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3479
        var default_options = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3480
            layout: 'standard',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3481
            showfaces: true
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3482
        };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3483
        var options = $.extend ({}, default_options, opt);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3484
        // Due to a bug, we can have underscores _ in a markdown link
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3485
        // so we insert the underscores needed by facebook here
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3486
        if (options.layout === 'boxcount') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3487
            options.layout = 'box_count';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3488
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3489
        if (options.layout === 'buttoncount') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3490
            options.layout = 'button_count';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3491
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3492
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3493
        return $link.each(function(i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3494
            var $this = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3495
            var href = $this.attr('href');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3496
            $('body').append(fbRootDiv);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3497
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3498
            var $fb_div = $('<div class="fb-like" data-send="false" data-width="450"></div>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3499
            $fb_div.attr ('data-href', href);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3500
            $fb_div.attr ('data-layout', options.layout);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3501
            $fb_div.attr ('data-show-faces', options.showfaces);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3502
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3503
            $this.replaceWith ($fb_div);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3504
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3505
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3506
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3507
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3508
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3509
    'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3510
    var forkmeongithubGimmick = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3511
        name: 'forkmeongithub',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3512
        version: $.md.version,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3513
        once: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3514
            $.md.linkGimmick(this, 'forkmeongithub', forkmeongithub);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3515
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3516
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3517
    $.md.registerGimmick(forkmeongithubGimmick);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3518
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3519
    function forkmeongithub($links, opt, text) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3520
        return $links.each (function (i, link){
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3521
            var $link = $(link);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3522
            // default options
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3523
            var default_options = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3524
                color: 'red',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3525
                position : 'right'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3526
            };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3527
            var options = $.extend ({}, default_options, opt);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3528
            var color = options.color;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3529
            var pos = options.position;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3530
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3531
            // the filename for the ribbon
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3532
            // see: https://github.com/blog/273-github-ribbons
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3533
            var base_href = 'https://s3.amazonaws.com/github/ribbons/forkme_';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3534
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3535
            if (color === 'red') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3536
                base_href += pos + '_red_aa0000.png';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3537
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3538
            if (color === 'green') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3539
                base_href += pos + '_green_007200.png';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3540
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3541
            if (color === 'darkblue') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3542
                base_href += pos + '_darkblue_121621.png';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3543
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3544
            if (color === 'orange') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3545
                base_href += pos + '_orange_ff7600.png';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3546
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3547
            if (color === 'white') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3548
                base_href += pos + '_white_ffffff.png';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3549
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3550
            if (color === 'gray') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3551
                base_href += pos + '_gray_6d6d6d.png';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3552
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3553
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3554
            var href = $link.attr('href');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3555
    //                var body_pos_top = $('#md-body').offset ().top;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3556
            var body_pos_top = 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3557
            var github_link = $('<a class="forkmeongithub" href="'+ href +'"><img style="position: absolute; top: ' + body_pos_top + ';'+pos+': 0; border: 0;" src="'+base_href+'" alt="Fork me on GitHub"></a>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3558
            // to avoid interfering with other div / scripts, we remove the link and prepend it to the body
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3559
            // the fork me ribbon is positioned absolute anyways
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3560
            $('body').prepend (github_link);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3561
            github_link.find('img').css ('z-index', '2000');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3562
            $link.remove();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3563
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3564
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3565
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3566
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3567
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3568
(function($){
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3569
    'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3570
    var gistGimmick = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3571
        name: 'gist',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3572
        once: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3573
            $.md.linkGimmick(this, 'gist', gist);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3574
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3575
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3576
    $.md.registerGimmick(gistGimmick);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3577
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3578
    function gist($links, opt, href) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3579
        $().lazygist('init');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3580
        return $links.each(function(i,link) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3581
            var $link = $(link);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3582
            var gistDiv = $('<div class="gist_here" data-id="' + href + '" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3583
            $link.replaceWith(gistDiv);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3584
            gistDiv.lazygist({
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3585
                // we dont want a specific file so modify the url template
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3586
                url_template: 'https://gist.github.com/{id}.js?'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3587
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3588
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3589
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3590
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3591
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3592
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3593
 /**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3594
 * Lazygist v0.2pre
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3595
 *
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3596
 * a jQuery plugin that will lazy load your gists.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3597
 *
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3598
 * since jQuery 1.7.2
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3599
 * https://github.com/tammo/jquery-lazy-gist
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3600
 *
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3601
 * Copyright, Tammo Pape
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3602
 * http://tammopape.de
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3603
 *
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3604
 * Licensed under the MIT license.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3605
 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3606
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3607
(function( $, window, document, undefined ){
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3608
    "use strict";
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3609
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3610
    //
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3611
    // note:
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3612
    // this plugin is not stateful
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3613
    // and will not communicate with own instances at different elements
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3614
    //
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3615
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3616
    var pluginName = "lazygist",
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3617
    version = "0.2pre",
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3618
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3619
    defaults = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3620
        // adding the ?file parameter to choose a file
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3621
        'url_template': 'https://gist.github.com/{id}.js?file={file}',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3622
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3623
        // if these are strings, the attributes will be read from the element
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3624
        'id': 'data-id',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3625
        'file': 'data-file'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3626
    },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3627
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3628
    options,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3629
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3630
    // will be replaced
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3631
    /*jshint -W060 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3632
    originwrite = document.write,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3633
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3634
    // stylesheet urls found in document.write calls
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3635
    // they are cached to write them once to the document,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3636
    // not three times for three gists
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3637
    stylesheets = [],
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3638
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3639
    // cache gist-ids to know which are already appended to the dom
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3640
    ids_dom = [],
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3641
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3642
    // remember gist-ids if their javascript is already loaded
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3643
    ids_ajax = [],
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3644
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3645
    methods = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3646
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3647
        /**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3648
         * Standard init function
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3649
         * No magic here
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3650
         */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3651
        init : function( options_input ){
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3652
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3653
            // default options are default
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3654
            options = $.extend({}, defaults, options_input);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3655
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3656
            // can be reset
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3657
            /*jshint -W061 */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3658
            document.write = _write;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3659
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3660
            $.each(options, function(index, value) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3661
                if(typeof value !== 'string') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3662
                    throw new TypeError(value + ' (' + (typeof value) + ') is not a string');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3663
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3664
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3665
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3666
            return this.lazygist('load');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3667
        },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3668
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3669
        /**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3670
         * Load the gists
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3671
         */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3672
        load : function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3673
            // (1) iterate over gist anchors
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3674
            // (2) append the gist-html through the new document.write func (see _write)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3675
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3676
            // (1)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3677
            return this.filter('[' + options.id + ']').each(function(){
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3678
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3679
                var id = $(this).attr(options.id),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3680
                    file = $(this).attr(options.file),
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3681
                    src;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3682
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3683
                if( id !== undefined ) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3684
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3685
                    if( $.inArray(id, ids_ajax) !== -1 ) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3686
                        // just do nothin, if gist is already ajaxed
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3687
                        return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3688
                    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3689
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3690
                    ids_ajax.push(id);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3691
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3692
                    src = options.url_template.replace(/\{id\}/g, id).replace(/\{file\}/g, file);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3693
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3694
                    // (2) this will trigger our _write function
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3695
                    $.getScript(src, function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3696
                    });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3697
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3698
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3699
        },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3700
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3701
        /**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3702
         * Just reset the write function
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3703
         */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3704
        reset_write: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3705
            document.write = originwrite;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3706
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3707
            return this;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3708
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3709
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3710
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3711
    /**
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3712
     * private special document.write function
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3713
     *
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3714
     * Filters the css file from github.com to add it to the head - once -
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3715
     *
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3716
     * It has a fallback to keep flexibility with other scripts as high as possible
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3717
     * (create a ticket if it messes things up!)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3718
     *
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3719
     * Keep in mind, that a call to this function happens after
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3720
     * an ajax call by jQuery. One *cannot* know which gist-anchor
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3721
     * to use. You can only read the id from the content.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3722
     */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3723
    function _write( content ) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3724
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3725
        var expression, // for regexp results
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3726
            href, // from the url
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3727
            id; // from the content
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3728
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3729
        if( content.indexOf( 'rel="stylesheet"' ) !== -1 ) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3730
            href = $(content).attr('href');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3731
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3732
            // check if stylesheet is already inserted
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3733
            if ( $.inArray(href, stylesheets) === -1 ) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3734
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3735
                $('head').append(content);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3736
                stylesheets.push(href);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3737
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3738
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3739
        } else if( content.indexOf( 'id="gist' ) !== -1 ) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3740
            expression = /gist([\d]{1,})/g.exec(content);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3741
            id = expression[1];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3742
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3743
            if( id !== undefined ) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3744
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3745
                // test if id is already loaded
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3746
                if( $.inArray(id, ids_dom) !== -1 ) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3747
                    // just do nothin, if gist is already attached to the dom
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3748
                    return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3749
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3750
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3751
                ids_dom.push(id);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3752
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3753
                $('.gist_here[data-id=' + id + ']').append(content);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3754
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3755
        } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3756
            // this is a fallback for interoperability
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3757
            originwrite.apply( document, arguments );
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3758
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3759
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3760
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3761
    // method invocation - from jQuery.com
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3762
    $.fn[pluginName] = function( method ) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3763
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3764
        if ( methods[method] ) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3765
            return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3766
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3767
        } else if ( typeof method === 'object' || ! method ) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3768
            return methods.init.apply( this, arguments );
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3769
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3770
        } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3771
            $.error( 'Method ' +  method + ' does not exist on jQuery.lazygist' );
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3772
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3773
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3774
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3775
    // expose version for your interest
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3776
    $.fn[pluginName].version = version;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3777
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3778
})(jQuery, window, document);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3779
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3780
// ugly, but the google loader requires the callback fn
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3781
// to be in the global scope
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3782
var googlemapsLoadDone;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3783
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3784
function googlemapsReady() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3785
    googlemapsLoadDone.resolve();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3786
}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3787
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3788
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3789
    //'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3790
    var scripturl = 'http://maps.google.com/maps/api/js?sensor=false&callback=googlemapsReady';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3791
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3792
    function googlemaps($links, opt, text) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3793
        var $maps_links = $links;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3794
        var counter = (new Date()).getTime ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3795
        return $maps_links.each(function(i,e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3796
            var $link = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3797
            var default_options = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3798
                zoom: 11,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3799
                marker: true,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3800
                scrollwheel: false,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3801
                maptype: 'roadmap'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3802
            };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3803
            var options = $.extend({}, default_options, opt);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3804
            if (options.address === undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3805
                options.address = $link.attr ('href');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3806
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3807
            var div_id = 'google-map-' + Math.floor (Math.random() * 100000);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3808
            var $mapsdiv = $('<div class="md-external md-external-nowidth" id="' + div_id + '"/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3809
            /* TODO height & width must be set AFTER the theme script went through
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3810
            implement an on event, maybe?
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3811
            if (options["width"] !== undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3812
                $mapsdiv.css('width', options["width"] + "px");
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3813
                options["width"] = null;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3814
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3815
            if (options["height"] !== undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3816
                $mapsdiv.css('height', options["height"] + "px");
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3817
                options["height"] = null;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3818
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3819
            */
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3820
            $link.replaceWith ($mapsdiv);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3821
            // the div is already put into the site and will be formated,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3822
            // we can now run async
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3823
            set_map (options, div_id);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3824
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3825
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3826
    function set_map(opt, div_id) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3827
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3828
        // google uses rather complicated mapnames, we transform our simple ones
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3829
        var mt = opt.maptype.toUpperCase ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3830
        opt.mapTypeId = google.maps.MapTypeId[mt];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3831
        var geocoder = new google.maps.Geocoder ();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3832
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3833
        // geocode performs address to coordinate transformation
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3834
        geocoder.geocode ({ address: opt.address }, function (result, status) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3835
            if (status !== 'OK') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3836
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3837
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3838
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3839
            // add the retrieved coords to the options object
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3840
            var coords = result[0].geometry.location;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3841
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3842
            var options = $.extend({}, opt, { center: coords  });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3843
            var gmap = new google.maps.Map(document.getElementById(div_id), options);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3844
            if (options.marker === true) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3845
                var marker = new google.maps.Marker ({ position: coords, map : gmap});
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3846
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3847
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3848
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3849
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3850
    var googleMapsGimmick = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3851
        name: 'googlemaps',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3852
        version: $.md.version,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3853
        once: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3854
            googlemapsLoadDone = $.Deferred();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3855
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3856
            // register the gimmick:googlemaps identifier
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3857
            $.md.linkGimmick(this, 'googlemaps', googlemaps);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3858
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3859
            // load the googlemaps js from the google server
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3860
            $.md.registerScript(this, scripturl, {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3861
                license: 'EXCEPTION',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3862
                loadstage: 'skel_ready',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3863
                finishstage: 'bootstrap'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3864
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3865
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3866
            $.md.stage('bootstrap').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3867
                // defer the pregimmick phase until the google script fully loaded
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3868
                if ($.md.triggerIsActive('googlemaps')) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3869
                    googlemapsLoadDone.done(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3870
                        done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3871
                    });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3872
                } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3873
                    // immediately return as there will never a load success
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3874
                    done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3875
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3876
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3877
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3878
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3879
    $.md.registerGimmick(googleMapsGimmick);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3880
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3881
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3882
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3883
    var highlightGimmick = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3884
        name: 'highlight',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3885
        load: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3886
            $.md.stage('gimmick').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3887
                highlight();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3888
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3889
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3890
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3891
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3892
    $.md.registerGimmick(highlightGimmick);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3893
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3894
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3895
    function highlight () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3896
        // marked adds lang-ruby, lang-csharp etc to the <code> block like in GFM
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3897
        var $codeblocks = $('pre code[class^=lang-]');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3898
        return $codeblocks.each(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3899
            var $this = $(this);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3900
            var classes = $this.attr('class');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3901
            // TODO check for other classes and only find the lang- one
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3902
            // highlight doesnt want a lang- prefix
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3903
            var lang = classes.substring(5);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3904
            $this.removeClass(classes);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3905
            $this.addClass(lang);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3906
            var x = hljs.highlightBlock($this[0]);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3907
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3908
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3909
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3910
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3911
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3912
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3913
    'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3914
    var iframeGimmick= {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3915
        name: 'forkmeongithub',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3916
        version: $.md.version,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3917
        once: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3918
            $.md.linkGimmick(this, 'iframe', create_iframe);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3919
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3920
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3921
    $.md.registerGimmick(iframeGimmick);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3922
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3923
    function create_iframe($links, opt, text) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3924
        return $links.each (function (i, link){
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3925
            var $link = $(link);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3926
            var href = $link.attr('href');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3927
            var $iframe = $('<iframe class="col-md-12" style="border: 0px solid red; height: 650px;"></iframe>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3928
            $iframe.attr('src', href);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3929
            $link.replaceWith($iframe);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3930
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3931
            if (opt.width)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3932
                $iframe.css('width', opt.width);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3933
            if (opt.height)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3934
                $iframe.css('height', opt.height);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3935
            else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3936
                var updateSizeFn = function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3937
                    var offset = $iframe.offset();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3938
                    var winHeight = $(window).height();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3939
                    var newHeight = winHeight - offset.top - 5;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3940
                    $iframe.height(newHeight);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3941
                };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3942
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3943
                $iframe.load(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3944
                    updateSizeFn();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3945
                });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3946
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3947
                $(window).resize(function () {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3948
                    updateSizeFn();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3949
                });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3950
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3951
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3952
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3953
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3954
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3955
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3956
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3957
    var mathGimmick = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3958
        name: 'math',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3959
        once: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3960
            $.md.linkGimmick(this, 'math', load_mathjax);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3961
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3962
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3963
    $.md.registerGimmick(mathGimmick);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3964
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3965
    function load_mathjax($links, opt, ref) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3966
        $links.remove();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3967
        var script = document.createElement('script');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3968
        script.type = 'text/javascript';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3969
        script.src  = $.md.prepareLink('cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML', { forceHTTP: true });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3970
        document.getElementsByTagName('head')[0].appendChild(script);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3971
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3972
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3973
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3974
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3975
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3976
    'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3977
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3978
    var themes = [
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3979
        { name: 'bootstrap', url: 'netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css' },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3980
        { name: 'amelia', url: 'netdna.bootstrapcdn.com/bootswatch/3.0.0/amelia/bootstrap.min.css' },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3981
        { name: 'cerulean', url: 'netdna.bootstrapcdn.com/bootswatch/3.0.0/cerulean/bootstrap.min.css' },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3982
        { name: 'cosmo', url: 'netdna.bootstrapcdn.com/bootswatch/3.0.0/cosmo/bootstrap.min.css' },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3983
        { name: 'cyborg', url: 'netdna.bootstrapcdn.com/bootswatch/3.0.0/cyborg/bootstrap.min.css' },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3984
        { name: 'flatly', url: 'netdna.bootstrapcdn.com/bootswatch/3.0.0/flatly/bootstrap.min.css' },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3985
        { name: 'journal', url: 'netdna.bootstrapcdn.com/bootswatch/3.0.0/journal/bootstrap.min.css' },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3986
        { name: 'readable', url: 'netdna.bootstrapcdn.com/bootswatch/3.0.0/readable/bootstrap.min.css' },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3987
        { name: 'simplex', url: 'netdna.bootstrapcdn.com/bootswatch/3.0.0/simplex/bootstrap.min.css' },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3988
        { name: 'slate', url: 'netdna.bootstrapcdn.com/bootswatch/3.0.0/slate/bootstrap.min.css' },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3989
        { name: 'spacelab', url: 'netdna.bootstrapcdn.com/bootswatch/3.0.0/spacelab/bootstrap.min.css' },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3990
        { name: 'united', url: 'netdna.bootstrapcdn.com/bootswatch/3.0.0/united/bootstrap.min.css' },
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3991
        { name: 'yeti', url: 'netdna.bootstrapcdn.com/bootswatch/3.0.2/yeti/bootstrap.min.css' }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3992
    ];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3993
    var themeChooserGimmick = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3994
        name: 'Themes',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3995
        version: $.md.version,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3996
        once: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3997
            $.md.linkGimmick(this, 'themechooser', themechooser, 'skel_ready');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3998
            $.md.linkGimmick(this, 'theme', apply_theme);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  3999
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4000
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4001
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4002
    $.md.registerGimmick(themeChooserGimmick);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4003
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4004
    var log = $.md.getLogger();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4005
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4006
    var set_theme = function(theme) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4007
        theme.inverse = theme.inverse || false;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4008
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4009
        if (theme.url === undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4010
            if (!theme.name) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4011
                log.error('Theme name must be given!');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4012
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4013
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4014
            var saved_theme = themes.filter(function(t) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4015
                return t.name === theme.name;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4016
            })[0];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4017
            if (!saved_theme) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4018
                log.error('Theme ' + name + ' not found, removing link')    ;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4019
                return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4020
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4021
            theme = $.extend(theme, saved_theme);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4022
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4023
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4024
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4025
        $('link[rel=stylesheet][href*="netdna.bootstrapcdn.com"]')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4026
            .remove();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4027
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4028
        // slim instance has no bootstrap hardcoded in
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4029
        var has_default_bootstrap_css = $('style[id*=bootstrap]').length > 0;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4030
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4031
        if (theme.name !== 'bootstrap' || !has_default_bootstrap_css) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4032
            // in devel & fat version the style is inlined, remove it
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4033
            $('style[id*=bootstrap]').remove();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4034
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4035
            $('<link rel="stylesheet" type="text/css">')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4036
                .attr('href', $.md.prepareLink(theme.url))
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4037
                .appendTo('head');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4038
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4039
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4040
        if (theme.inverse === true) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4041
            $('#md-main-navbar').removeClass ('navbar-default');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4042
            $('#md-main-navbar').addClass ('navbar-inverse');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4043
        } else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4044
            $('#md-main-navbar').addClass ('navbar-default');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4045
            $('#md-main-navbar').removeClass ('navbar-inverse');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4046
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4047
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4048
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4049
    var apply_theme = function($links, opt, text) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4050
        opt.name = opt.name || text;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4051
        $links.each(function(i, link) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4052
            $.md.stage('postgimmick').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4053
                var $link = $(link);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4054
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4055
                // only set a theme if no theme from the choser is selected
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4056
                if (window.localStorage.theme === undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4057
                    set_theme(opt);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4058
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4059
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4060
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4061
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4062
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4063
        $links.remove();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4064
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4065
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4066
    var themechooser = function($links, opt, text) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4067
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4068
        $.md.stage('bootstrap').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4069
            restore_theme(opt);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4070
            done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4071
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4072
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4073
        return $links.each(function(i, e) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4074
            var $this = $(e);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4075
            var $chooser = $('<a href=""></a><ul></ul>'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4076
            );
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4077
            $chooser.eq(0).text(text);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4078
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4079
            $.each(themes, function(i, theme) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4080
                var $li = $('<li></li>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4081
                $chooser.eq(1).append($li);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4082
                var $a = $('<a/>')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4083
                    .text(theme.name)
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4084
                    .attr('href', '')
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4085
                    .click(function(ev) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4086
                        ev.preventDefault();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4087
                        window.localStorage.theme = theme.name;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4088
                        window.location.reload();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4089
                    })
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4090
                    .appendTo($li);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4091
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4092
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4093
            $chooser.eq(1).append('<li class="divider" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4094
            var $li = $('<li/>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4095
            var $a_use_default = $('<a>Use default</a>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4096
            $a_use_default.click(function(ev) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4097
                ev.preventDefault();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4098
                window.localStorage.removeItem('theme');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4099
                window.location.reload();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4100
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4101
            $li.append($a_use_default);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4102
            $chooser.eq(1).append($li);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4103
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4104
            $chooser.eq(1).append('<li class="divider" />');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4105
            $chooser.eq(1).append('<li><a href="http://www.bootswatch.com">Powered by Bootswatch</a></li>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4106
            $this.replaceWith($chooser);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4107
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4108
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4109
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4110
    var restore_theme = function(opt) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4111
        if (window.localStorage.theme) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4112
            opt = $.extend({ name: window.localStorage.theme }, opt);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4113
            set_theme(opt);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4114
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4115
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4116
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4117
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4118
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4119
    //'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4120
    // no license information given in the widget.js -> OTHER
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4121
    var widgetHref = $.md.prepareLink('platform.twitter.com/widgets.js');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4122
    var twitterscript = '!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="' + widgetHref + '";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4123
    var twitterGimmick = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4124
        name: 'TwitterGimmick',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4125
        version: $.md.version,
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4126
        once: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4127
            $.md.linkGimmick(this, 'twitterfollow', twitterfollow);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4128
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4129
            $.md.registerScript(this, twitterscript, {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4130
                license: 'EXCEPTION',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4131
                loadstage: 'postgimmick',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4132
                finishstage: 'all_ready'
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4133
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4134
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4135
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4136
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4137
    $.md.registerGimmick(twitterGimmick);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4138
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4139
	var twitterfollow = function($links, opt, text) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4140
		return $links.each(function(i, link) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4141
			var $link = $(link);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4142
			var user;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4143
			var href = $link.attr('href');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4144
			if (href.indexOf ('twitter.com') <= 0) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4145
				user = $link.attr('href');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4146
				href = $.md.prepareLink('twitter.com/' + user);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4147
			}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4148
			else {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4149
				return;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4150
			}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4151
			// remove the leading @ if given
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4152
			if (user[0] === '@') {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4153
				user = user.substring(1);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4154
			}
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4155
			var twitter_src = $('<a href="' + href + '" class="twitter-follow-button" data-show-count="false" data-lang="en" data-show-screen-name="false">'+ '@' + user + '</a>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4156
			$link.replaceWith (twitter_src);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4157
		});
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4158
    };
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4159
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4160
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4161
(function($) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4162
    //'use strict';
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4163
    var youtubeGimmick = {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4164
        name: 'youtube',
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4165
        load: function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4166
            $.md.stage('gimmick').subscribe(function(done) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4167
                youtubeLinkToIframe();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4168
                done();
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4169
            });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4170
        }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4171
    } ;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4172
    $.md.registerGimmick(youtubeGimmick);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4173
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4174
    function youtubeLinkToIframe() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4175
        var $youtube_links = $('a[href*=youtube\\.com]:empty, a[href*=youtu\\.be]:empty');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4176
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4177
        $youtube_links.each(function() {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4178
            var $this = $(this);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4179
            var href = $this.attr('href');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4180
            if (href !== undefined) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4181
                // extract the v parameter from youtube
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4182
                var exp = /.*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*/;
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4183
                var m = href.match(exp);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4184
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4185
                if (m && m[1].length === 11) {
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4186
                    // insert the iframe
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4187
                    var short_handle = m[1];
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4188
                    var frame = $('<iframe class="md-external" frameborder="0" allowfullscreen></iframe>');
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4189
                    frame.attr('src', 'http://youtube.com/embed/' + short_handle);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4190
                    // remove the a tag
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4191
                    $this.replaceWith(frame);
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4192
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4193
                }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4194
            }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4195
        });
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4196
    }
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4197
}(jQuery));
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4198
</script>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4199
<!-- END dist/MDwiki.js -->
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4200
<script type="text/javascript">$.md.logThreshold = $.md.loglevel.DEBUG;</script>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4201
</head>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4202
<body>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4203
    <noscript>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4204
        This website requires Javascript to be enabled. Please turn on Javascript
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4205
        and reload the page.
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4206
    </noscript>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4207
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4208
    <div id="md-all">
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4209
    </div>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4210
</body>
1b2dffb4ac2b add wiki (wikimd)
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff changeset
  4211
</html>