web/data/cubicweb.timeline-bundle.js
author Pierre-Yves David <pierre-yves.david@logilab.fr>
Fri, 15 Oct 2010 17:00:09 +0200
branchstable
changeset 6514 f328ec853e18
parent 5774 0d792bceb25d
child 7529 2fdc310be7cd
permissions -rw-r--r--
[devtools] Firefox need write access to $HOME Check that you have write acces to the user home before launching Firefox. Firefox need to write stuff in the home directory of the user and will silency crash when unable to do it. We add an assertion with an explicite message to improve crash report in such situation.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
     1
var SimileAjax_urlPrefix = baseuri() + 'data/';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
     2
var Timeline_urlPrefix = baseuri() + 'data/';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
     3
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
     4
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
     5
 *  Simile Ajax API
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
     6
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
     7
 *  Include this file in your HTML file as follows:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
     8
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
     9
 *    <script src="http://simile.mit.edu/ajax/api/simile-ajax-api.js" type="text/javascript"></script>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    10
 *
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
    11
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    12
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    13
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    14
if (typeof SimileAjax == "undefined") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    15
    var SimileAjax = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    16
        loaded:                 false,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    17
        loadingScriptsCount:    0,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    18
        error:                  null,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    19
        params:                 { bundle:"true" }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    20
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    21
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    22
    SimileAjax.Platform = new Object();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    23
        /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    24
            HACK: We need these 2 things here because we cannot simply append
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    25
            a <script> element containing code that accesses SimileAjax.Platform
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    26
            to initialize it because IE executes that <script> code first
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    27
            before it loads ajax.js and platform.js.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    28
        */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    29
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    30
    var getHead = function(doc) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    31
        return doc.getElementsByTagName("head")[0];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    32
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    33
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    34
    SimileAjax.findScript = function(doc, substring) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    35
        var heads = doc.documentElement.getElementsByTagName("head");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    36
        for (var h = 0; h < heads.length; h++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    37
            var node = heads[h].firstChild;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    38
            while (node != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    39
                if (node.nodeType == 1 && node.tagName.toLowerCase() == "script") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    40
                    var url = node.src;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    41
                    var i = url.indexOf(substring);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    42
                    if (i >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    43
                        return url;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    44
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    45
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    46
                node = node.nextSibling;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    47
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    48
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    49
        return null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    50
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    51
    SimileAjax.includeJavascriptFile = function(doc, url, onerror, charset) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    52
        onerror = onerror || "";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    53
        if (doc.body == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    54
            try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    55
                var q = "'" + onerror.replace( /'/g, '&apos' ) + "'"; // "
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    56
                doc.write("<script src='" + url + "' onerror="+ q +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    57
                          (charset ? " charset='"+ charset +"'" : "") +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    58
                          " type='text/javascript'>"+ onerror + "</script>");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    59
                return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    60
            } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    61
                // fall through
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    62
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    63
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    64
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    65
        var script = doc.createElement("script");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    66
        if (onerror) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    67
            try { script.innerHTML = onerror; } catch(e) {}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    68
            script.setAttribute("onerror", onerror);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    69
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    70
        if (charset) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    71
            script.setAttribute("charset", charset);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    72
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    73
        script.type = "text/javascript";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    74
        script.language = "JavaScript";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    75
        script.src = url;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    76
        return getHead(doc).appendChild(script);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    77
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    78
    SimileAjax.includeJavascriptFiles = function(doc, urlPrefix, filenames) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    79
        for (var i = 0; i < filenames.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    80
            SimileAjax.includeJavascriptFile(doc, urlPrefix + filenames[i]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    81
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    82
        SimileAjax.loadingScriptsCount += filenames.length;
2097
400bdbcc5699 [javascript] timeline is already bundled, don't try to include dynamically other js files
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1156
diff changeset
    83
        // XXX adim SimileAjax.includeJavascriptFile(doc, SimileAjax.urlPrefix + "scripts/signal.js?" + filenames.length);
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    84
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    85
    SimileAjax.includeCssFile = function(doc, url) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    86
        if (doc.body == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    87
            try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    88
                doc.write("<link rel='stylesheet' href='" + url + "' type='text/css'/>");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    89
                return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    90
            } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    91
                // fall through
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    92
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    93
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    94
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    95
        var link = doc.createElement("link");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    96
        link.setAttribute("rel", "stylesheet");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    97
        link.setAttribute("type", "text/css");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    98
        link.setAttribute("href", url);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
    99
        getHead(doc).appendChild(link);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   100
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   101
    SimileAjax.includeCssFiles = function(doc, urlPrefix, filenames) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   102
        for (var i = 0; i < filenames.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   103
            SimileAjax.includeCssFile(doc, urlPrefix + filenames[i]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   104
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   105
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   106
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   107
    /**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   108
     * Append into urls each string in suffixes after prefixing it with urlPrefix.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   109
     * @param {Array} urls
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   110
     * @param {String} urlPrefix
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   111
     * @param {Array} suffixes
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   112
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   113
    SimileAjax.prefixURLs = function(urls, urlPrefix, suffixes) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   114
        for (var i = 0; i < suffixes.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   115
            urls.push(urlPrefix + suffixes[i]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   116
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   117
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   118
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   119
    /**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   120
     * Parse out the query parameters from a URL
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   121
     * @param {String} url    the url to parse, or location.href if undefined
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   122
     * @param {Object} to     optional object to extend with the parameters
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   123
     * @param {Object} types  optional object mapping keys to value types
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   124
     *        (String, Number, Boolean or Array, String by default)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   125
     * @return a key/value Object whose keys are the query parameter names
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   126
     * @type Object
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   127
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   128
    SimileAjax.parseURLParameters = function(url, to, types) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   129
        to = to || {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   130
        types = types || {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   131
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   132
        if (typeof url == "undefined") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   133
            url = location.href;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   134
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   135
        var q = url.indexOf("?");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   136
        if (q < 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   137
            return to;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   138
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   139
        url = (url+"#").slice(q+1, url.indexOf("#")); // toss the URL fragment
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   140
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   141
        var params = url.split("&"), param, parsed = {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   142
        var decode = window.decodeURIComponent || unescape;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   143
        for (var i = 0; param = params[i]; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   144
            var eq = param.indexOf("=");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   145
            var name = decode(param.slice(0,eq));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   146
            var old = parsed[name];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   147
            if (typeof old == "undefined") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   148
                old = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   149
            } else if (!(old instanceof Array)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   150
                old = [old];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   151
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   152
            parsed[name] = old.concat(decode(param.slice(eq+1)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   153
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   154
        for (var i in parsed) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   155
            if (!parsed.hasOwnProperty(i)) continue;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   156
            var type = types[i] || String;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   157
            var data = parsed[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   158
            if (!(data instanceof Array)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   159
                data = [data];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   160
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   161
            if (type === Boolean && data[0] == "false") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   162
                to[i] = false; // because Boolean("false") === true
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   163
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   164
                to[i] = type.apply(this, data);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   165
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   166
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   167
        return to;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   168
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   169
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   170
    (function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   171
        var javascriptFiles = [
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   172
            "jquery-1.2.6.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   173
            "platform.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   174
            "debug.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   175
            "xmlhttp.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   176
            "json.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   177
            "dom.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   178
            "graphics.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   179
            "date-time.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   180
            "string.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   181
            "html.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   182
            "data-structure.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   183
            "units.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   184
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   185
            "ajax.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   186
            "history.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   187
            "window-manager.js"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   188
        ];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   189
        var cssFiles = [
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   190
            "graphics.css"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   191
        ];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   192
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   193
        if (typeof SimileAjax_urlPrefix == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   194
            SimileAjax.urlPrefix = SimileAjax_urlPrefix;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   195
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   196
            var url = SimileAjax.findScript(document, "simile-ajax-api.js");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   197
            if (url == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   198
                SimileAjax.error = new Error("Failed to derive URL prefix for Simile Ajax API code files");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   199
                return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   200
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   201
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   202
            SimileAjax.urlPrefix = url.substr(0, url.indexOf("simile-ajax-api.js"));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   203
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   204
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   205
        SimileAjax.parseURLParameters(url, SimileAjax.params, {bundle:Boolean});
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   206
//         if (SimileAjax.params.bundle) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   207
//             SimileAjax.includeJavascriptFiles(document, SimileAjax.urlPrefix, [ "simile-ajax-bundle.js" ]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   208
//         } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   209
//             SimileAjax.includeJavascriptFiles(document, SimileAjax.urlPrefix + "scripts/", javascriptFiles);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   210
//         }
2097
400bdbcc5699 [javascript] timeline is already bundled, don't try to include dynamically other js files
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1156
diff changeset
   211
//         SimileAjax.includeCssFiles(document, SimileAjax.urlPrefix + "styles/", cssFiles);
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   212
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   213
        SimileAjax.loaded = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   214
    })();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   215
}
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
   216
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   217
 *  Platform Utility Functions and Constants
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
   218
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   219
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   220
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   221
/*  This must be called after our jQuery has been loaded
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   222
    but before control returns to user-code.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   223
*/
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   224
SimileAjax.jQuery = jQuery;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   225
// SimileAjax.jQuery = jQuery.noConflict(true);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   226
if (typeof window["$"] == "undefined") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   227
    window.$ = SimileAjax.jQuery;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   228
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   229
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   230
SimileAjax.Platform.os = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   231
    isMac:   false,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   232
    isWin:   false,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   233
    isWin32: false,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   234
    isUnix:  false
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   235
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   236
SimileAjax.Platform.browser = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   237
    isIE:           false,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   238
    isNetscape:     false,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   239
    isMozilla:      false,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   240
    isFirefox:      false,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   241
    isOpera:        false,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   242
    isSafari:       false,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   243
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   244
    majorVersion:   0,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   245
    minorVersion:   0
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   246
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   247
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   248
(function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   249
    var an = navigator.appName.toLowerCase();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   250
	var ua = navigator.userAgent.toLowerCase();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   251
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   252
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   253
     *  Operating system
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   254
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   255
	SimileAjax.Platform.os.isMac = (ua.indexOf('mac') != -1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   256
	SimileAjax.Platform.os.isWin = (ua.indexOf('win') != -1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   257
	SimileAjax.Platform.os.isWin32 = SimileAjax.Platform.isWin && (
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   258
        ua.indexOf('95') != -1 ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   259
        ua.indexOf('98') != -1 ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   260
        ua.indexOf('nt') != -1 ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   261
        ua.indexOf('win32') != -1 ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   262
        ua.indexOf('32bit') != -1
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   263
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   264
	SimileAjax.Platform.os.isUnix = (ua.indexOf('x11') != -1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   265
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   266
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   267
     *  Browser
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   268
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   269
    SimileAjax.Platform.browser.isIE = (an.indexOf("microsoft") != -1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   270
    SimileAjax.Platform.browser.isNetscape = (an.indexOf("netscape") != -1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   271
    SimileAjax.Platform.browser.isMozilla = (ua.indexOf("mozilla") != -1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   272
    SimileAjax.Platform.browser.isFirefox = (ua.indexOf("firefox") != -1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   273
    SimileAjax.Platform.browser.isOpera = (an.indexOf("opera") != -1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   274
    SimileAjax.Platform.browser.isSafari = (an.indexOf("safari") != -1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   275
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   276
    var parseVersionString = function(s) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   277
        var a = s.split(".");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   278
        SimileAjax.Platform.browser.majorVersion = parseInt(a[0]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   279
        SimileAjax.Platform.browser.minorVersion = parseInt(a[1]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   280
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   281
    var indexOf = function(s, sub, start) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   282
        var i = s.indexOf(sub, start);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   283
        return i >= 0 ? i : s.length;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   284
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   285
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   286
    if (SimileAjax.Platform.browser.isMozilla) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   287
        var offset = ua.indexOf("mozilla/");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   288
        if (offset >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   289
            parseVersionString(ua.substring(offset + 8, indexOf(ua, " ", offset)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   290
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   291
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   292
    if (SimileAjax.Platform.browser.isIE) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   293
        var offset = ua.indexOf("msie ");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   294
        if (offset >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   295
            parseVersionString(ua.substring(offset + 5, indexOf(ua, ";", offset)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   296
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   297
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   298
    if (SimileAjax.Platform.browser.isNetscape) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   299
        var offset = ua.indexOf("rv:");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   300
        if (offset >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   301
            parseVersionString(ua.substring(offset + 3, indexOf(ua, ")", offset)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   302
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   303
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   304
    if (SimileAjax.Platform.browser.isFirefox) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   305
        var offset = ua.indexOf("firefox/");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   306
        if (offset >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   307
            parseVersionString(ua.substring(offset + 8, indexOf(ua, " ", offset)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   308
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   309
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   310
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   311
    if (!("localeCompare" in String.prototype)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   312
        String.prototype.localeCompare = function (s) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   313
            if (this < s) return -1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   314
            else if (this > s) return 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   315
            else return 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   316
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   317
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   318
})();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   319
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   320
SimileAjax.Platform.getDefaultLocale = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   321
    return SimileAjax.Platform.clientLocale;
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
   322
};
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
   323
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   324
 *  Debug Utility Functions
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
   325
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   326
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   327
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   328
SimileAjax.Debug = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   329
    silent: false
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   330
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   331
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   332
SimileAjax.Debug.log = function(msg) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   333
    var f;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   334
    if ("console" in window && "log" in window.console) { // FireBug installed
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   335
        f = function(msg2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   336
            console.log(msg2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   337
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   338
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   339
        f = function(msg2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   340
            if (!SimileAjax.Debug.silent) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   341
                alert(msg2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   342
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   343
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   344
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   345
    SimileAjax.Debug.log = f;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   346
    f(msg);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   347
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   348
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   349
SimileAjax.Debug.warn = function(msg) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   350
    var f;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   351
    if ("console" in window && "warn" in window.console) { // FireBug installed
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   352
        f = function(msg2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   353
            console.warn(msg2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   354
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   355
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   356
        f = function(msg2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   357
            if (!SimileAjax.Debug.silent) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   358
                alert(msg2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   359
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   360
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   361
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   362
    SimileAjax.Debug.warn = f;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   363
    f(msg);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   364
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   365
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   366
SimileAjax.Debug.exception = function(e, msg) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   367
    var f, params = SimileAjax.parseURLParameters();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   368
    if (params.errors == "throw" || SimileAjax.params.errors == "throw") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   369
        f = function(e2, msg2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   370
            throw(e2); // do not hide from browser's native debugging features
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   371
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   372
    } else if ("console" in window && "error" in window.console) { // FireBug installed
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   373
        f = function(e2, msg2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   374
            if (msg2 != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   375
                console.error(msg2 + " %o", e2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   376
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   377
                console.error(e2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   378
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   379
            throw(e2); // do not hide from browser's native debugging features
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   380
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   381
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   382
        f = function(e2, msg2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   383
            if (!SimileAjax.Debug.silent) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   384
                alert("Caught exception: " + msg2 + "\n\nDetails: " + ("description" in e2 ? e2.description : e2));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   385
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   386
            throw(e2); // do not hide from browser's native debugging features
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   387
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   388
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   389
    SimileAjax.Debug.exception = f;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   390
    f(e, msg);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   391
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   392
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   393
SimileAjax.Debug.objectToString = function(o) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   394
    return SimileAjax.Debug._objectToString(o, "");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   395
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   396
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   397
SimileAjax.Debug._objectToString = function(o, indent) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   398
    var indent2 = indent + " ";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   399
    if (typeof o == "object") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   400
        var s = "{";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   401
        for (n in o) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   402
            s += indent2 + n + ": " + SimileAjax.Debug._objectToString(o[n], indent2) + "\n";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   403
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   404
        s += indent + "}";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   405
        return s;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   406
    } else if (typeof o == "array") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   407
        var s = "[";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   408
        for (var n = 0; n < o.length; n++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   409
            s += SimileAjax.Debug._objectToString(o[n], indent2) + "\n";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   410
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   411
        s += indent + "]";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   412
        return s;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   413
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   414
        return o;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   415
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   416
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   417
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   418
 * @fileOverview XmlHttp utility functions
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   419
 * @name SimileAjax.XmlHttp
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   420
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   421
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   422
SimileAjax.XmlHttp = new Object();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   423
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   424
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   425
 *  Callback for XMLHttp onRequestStateChange.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   426
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   427
SimileAjax.XmlHttp._onReadyStateChange = function(xmlhttp, fError, fDone) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   428
    switch (xmlhttp.readyState) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   429
    // 1: Request not yet made
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   430
    // 2: Contact established with server but nothing downloaded yet
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   431
    // 3: Called multiple while downloading in progress
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   432
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   433
    // Download complete
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   434
    case 4:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   435
        try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   436
            if (xmlhttp.status == 0     // file:// urls, works on Firefox
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   437
             || xmlhttp.status == 200   // http:// urls
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   438
            ) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   439
                if (fDone) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   440
                    fDone(xmlhttp);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   441
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   442
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   443
                if (fError) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   444
                    fError(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   445
                        xmlhttp.statusText,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   446
                        xmlhttp.status,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   447
                        xmlhttp
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   448
                    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   449
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   450
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   451
        } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   452
            SimileAjax.Debug.exception("XmlHttp: Error handling onReadyStateChange", e);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   453
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   454
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   455
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   456
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   457
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   458
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   459
 *  Creates an XMLHttpRequest object. On the first run, this
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   460
 *  function creates a platform-specific function for
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   461
 *  instantiating an XMLHttpRequest object and then replaces
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   462
 *  itself with that function.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   463
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   464
SimileAjax.XmlHttp._createRequest = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   465
    if (SimileAjax.Platform.browser.isIE) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   466
        var programIDs = [
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   467
        "Msxml2.XMLHTTP",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   468
        "Microsoft.XMLHTTP",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   469
        "Msxml2.XMLHTTP.4.0"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   470
        ];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   471
        for (var i = 0; i < programIDs.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   472
            try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   473
                var programID = programIDs[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   474
                var f = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   475
                    return new ActiveXObject(programID);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   476
                };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   477
                var o = f();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   478
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   479
                // We are replacing the SimileAjax._createXmlHttpRequest
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   480
                // function with this inner function as we've
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   481
                // found out that it works. This is so that we
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   482
                // don't have to do all the testing over again
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   483
                // on subsequent calls.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   484
                SimileAjax.XmlHttp._createRequest = f;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   485
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   486
                return o;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   487
            } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   488
                // silent
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   489
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   490
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   491
        // fall through to try new XMLHttpRequest();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   492
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   493
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   494
    try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   495
        var f = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   496
            return new XMLHttpRequest();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   497
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   498
        var o = f();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   499
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   500
        // We are replacing the SimileAjax._createXmlHttpRequest
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   501
        // function with this inner function as we've
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   502
        // found out that it works. This is so that we
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   503
        // don't have to do all the testing over again
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   504
        // on subsequent calls.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   505
        SimileAjax.XmlHttp._createRequest = f;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   506
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   507
        return o;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   508
    } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   509
        throw new Error("Failed to create an XMLHttpRequest object");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   510
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   511
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   512
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   513
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   514
 * Performs an asynchronous HTTP GET.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   515
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   516
 * @param {Function} fError a function of the form
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   517
     function(statusText, statusCode, xmlhttp)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   518
 * @param {Function} fDone a function of the form function(xmlhttp)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   519
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   520
SimileAjax.XmlHttp.get = function(url, fError, fDone) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   521
    var xmlhttp = SimileAjax.XmlHttp._createRequest();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   522
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   523
    xmlhttp.open("GET", url, true);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   524
    xmlhttp.onreadystatechange = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   525
        SimileAjax.XmlHttp._onReadyStateChange(xmlhttp, fError, fDone);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   526
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   527
    xmlhttp.send(null);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   528
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   529
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   530
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   531
 * Performs an asynchronous HTTP POST.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   532
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   533
 * @param {Function} fError a function of the form
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   534
     function(statusText, statusCode, xmlhttp)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   535
 * @param {Function} fDone a function of the form function(xmlhttp)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   536
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   537
SimileAjax.XmlHttp.post = function(url, body, fError, fDone) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   538
    var xmlhttp = SimileAjax.XmlHttp._createRequest();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   539
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   540
    xmlhttp.open("POST", url, true);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   541
    xmlhttp.onreadystatechange = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   542
        SimileAjax.XmlHttp._onReadyStateChange(xmlhttp, fError, fDone);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   543
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   544
    xmlhttp.send(body);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   545
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   546
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   547
SimileAjax.XmlHttp._forceXML = function(xmlhttp) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   548
    try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   549
        xmlhttp.overrideMimeType("text/xml");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   550
    } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   551
        xmlhttp.setrequestheader("Content-Type", "text/xml");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   552
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   553
};/*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   554
 *  Copied directly from http://www.json.org/json.js.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   555
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   556
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   557
/*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   558
    json.js
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   559
    2006-04-28
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   560
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   561
    This file adds these methods to JavaScript:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   562
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   563
        object.toJSONString()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   564
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   565
            This method produces a JSON text from an object. The
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   566
            object must not contain any cyclical references.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   567
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   568
        array.toJSONString()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   569
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   570
            This method produces a JSON text from an array. The
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   571
            array must not contain any cyclical references.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   572
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   573
        string.parseJSON()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   574
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   575
            This method parses a JSON text to produce an object or
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   576
            array. It will return false if there is an error.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   577
*/
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   578
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   579
SimileAjax.JSON = new Object();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   580
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   581
(function () {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   582
    var m = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   583
        '\b': '\\b',
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   584
        '\t': '\\t',
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   585
        '\n': '\\n',
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   586
        '\f': '\\f',
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   587
        '\r': '\\r',
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   588
        '"' : '\\"',
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   589
        '\\': '\\\\'
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   590
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   591
    var s = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   592
        array: function (x) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   593
            var a = ['['], b, f, i, l = x.length, v;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   594
            for (i = 0; i < l; i += 1) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   595
                v = x[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   596
                f = s[typeof v];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   597
                if (f) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   598
                    v = f(v);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   599
                    if (typeof v == 'string') {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   600
                        if (b) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   601
                            a[a.length] = ',';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   602
                        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   603
                        a[a.length] = v;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   604
                        b = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   605
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   606
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   607
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   608
            a[a.length] = ']';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   609
            return a.join('');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   610
        },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   611
        'boolean': function (x) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   612
            return String(x);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   613
        },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   614
        'null': function (x) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   615
            return "null";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   616
        },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   617
        number: function (x) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   618
            return isFinite(x) ? String(x) : 'null';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   619
        },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   620
        object: function (x) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   621
            if (x) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   622
                if (x instanceof Array) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   623
                    return s.array(x);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   624
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   625
                var a = ['{'], b, f, i, v;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   626
                for (i in x) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   627
                    v = x[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   628
                    f = s[typeof v];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   629
                    if (f) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   630
                        v = f(v);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   631
                        if (typeof v == 'string') {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   632
                            if (b) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   633
                                a[a.length] = ',';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   634
                            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   635
                            a.push(s.string(i), ':', v);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   636
                            b = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   637
                        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   638
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   639
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   640
                a[a.length] = '}';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   641
                return a.join('');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   642
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   643
            return 'null';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   644
        },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   645
        string: function (x) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   646
            if (/["\\\x00-\x1f]/.test(x)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   647
                x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   648
                    var c = m[b];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   649
                    if (c) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   650
                        return c;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   651
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   652
                    c = b.charCodeAt();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   653
                    return '\\u00' +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   654
                        Math.floor(c / 16).toString(16) +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   655
                        (c % 16).toString(16);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   656
                });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   657
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   658
            return '"' + x + '"';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   659
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   660
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   661
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   662
    SimileAjax.JSON.toJSONString = function(o) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   663
        if (o instanceof Object) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   664
            return s.object(o);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   665
        } else if (o instanceof Array) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   666
            return s.array(o);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   667
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   668
            return o.toString();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   669
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   670
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   671
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   672
    SimileAjax.JSON.parseJSON = function () {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   673
        try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   674
            return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   675
                    this.replace(/"(\\.|[^"\\])*"/g, ''))) &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   676
                eval('(' + this + ')');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   677
        } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   678
            return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   679
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   680
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   681
})();
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
   682
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   683
 *  DOM Utility Functions
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
   684
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   685
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   686
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   687
SimileAjax.DOM = new Object();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   688
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   689
SimileAjax.DOM.registerEventWithObject = function(elmt, eventName, obj, handlerName) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   690
    SimileAjax.DOM.registerEvent(elmt, eventName, function(elmt2, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   691
        return obj[handlerName].call(obj, elmt2, evt, target);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   692
    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   693
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   694
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   695
SimileAjax.DOM.registerEvent = function(elmt, eventName, handler) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   696
    var handler2 = function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   697
        evt = (evt) ? evt : ((event) ? event : null);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   698
        if (evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   699
            var target = (evt.target) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   700
                evt.target : ((evt.srcElement) ? evt.srcElement : null);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   701
            if (target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   702
                target = (target.nodeType == 1 || target.nodeType == 9) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   703
                    target : target.parentNode;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   704
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   705
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   706
            return handler(elmt, evt, target);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   707
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   708
        return true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   709
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   710
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   711
    if (SimileAjax.Platform.browser.isIE) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   712
        elmt.attachEvent("on" + eventName, handler2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   713
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   714
        elmt.addEventListener(eventName, handler2, false);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   715
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   716
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   717
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   718
SimileAjax.DOM.getPageCoordinates = function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   719
    var left = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   720
    var top = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   721
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   722
    if (elmt.nodeType != 1) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   723
        elmt = elmt.parentNode;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   724
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   725
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   726
    var elmt2 = elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   727
    while (elmt2 != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   728
        left += elmt2.offsetLeft;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   729
        top += elmt2.offsetTop;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   730
        elmt2 = elmt2.offsetParent;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   731
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   732
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   733
    var body = document.body;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   734
    while (elmt != null && elmt != body) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   735
        if ("scrollLeft" in elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   736
            left -= elmt.scrollLeft;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   737
            top -= elmt.scrollTop;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   738
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   739
        elmt = elmt.parentNode;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   740
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   741
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   742
    return { left: left, top: top };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   743
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   744
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   745
SimileAjax.DOM.getSize = function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   746
	var w = this.getStyle(elmt,"width");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   747
	var h = this.getStyle(elmt,"height");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   748
	if (w.indexOf("px") > -1) w = w.replace("px","");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   749
	if (h.indexOf("px") > -1) h = h.replace("px","");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   750
	return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   751
		w: w,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   752
		h: h
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   753
	}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   754
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   755
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   756
SimileAjax.DOM.getStyle = function(elmt, styleProp) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   757
    if (elmt.currentStyle) { // IE
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   758
        var style = elmt.currentStyle[styleProp];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   759
    } else if (window.getComputedStyle) { // standard DOM
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   760
        var style = document.defaultView.getComputedStyle(elmt, null).getPropertyValue(styleProp);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   761
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   762
    	var style = "";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   763
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   764
    return style;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   765
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   766
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   767
SimileAjax.DOM.getEventRelativeCoordinates = function(evt, elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   768
    if (SimileAjax.Platform.browser.isIE) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   769
      if (evt.type == "mousewheel") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   770
        var coords = SimileAjax.DOM.getPageCoordinates(elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   771
        return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   772
          x: evt.clientX - coords.left,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   773
          y: evt.clientY - coords.top
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   774
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   775
      } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   776
        return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   777
          x: evt.offsetX,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   778
          y: evt.offsetY
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   779
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   780
      }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   781
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   782
        var coords = SimileAjax.DOM.getPageCoordinates(elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   783
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   784
        if ((evt.type == "DOMMouseScroll") &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   785
          SimileAjax.Platform.browser.isFirefox &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   786
          (SimileAjax.Platform.browser.majorVersion == 2)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   787
          // Due to: https://bugzilla.mozilla.org/show_bug.cgi?id=352179
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   788
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   789
          return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   790
            x: evt.screenX - coords.left,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   791
            y: evt.screenY - coords.top
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   792
          };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   793
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   794
          return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   795
              x: evt.pageX - coords.left,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   796
              y: evt.pageY - coords.top
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   797
          };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   798
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   799
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   800
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   801
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   802
SimileAjax.DOM.getEventPageCoordinates = function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   803
    if (SimileAjax.Platform.browser.isIE) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   804
        return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   805
            x: evt.clientX + document.body.scrollLeft,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   806
            y: evt.clientY + document.body.scrollTop
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   807
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   808
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   809
        return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   810
            x: evt.pageX,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   811
            y: evt.pageY
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   812
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   813
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   814
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   815
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   816
SimileAjax.DOM.hittest = function(x, y, except) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   817
    return SimileAjax.DOM._hittest(document.body, x, y, except);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   818
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   819
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   820
SimileAjax.DOM._hittest = function(elmt, x, y, except) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   821
    var childNodes = elmt.childNodes;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   822
    outer: for (var i = 0; i < childNodes.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   823
        var childNode = childNodes[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   824
        for (var j = 0; j < except.length; j++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   825
            if (childNode == except[j]) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   826
                continue outer;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   827
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   828
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   829
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   830
        if (childNode.offsetWidth == 0 && childNode.offsetHeight == 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   831
            /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   832
             *  Sometimes SPAN elements have zero width and height but
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   833
             *  they have children like DIVs that cover non-zero areas.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   834
             */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   835
            var hitNode = SimileAjax.DOM._hittest(childNode, x, y, except);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   836
            if (hitNode != childNode) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   837
                return hitNode;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   838
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   839
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   840
            var top = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   841
            var left = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   842
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   843
            var node = childNode;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   844
            while (node) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   845
                top += node.offsetTop;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   846
                left += node.offsetLeft;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   847
                node = node.offsetParent;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   848
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   849
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   850
            if (left <= x && top <= y && (x - left) < childNode.offsetWidth && (y - top) < childNode.offsetHeight) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   851
                return SimileAjax.DOM._hittest(childNode, x, y, except);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   852
            } else if (childNode.nodeType == 1 && childNode.tagName == "TR") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   853
                /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   854
                 *  Table row might have cells that span several rows.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   855
                 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   856
                var childNode2 = SimileAjax.DOM._hittest(childNode, x, y, except);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   857
                if (childNode2 != childNode) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   858
                    return childNode2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   859
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   860
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   861
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   862
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   863
    return elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   864
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   865
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   866
SimileAjax.DOM.cancelEvent = function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   867
    evt.returnValue = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   868
    evt.cancelBubble = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   869
    if ("preventDefault" in evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   870
        evt.preventDefault();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   871
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   872
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   873
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   874
SimileAjax.DOM.appendClassName = function(elmt, className) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   875
    var classes = elmt.className.split(" ");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   876
    for (var i = 0; i < classes.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   877
        if (classes[i] == className) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   878
            return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   879
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   880
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   881
    classes.push(className);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   882
    elmt.className = classes.join(" ");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   883
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   884
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   885
SimileAjax.DOM.createInputElement = function(type) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   886
    var div = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   887
    div.innerHTML = "<input type='" + type + "' />";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   888
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   889
    return div.firstChild;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   890
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   891
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   892
SimileAjax.DOM.createDOMFromTemplate = function(template) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   893
    var result = {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   894
    result.elmt = SimileAjax.DOM._createDOMFromTemplate(template, result, null);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   895
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   896
    return result;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   897
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   898
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   899
SimileAjax.DOM._createDOMFromTemplate = function(templateNode, result, parentElmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   900
    if (templateNode == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   901
        /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   902
        var node = doc.createTextNode("--null--");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   903
        if (parentElmt != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   904
            parentElmt.appendChild(node);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   905
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   906
        return node;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   907
        */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   908
        return null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   909
    } else if (typeof templateNode != "object") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   910
        var node = document.createTextNode(templateNode);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   911
        if (parentElmt != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   912
            parentElmt.appendChild(node);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   913
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   914
        return node;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   915
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   916
        var elmt = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   917
        if ("tag" in templateNode) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   918
            var tag = templateNode.tag;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   919
            if (parentElmt != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   920
                if (tag == "tr") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   921
                    elmt = parentElmt.insertRow(parentElmt.rows.length);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   922
                } else if (tag == "td") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   923
                    elmt = parentElmt.insertCell(parentElmt.cells.length);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   924
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   925
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   926
            if (elmt == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   927
                elmt = tag == "input" ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   928
                    SimileAjax.DOM.createInputElement(templateNode.type) :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   929
                    document.createElement(tag);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   930
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   931
                if (parentElmt != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   932
                    parentElmt.appendChild(elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   933
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   934
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   935
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   936
            elmt = templateNode.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   937
            if (parentElmt != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   938
                parentElmt.appendChild(elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   939
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   940
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   941
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   942
        for (var attribute in templateNode) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   943
            var value = templateNode[attribute];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   944
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   945
            if (attribute == "field") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   946
                result[value] = elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   947
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   948
            } else if (attribute == "className") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   949
                elmt.className = value;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   950
            } else if (attribute == "id") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   951
                elmt.id = value;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   952
            } else if (attribute == "title") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   953
                elmt.title = value;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   954
            } else if (attribute == "type" && elmt.tagName == "input") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   955
                // do nothing
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   956
            } else if (attribute == "style") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   957
                for (n in value) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   958
                    var v = value[n];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   959
                    if (n == "float") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   960
                        n = SimileAjax.Platform.browser.isIE ? "styleFloat" : "cssFloat";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   961
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   962
                    elmt.style[n] = v;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   963
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   964
            } else if (attribute == "children") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   965
                for (var i = 0; i < value.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   966
                    SimileAjax.DOM._createDOMFromTemplate(value[i], result, elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   967
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   968
            } else if (attribute != "tag" && attribute != "elmt") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   969
                elmt.setAttribute(attribute, value);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   970
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   971
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   972
        return elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   973
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   974
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   975
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   976
SimileAjax.DOM._cachedParent = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   977
SimileAjax.DOM.createElementFromString = function(s) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   978
    if (SimileAjax.DOM._cachedParent == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   979
        SimileAjax.DOM._cachedParent = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   980
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   981
    SimileAjax.DOM._cachedParent.innerHTML = s;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   982
    return SimileAjax.DOM._cachedParent.firstChild;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   983
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   984
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   985
SimileAjax.DOM.createDOMFromString = function(root, s, fieldElmts) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   986
    var elmt = typeof root == "string" ? document.createElement(root) : root;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   987
    elmt.innerHTML = s;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   988
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   989
    var dom = { elmt: elmt };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   990
    SimileAjax.DOM._processDOMChildrenConstructedFromString(dom, elmt, fieldElmts != null ? fieldElmts : {} );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   991
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   992
    return dom;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   993
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   994
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   995
SimileAjax.DOM._processDOMConstructedFromString = function(dom, elmt, fieldElmts) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   996
    var id = elmt.id;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   997
    if (id != null && id.length > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   998
        elmt.removeAttribute("id");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
   999
        if (id in fieldElmts) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1000
            var parentElmt = elmt.parentNode;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1001
            parentElmt.insertBefore(fieldElmts[id], elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1002
            parentElmt.removeChild(elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1003
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1004
            dom[id] = fieldElmts[id];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1005
            return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1006
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1007
            dom[id] = elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1008
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1009
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1010
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1011
    if (elmt.hasChildNodes()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1012
        SimileAjax.DOM._processDOMChildrenConstructedFromString(dom, elmt, fieldElmts);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1013
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1014
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1015
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1016
SimileAjax.DOM._processDOMChildrenConstructedFromString = function(dom, elmt, fieldElmts) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1017
    var node = elmt.firstChild;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1018
    while (node != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1019
        var node2 = node.nextSibling;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1020
        if (node.nodeType == 1) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1021
            SimileAjax.DOM._processDOMConstructedFromString(dom, node, fieldElmts);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1022
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1023
        node = node2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1024
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1025
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1026
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1027
 * @fileOverview Graphics utility functions and constants
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1028
 * @name SimileAjax.Graphics
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1029
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1030
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1031
SimileAjax.Graphics = new Object();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1032
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1033
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1034
 * A boolean value indicating whether PNG translucency is supported on the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1035
 * user's browser or not.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1036
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1037
 * @type Boolean
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1038
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1039
SimileAjax.Graphics.pngIsTranslucent = (!SimileAjax.Platform.browser.isIE) || (SimileAjax.Platform.browser.majorVersion > 6);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1040
if (!SimileAjax.Graphics.pngIsTranslucent) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1041
    SimileAjax.includeCssFile(document, SimileAjax.urlPrefix + "styles/graphics-ie6.css");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1042
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1043
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  1044
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1045
 *  Opacity, translucency
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  1046
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1047
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1048
SimileAjax.Graphics._createTranslucentImage1 = function(url, verticalAlign) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1049
    var elmt = document.createElement("img");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1050
    elmt.setAttribute("src", url);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1051
    if (verticalAlign != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1052
        elmt.style.verticalAlign = verticalAlign;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1053
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1054
    return elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1055
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1056
SimileAjax.Graphics._createTranslucentImage2 = function(url, verticalAlign) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1057
    var elmt = document.createElement("img");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1058
    elmt.style.width = "1px";  // just so that IE will calculate the size property
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1059
    elmt.style.height = "1px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1060
    elmt.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + url +"', sizingMethod='image')";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1061
    elmt.style.verticalAlign = (verticalAlign != null) ? verticalAlign : "middle";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1062
    return elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1063
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1064
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1065
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1066
 * Creates a DOM element for an <code>img</code> tag using the URL given. This
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1067
 * is a convenience method that automatically includes the necessary CSS to
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1068
 * allow for translucency, even on IE.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1069
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1070
 * @function
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1071
 * @param {String} url the URL to the image
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1072
 * @param {String} verticalAlign the CSS value for the image's vertical-align
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1073
 * @return {Element} a DOM element containing the <code>img</code> tag
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1074
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1075
SimileAjax.Graphics.createTranslucentImage = SimileAjax.Graphics.pngIsTranslucent ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1076
    SimileAjax.Graphics._createTranslucentImage1 :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1077
    SimileAjax.Graphics._createTranslucentImage2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1078
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1079
SimileAjax.Graphics._createTranslucentImageHTML1 = function(url, verticalAlign) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1080
    return "<img src=\"" + url + "\"" +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1081
        (verticalAlign != null ? " style=\"vertical-align: " + verticalAlign + ";\"" : "") +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1082
        " />";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1083
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1084
SimileAjax.Graphics._createTranslucentImageHTML2 = function(url, verticalAlign) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1085
    var style =
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1086
        "width: 1px; height: 1px; " +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1087
        "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + url +"', sizingMethod='image');" +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1088
        (verticalAlign != null ? " vertical-align: " + verticalAlign + ";" : "");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1089
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1090
    return "<img src='" + url + "' style=\"" + style + "\" />";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1091
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1092
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1093
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1094
 * Creates an HTML string for an <code>img</code> tag using the URL given.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1095
 * This is a convenience method that automatically includes the necessary CSS
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1096
 * to allow for translucency, even on IE.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1097
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1098
 * @function
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1099
 * @param {String} url the URL to the image
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1100
 * @param {String} verticalAlign the CSS value for the image's vertical-align
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1101
 * @return {String} a string containing the <code>img</code> tag
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1102
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1103
SimileAjax.Graphics.createTranslucentImageHTML = SimileAjax.Graphics.pngIsTranslucent ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1104
    SimileAjax.Graphics._createTranslucentImageHTML1 :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1105
    SimileAjax.Graphics._createTranslucentImageHTML2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1106
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1107
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1108
 * Sets the opacity on the given DOM element.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1109
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1110
 * @param {Element} elmt the DOM element to set the opacity on
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1111
 * @param {Number} opacity an integer from 0 to 100 specifying the opacity
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1112
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1113
SimileAjax.Graphics.setOpacity = function(elmt, opacity) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1114
    if (SimileAjax.Platform.browser.isIE) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1115
        elmt.style.filter = "progid:DXImageTransform.Microsoft.Alpha(Style=0,Opacity=" + opacity + ")";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1116
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1117
        var o = (opacity / 100).toString();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1118
        elmt.style.opacity = o;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1119
        elmt.style.MozOpacity = o;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1120
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1121
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1122
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  1123
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1124
 *  Bubble
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  1125
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1126
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1127
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1128
SimileAjax.Graphics.bubbleConfig = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1129
    containerCSSClass:              "simileAjax-bubble-container",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1130
    innerContainerCSSClass:         "simileAjax-bubble-innerContainer",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1131
    contentContainerCSSClass:       "simileAjax-bubble-contentContainer",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1132
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1133
    borderGraphicSize:              50,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1134
    borderGraphicCSSClassPrefix:    "simileAjax-bubble-border-",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1135
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1136
    arrowGraphicTargetOffset:       33,  // from tip of arrow to the side of the graphic that touches the content of the bubble
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1137
    arrowGraphicLength:             100, // dimension of arrow graphic along the direction that the arrow points
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1138
    arrowGraphicWidth:              49,  // dimension of arrow graphic perpendicular to the direction that the arrow points
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1139
    arrowGraphicCSSClassPrefix:     "simileAjax-bubble-arrow-",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1140
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1141
    closeGraphicCSSClass:           "simileAjax-bubble-close",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1142
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1143
    extraPadding:                   20
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1144
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1145
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1146
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1147
 * Creates a nice, rounded bubble popup with the given content in a div,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1148
 * page coordinates and a suggested width. The bubble will point to the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1149
 * location on the page as described by pageX and pageY.  All measurements
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1150
 * should be given in pixels.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1151
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1152
 * @param {Element} the content div
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1153
 * @param {Number} pageX the x coordinate of the point to point to
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1154
 * @param {Number} pageY the y coordinate of the point to point to
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1155
 * @param {Number} contentWidth a suggested width of the content
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1156
 * @param {String} orientation a string ("top", "bottom", "left", or "right")
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1157
 *   that describes the orientation of the arrow on the bubble
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1158
 * @param {Number} maxHeight. Add a scrollbar div if bubble would be too tall.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1159
 *   Default of 0 or null means no maximum
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1160
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1161
SimileAjax.Graphics.createBubbleForContentAndPoint = function(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1162
       div, pageX, pageY, contentWidth, orientation, maxHeight) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1163
    if (typeof contentWidth != "number") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1164
        contentWidth = 300;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1165
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1166
    if (typeof maxHeight != "number") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1167
        maxHeight = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1168
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1169
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1170
    div.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1171
    div.style.left = "-5000px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1172
    div.style.top = "0px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1173
    div.style.width = contentWidth + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1174
    document.body.appendChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1175
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1176
    window.setTimeout(function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1177
        var width = div.scrollWidth + 10;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1178
        var height = div.scrollHeight + 10;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1179
        var scrollDivW = 0; // width of the possible inner container when we want vertical scrolling
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1180
        if (maxHeight > 0 && height > maxHeight) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1181
          height = maxHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1182
          scrollDivW = width - 25;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1183
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1184
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1185
        var bubble = SimileAjax.Graphics.createBubbleForPoint(pageX, pageY, width, height, orientation);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1186
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1187
        document.body.removeChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1188
        div.style.position = "static";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1189
        div.style.left = "";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1190
        div.style.top = "";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1191
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1192
        // create a scroll div if needed
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1193
        if (scrollDivW > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1194
          var scrollDiv = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1195
          div.style.width = "";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1196
          scrollDiv.style.width = scrollDivW + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1197
          scrollDiv.appendChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1198
          bubble.content.appendChild(scrollDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1199
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1200
          div.style.width = width + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1201
          bubble.content.appendChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1202
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1203
    }, 200);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1204
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1205
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1206
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1207
 * Creates a nice, rounded bubble popup with the given page coordinates and
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1208
 * content dimensions.  The bubble will point to the location on the page
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1209
 * as described by pageX and pageY.  All measurements should be given in
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1210
 * pixels.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1211
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1212
 * @param {Number} pageX the x coordinate of the point to point to
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1213
 * @param {Number} pageY the y coordinate of the point to point to
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1214
 * @param {Number} contentWidth the width of the content box in the bubble
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1215
 * @param {Number} contentHeight the height of the content box in the bubble
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1216
 * @param {String} orientation a string ("top", "bottom", "left", or "right")
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1217
 *   that describes the orientation of the arrow on the bubble
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1218
 * @return {Element} a DOM element for the newly created bubble
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1219
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1220
SimileAjax.Graphics.createBubbleForPoint = function(pageX, pageY, contentWidth, contentHeight, orientation) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1221
    contentWidth = parseInt(contentWidth, 10); // harden against bad input bugs
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1222
    contentHeight = parseInt(contentHeight, 10); // getting numbers-as-strings
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1223
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1224
    var bubbleConfig = SimileAjax.Graphics.bubbleConfig;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1225
    var pngTransparencyClassSuffix =
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1226
        SimileAjax.Graphics.pngIsTranslucent ? "pngTranslucent" : "pngNotTranslucent";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1227
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1228
    var bubbleWidth = contentWidth + 2 * bubbleConfig.borderGraphicSize;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1229
    var bubbleHeight = contentHeight + 2 * bubbleConfig.borderGraphicSize;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1230
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1231
    var generatePngSensitiveClass = function(className) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1232
        return className + " " + className + "-" + pngTransparencyClassSuffix;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1233
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1234
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1235
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1236
     *  Render container divs
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1237
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1238
    var div = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1239
    div.className = generatePngSensitiveClass(bubbleConfig.containerCSSClass);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1240
    div.style.width = contentWidth + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1241
    div.style.height = contentHeight + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1242
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1243
    var divInnerContainer = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1244
    divInnerContainer.className = generatePngSensitiveClass(bubbleConfig.innerContainerCSSClass);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1245
    div.appendChild(divInnerContainer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1246
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1247
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1248
     *  Create layer for bubble
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1249
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1250
    var close = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1251
        if (!bubble._closed) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1252
            document.body.removeChild(bubble._div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1253
            bubble._doc = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1254
            bubble._div = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1255
            bubble._content = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1256
            bubble._closed = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1257
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1258
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1259
    var bubble = { _closed: false };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1260
    var layer = SimileAjax.WindowManager.pushLayer(close, true, div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1261
    bubble._div = div;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1262
    bubble.close = function() { SimileAjax.WindowManager.popLayer(layer); }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1263
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1264
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1265
     *  Render border graphics
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1266
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1267
    var createBorder = function(classNameSuffix) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1268
        var divBorderGraphic = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1269
        divBorderGraphic.className = generatePngSensitiveClass(bubbleConfig.borderGraphicCSSClassPrefix + classNameSuffix);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1270
        divInnerContainer.appendChild(divBorderGraphic);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1271
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1272
    createBorder("top-left");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1273
    createBorder("top-right");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1274
    createBorder("bottom-left");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1275
    createBorder("bottom-right");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1276
    createBorder("left");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1277
    createBorder("right");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1278
    createBorder("top");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1279
    createBorder("bottom");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1280
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1281
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1282
     *  Render content
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1283
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1284
    var divContentContainer = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1285
    divContentContainer.className = generatePngSensitiveClass(bubbleConfig.contentContainerCSSClass);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1286
    divInnerContainer.appendChild(divContentContainer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1287
    bubble.content = divContentContainer;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1288
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1289
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1290
     *  Render close button
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1291
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1292
    var divClose = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1293
    divClose.className = generatePngSensitiveClass(bubbleConfig.closeGraphicCSSClass);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1294
    divInnerContainer.appendChild(divClose);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1295
    SimileAjax.WindowManager.registerEventWithObject(divClose, "click", bubble, "close");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1296
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1297
    (function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1298
        var dims = SimileAjax.Graphics.getWindowDimensions();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1299
        var docWidth = dims.w;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1300
        var docHeight = dims.h;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1301
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1302
        var halfArrowGraphicWidth = Math.ceil(bubbleConfig.arrowGraphicWidth / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1303
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1304
        var createArrow = function(classNameSuffix) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1305
            var divArrowGraphic = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1306
            divArrowGraphic.className = generatePngSensitiveClass(bubbleConfig.arrowGraphicCSSClassPrefix + "point-" + classNameSuffix);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1307
            divInnerContainer.appendChild(divArrowGraphic);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1308
            return divArrowGraphic;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1309
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1310
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1311
        if (pageX - halfArrowGraphicWidth - bubbleConfig.borderGraphicSize - bubbleConfig.extraPadding > 0 &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1312
            pageX + halfArrowGraphicWidth + bubbleConfig.borderGraphicSize + bubbleConfig.extraPadding < docWidth) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1313
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1314
            /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1315
             *  Bubble can be positioned above or below the target point.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1316
             */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1317
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1318
            var left = pageX - Math.round(contentWidth / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1319
            left = pageX < (docWidth / 2) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1320
                Math.max(left, bubbleConfig.extraPadding + bubbleConfig.borderGraphicSize) :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1321
                Math.min(left, docWidth - bubbleConfig.extraPadding - bubbleConfig.borderGraphicSize - contentWidth);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1322
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1323
            if ((orientation && orientation == "top") ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1324
                (!orientation &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1325
                    (pageY
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1326
                        - bubbleConfig.arrowGraphicTargetOffset
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1327
                        - contentHeight
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1328
                        - bubbleConfig.borderGraphicSize
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1329
                        - bubbleConfig.extraPadding > 0))) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1330
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1331
                /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1332
                 *  Position bubble above the target point.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1333
                 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1334
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1335
                var divArrow = createArrow("down");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1336
                divArrow.style.left = (pageX - halfArrowGraphicWidth - left) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1337
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1338
                div.style.left = left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1339
                div.style.top = (pageY - bubbleConfig.arrowGraphicTargetOffset - contentHeight) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1340
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1341
                return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1342
            } else if ((orientation && orientation == "bottom") ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1343
                (!orientation &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1344
                    (pageY
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1345
                        + bubbleConfig.arrowGraphicTargetOffset
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1346
                        + contentHeight
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1347
                        + bubbleConfig.borderGraphicSize
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1348
                        + bubbleConfig.extraPadding < docHeight))) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1349
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1350
                /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1351
                 *  Position bubble below the target point.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1352
                 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1353
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1354
                var divArrow = createArrow("up");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1355
                divArrow.style.left = (pageX - halfArrowGraphicWidth - left) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1356
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1357
                div.style.left = left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1358
                div.style.top = (pageY + bubbleConfig.arrowGraphicTargetOffset) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1359
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1360
                return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1361
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1362
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1363
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1364
        var top = pageY - Math.round(contentHeight / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1365
        top = pageY < (docHeight / 2) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1366
            Math.max(top, bubbleConfig.extraPadding + bubbleConfig.borderGraphicSize) :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1367
            Math.min(top, docHeight - bubbleConfig.extraPadding - bubbleConfig.borderGraphicSize - contentHeight);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1368
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1369
        if ((orientation && orientation == "left") ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1370
            (!orientation &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1371
                (pageX
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1372
                    - bubbleConfig.arrowGraphicTargetOffset
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1373
                    - contentWidth
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1374
                    - bubbleConfig.borderGraphicSize
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1375
                    - bubbleConfig.extraPadding > 0))) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1376
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1377
            /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1378
             *  Position bubble left of the target point.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1379
             */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1380
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1381
            var divArrow = createArrow("right");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1382
            divArrow.style.top = (pageY - halfArrowGraphicWidth - top) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1383
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1384
            div.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1385
            div.style.left = (pageX - bubbleConfig.arrowGraphicTargetOffset - contentWidth) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1386
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1387
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1388
            /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1389
             *  Position bubble right of the target point, as the last resort.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1390
             */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1391
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1392
            var divArrow = createArrow("left");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1393
            divArrow.style.top = (pageY - halfArrowGraphicWidth - top) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1394
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1395
            div.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1396
            div.style.left = (pageX + bubbleConfig.arrowGraphicTargetOffset) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1397
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1398
    })();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1399
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1400
    document.body.appendChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1401
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1402
    return bubble;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1403
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1404
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1405
SimileAjax.Graphics.getWindowDimensions = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1406
    if (typeof window.innerHeight == 'number') {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1407
        return { w:window.innerWidth, h:window.innerHeight }; // Non-IE
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1408
    } else if (document.documentElement && document.documentElement.clientHeight) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1409
        return { // IE6+, in "standards compliant mode"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1410
            w:document.documentElement.clientWidth,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1411
            h:document.documentElement.clientHeight
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1412
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1413
    } else if (document.body && document.body.clientHeight) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1414
        return { // IE 4 compatible
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1415
            w:document.body.clientWidth,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1416
            h:document.body.clientHeight
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1417
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1418
    }
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
  1419
};
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
  1420
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
  1421
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
  1422
/**
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1423
 * Creates a floating, rounded message bubble in the center of the window for
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1424
 * displaying modal information, e.g. "Loading..."
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1425
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1426
 * @param {Document} doc the root document for the page to render on
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1427
 * @param {Object} an object with two properties, contentDiv and containerDiv,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1428
 *   consisting of the newly created DOM elements
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1429
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1430
SimileAjax.Graphics.createMessageBubble = function(doc) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1431
    var containerDiv = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1432
    if (SimileAjax.Graphics.pngIsTranslucent) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1433
        var topDiv = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1434
        topDiv.style.height = "33px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1435
        topDiv.style.background = "url(" + SimileAjax.urlPrefix + "images/message-top-left.png) top left no-repeat";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1436
        topDiv.style.paddingLeft = "44px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1437
        containerDiv.appendChild(topDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1438
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1439
        var topRightDiv = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1440
        topRightDiv.style.height = "33px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1441
        topRightDiv.style.background = "url(" + SimileAjax.urlPrefix + "images/message-top-right.png) top right no-repeat";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1442
        topDiv.appendChild(topRightDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1443
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1444
        var middleDiv = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1445
        middleDiv.style.background = "url(" + SimileAjax.urlPrefix + "images/message-left.png) top left repeat-y";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1446
        middleDiv.style.paddingLeft = "44px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1447
        containerDiv.appendChild(middleDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1448
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1449
        var middleRightDiv = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1450
        middleRightDiv.style.background = "url(" + SimileAjax.urlPrefix + "images/message-right.png) top right repeat-y";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1451
        middleRightDiv.style.paddingRight = "44px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1452
        middleDiv.appendChild(middleRightDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1453
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1454
        var contentDiv = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1455
        middleRightDiv.appendChild(contentDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1456
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1457
        var bottomDiv = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1458
        bottomDiv.style.height = "55px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1459
        bottomDiv.style.background = "url(" + SimileAjax.urlPrefix + "images/message-bottom-left.png) bottom left no-repeat";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1460
        bottomDiv.style.paddingLeft = "44px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1461
        containerDiv.appendChild(bottomDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1462
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1463
        var bottomRightDiv = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1464
        bottomRightDiv.style.height = "55px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1465
        bottomRightDiv.style.background = "url(" + SimileAjax.urlPrefix + "images/message-bottom-right.png) bottom right no-repeat";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1466
        bottomDiv.appendChild(bottomRightDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1467
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1468
        containerDiv.style.border = "2px solid #7777AA";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1469
        containerDiv.style.padding = "20px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1470
        containerDiv.style.background = "white";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1471
        SimileAjax.Graphics.setOpacity(containerDiv, 90);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1472
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1473
        var contentDiv = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1474
        containerDiv.appendChild(contentDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1475
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1476
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1477
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1478
        containerDiv:   containerDiv,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1479
        contentDiv:     contentDiv
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1480
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1481
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1482
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  1483
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1484
 *  Animation
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  1485
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1486
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1487
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1488
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1489
 * Creates an animation for a function, and an interval of values.  The word
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1490
 * "animation" here is used in the sense of repeatedly calling a function with
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1491
 * a current value from within an interval, and a delta value.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1492
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1493
 * @param {Function} f a function to be called every 50 milliseconds throughout
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1494
 *   the animation duration, of the form f(current, delta), where current is
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1495
 *   the current value within the range and delta is the current change.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1496
 * @param {Number} from a starting value
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1497
 * @param {Number} to an ending value
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1498
 * @param {Number} duration the duration of the animation in milliseconds
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1499
 * @param {Function} [cont] an optional function that is called at the end of
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1500
 *   the animation, i.e. a continuation.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1501
 * @return {SimileAjax.Graphics._Animation} a new animation object
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1502
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1503
SimileAjax.Graphics.createAnimation = function(f, from, to, duration, cont) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1504
    return new SimileAjax.Graphics._Animation(f, from, to, duration, cont);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1505
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1506
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1507
SimileAjax.Graphics._Animation = function(f, from, to, duration, cont) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1508
    this.f = f;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1509
    this.cont = (typeof cont == "function") ? cont : function() {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1510
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1511
    this.from = from;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1512
    this.to = to;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1513
    this.current = from;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1514
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1515
    this.duration = duration;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1516
    this.start = new Date().getTime();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1517
    this.timePassed = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1518
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1519
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1520
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1521
 * Runs this animation.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1522
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1523
SimileAjax.Graphics._Animation.prototype.run = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1524
    var a = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1525
    window.setTimeout(function() { a.step(); }, 50);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1526
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1527
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1528
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1529
 * Increments this animation by one step, and then continues the animation with
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1530
 * <code>run()</code>.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1531
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1532
SimileAjax.Graphics._Animation.prototype.step = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1533
    this.timePassed += 50;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1534
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1535
    var timePassedFraction = this.timePassed / this.duration;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1536
    var parameterFraction = -Math.cos(timePassedFraction * Math.PI) / 2 + 0.5;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1537
    var current = parameterFraction * (this.to - this.from) + this.from;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1538
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1539
    try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1540
        this.f(current, current - this.current);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1541
    } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1542
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1543
    this.current = current;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1544
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1545
    if (this.timePassed < this.duration) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1546
        this.run();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1547
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1548
        this.f(this.to, 0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1549
        this["cont"]();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1550
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1551
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1552
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  1553
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1554
 *  CopyPasteButton
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1555
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1556
 *  Adapted from http://spaces.live.com/editorial/rayozzie/demo/liveclip/liveclipsample/techPreview.html.
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  1557
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1558
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1559
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1560
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1561
 * Creates a button and textarea for displaying structured data and copying it
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1562
 * to the clipboard.  The data is dynamically generated by the given
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1563
 * createDataFunction parameter.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1564
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1565
 * @param {String} image an image URL to use as the background for the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1566
 *   generated box
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1567
 * @param {Number} width the width in pixels of the generated box
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1568
 * @param {Number} height the height in pixels of the generated box
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1569
 * @param {Function} createDataFunction a function that is called with no
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1570
 *   arguments to generate the structured data
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1571
 * @return a new DOM element
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1572
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1573
SimileAjax.Graphics.createStructuredDataCopyButton = function(image, width, height, createDataFunction) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1574
    var div = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1575
    div.style.position = "relative";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1576
    div.style.display = "inline";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1577
    div.style.width = width + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1578
    div.style.height = height + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1579
    div.style.overflow = "hidden";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1580
    div.style.margin = "2px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1581
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1582
    if (SimileAjax.Graphics.pngIsTranslucent) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1583
        div.style.background = "url(" + image + ") no-repeat";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1584
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1585
        div.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + image +"', sizingMethod='image')";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1586
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1587
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1588
    var style;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1589
    if (SimileAjax.Platform.browser.isIE) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1590
        style = "filter:alpha(opacity=0)";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1591
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1592
        style = "opacity: 0";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1593
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1594
    div.innerHTML = "<textarea rows='1' autocomplete='off' value='none' style='" + style + "' />";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1595
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1596
    var textarea = div.firstChild;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1597
    textarea.style.width = width + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1598
    textarea.style.height = height + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1599
    textarea.onmousedown = function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1600
        evt = (evt) ? evt : ((event) ? event : null);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1601
        if (evt.button == 2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1602
            textarea.value = createDataFunction();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1603
            textarea.select();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1604
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1605
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1606
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1607
    return div;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1608
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1609
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  1610
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1611
 *  getWidthHeight
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  1612
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1613
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1614
SimileAjax.Graphics.getWidthHeight = function(el) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1615
    // RETURNS hash {width:  w, height: h} in pixels
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1616
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1617
    var w, h;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1618
    // offsetWidth rounds on FF, so doesn't work for us.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1619
    // See https://bugzilla.mozilla.org/show_bug.cgi?id=458617
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1620
    if (el.getBoundingClientRect == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1621
    	// use offsetWidth
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1622
      w = el.offsetWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1623
      h = el.offsetHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1624
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1625
    	// use getBoundingClientRect
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1626
      var rect = el.getBoundingClientRect();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1627
      w = Math.ceil(rect.right - rect.left);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1628
    	h = Math.ceil(rect.bottom - rect.top);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1629
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1630
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1631
        width:  w,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1632
        height: h
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1633
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1634
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1635
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1636
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  1637
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1638
 *  FontRenderingContext
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  1639
 *
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
  1640
 */
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1641
SimileAjax.Graphics.getFontRenderingContext = function(elmt, width) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1642
    return new SimileAjax.Graphics._FontRenderingContext(elmt, width);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1643
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1644
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1645
SimileAjax.Graphics._FontRenderingContext = function(elmt, width) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1646
    this._elmt = elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1647
    this._elmt.style.visibility = "hidden";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1648
    if (typeof width == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1649
        this._elmt.style.width = width;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1650
    } else if (typeof width == "number") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1651
        this._elmt.style.width = width + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1652
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1653
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1654
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1655
SimileAjax.Graphics._FontRenderingContext.prototype.dispose = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1656
    this._elmt = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1657
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1658
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1659
SimileAjax.Graphics._FontRenderingContext.prototype.update = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1660
    this._elmt.innerHTML = "A";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1661
    this._lineHeight = this._elmt.offsetHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1662
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1663
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1664
SimileAjax.Graphics._FontRenderingContext.prototype.computeSize = function(text, className) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1665
    // className arg is optional
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1666
    var el = this._elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1667
    el.innerHTML = text;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1668
    el.className = className === undefined ? '' : className;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1669
    var wh = SimileAjax.Graphics.getWidthHeight(el);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1670
    el.className = ''; // reset for the next guy
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1671
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1672
    return wh;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1673
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1674
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1675
SimileAjax.Graphics._FontRenderingContext.prototype.getLineHeight = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1676
    return this._lineHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1677
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1678
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1679
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1680
 * @fileOverview A collection of date/time utility functions
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1681
 * @name SimileAjax.DateTime
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1682
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1683
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1684
SimileAjax.DateTime = new Object();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1685
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1686
SimileAjax.DateTime.MILLISECOND    = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1687
SimileAjax.DateTime.SECOND         = 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1688
SimileAjax.DateTime.MINUTE         = 2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1689
SimileAjax.DateTime.HOUR           = 3;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1690
SimileAjax.DateTime.DAY            = 4;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1691
SimileAjax.DateTime.WEEK           = 5;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1692
SimileAjax.DateTime.MONTH          = 6;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1693
SimileAjax.DateTime.YEAR           = 7;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1694
SimileAjax.DateTime.DECADE         = 8;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1695
SimileAjax.DateTime.CENTURY        = 9;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1696
SimileAjax.DateTime.MILLENNIUM     = 10;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1697
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1698
SimileAjax.DateTime.EPOCH          = -1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1699
SimileAjax.DateTime.ERA            = -2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1700
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1701
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1702
 * An array of unit lengths, expressed in milliseconds, of various lengths of
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1703
 * time.  The array indices are predefined and stored as properties of the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1704
 * SimileAjax.DateTime object, e.g. SimileAjax.DateTime.YEAR.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1705
 * @type Array
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1706
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1707
SimileAjax.DateTime.gregorianUnitLengths = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1708
    (function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1709
        var d = SimileAjax.DateTime;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1710
        var a = d.gregorianUnitLengths;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1711
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1712
        a[d.MILLISECOND] = 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1713
        a[d.SECOND]      = 1000;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1714
        a[d.MINUTE]      = a[d.SECOND] * 60;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1715
        a[d.HOUR]        = a[d.MINUTE] * 60;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1716
        a[d.DAY]         = a[d.HOUR] * 24;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1717
        a[d.WEEK]        = a[d.DAY] * 7;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1718
        a[d.MONTH]       = a[d.DAY] * 31;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1719
        a[d.YEAR]        = a[d.DAY] * 365;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1720
        a[d.DECADE]      = a[d.YEAR] * 10;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1721
        a[d.CENTURY]     = a[d.YEAR] * 100;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1722
        a[d.MILLENNIUM]  = a[d.YEAR] * 1000;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1723
    })();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1724
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1725
SimileAjax.DateTime._dateRegexp = new RegExp(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1726
    "^(-?)([0-9]{4})(" + [
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1727
        "(-?([0-9]{2})(-?([0-9]{2}))?)", // -month-dayOfMonth
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1728
        "(-?([0-9]{3}))",                // -dayOfYear
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1729
        "(-?W([0-9]{2})(-?([1-7]))?)"    // -Wweek-dayOfWeek
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1730
    ].join("|") + ")?$"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1731
);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1732
SimileAjax.DateTime._timezoneRegexp = new RegExp(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1733
    "Z|(([-+])([0-9]{2})(:?([0-9]{2}))?)$"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1734
);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1735
SimileAjax.DateTime._timeRegexp = new RegExp(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1736
    "^([0-9]{2})(:?([0-9]{2})(:?([0-9]{2})(\.([0-9]+))?)?)?$"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1737
);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1738
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1739
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1740
 * Takes a date object and a string containing an ISO 8601 date and sets the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1741
 * the date using information parsed from the string.  Note that this method
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1742
 * does not parse any time information.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1743
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1744
 * @param {Date} dateObject the date object to modify
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1745
 * @param {String} string an ISO 8601 string to parse
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1746
 * @return {Date} the modified date object
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1747
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1748
SimileAjax.DateTime.setIso8601Date = function(dateObject, string) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1749
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1750
     *  This function has been adapted from dojo.date, v.0.3.0
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1751
     *  http://dojotoolkit.org/.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1752
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1753
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1754
    var d = string.match(SimileAjax.DateTime._dateRegexp);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1755
    if(!d) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1756
        throw new Error("Invalid date string: " + string);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1757
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1758
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1759
    var sign = (d[1] == "-") ? -1 : 1; // BC or AD
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1760
    var year = sign * d[2];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1761
    var month = d[5];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1762
    var date = d[7];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1763
    var dayofyear = d[9];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1764
    var week = d[11];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1765
    var dayofweek = (d[13]) ? d[13] : 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1766
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1767
    dateObject.setUTCFullYear(year);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1768
    if (dayofyear) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1769
        dateObject.setUTCMonth(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1770
        dateObject.setUTCDate(Number(dayofyear));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1771
    } else if (week) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1772
        dateObject.setUTCMonth(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1773
        dateObject.setUTCDate(1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1774
        var gd = dateObject.getUTCDay();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1775
        var day =  (gd) ? gd : 7;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1776
        var offset = Number(dayofweek) + (7 * Number(week));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1777
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1778
        if (day <= 4) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1779
            dateObject.setUTCDate(offset + 1 - day);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1780
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1781
            dateObject.setUTCDate(offset + 8 - day);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1782
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1783
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1784
        if (month) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1785
            dateObject.setUTCDate(1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1786
            dateObject.setUTCMonth(month - 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1787
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1788
        if (date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1789
            dateObject.setUTCDate(date);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1790
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1791
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1792
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1793
    return dateObject;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1794
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1795
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1796
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1797
 * Takes a date object and a string containing an ISO 8601 time and sets the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1798
 * the time using information parsed from the string.  Note that this method
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1799
 * does not parse any date information.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1800
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1801
 * @param {Date} dateObject the date object to modify
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1802
 * @param {String} string an ISO 8601 string to parse
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1803
 * @return {Date} the modified date object
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1804
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1805
SimileAjax.DateTime.setIso8601Time = function (dateObject, string) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1806
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1807
     *  This function has been adapted from dojo.date, v.0.3.0
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1808
     *  http://dojotoolkit.org/.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1809
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1810
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1811
    var d = string.match(SimileAjax.DateTime._timeRegexp);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1812
    if(!d) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1813
        SimileAjax.Debug.warn("Invalid time string: " + string);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1814
        return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1815
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1816
    var hours = d[1];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1817
    var mins = Number((d[3]) ? d[3] : 0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1818
    var secs = (d[5]) ? d[5] : 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1819
    var ms = d[7] ? (Number("0." + d[7]) * 1000) : 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1820
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1821
    dateObject.setUTCHours(hours);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1822
    dateObject.setUTCMinutes(mins);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1823
    dateObject.setUTCSeconds(secs);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1824
    dateObject.setUTCMilliseconds(ms);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1825
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1826
    return dateObject;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1827
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1828
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1829
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1830
 * The timezone offset in minutes in the user's browser.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1831
 * @type Number
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1832
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1833
SimileAjax.DateTime.timezoneOffset = new Date().getTimezoneOffset();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1834
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1835
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1836
 * Takes a date object and a string containing an ISO 8601 date and time and
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1837
 * sets the date object using information parsed from the string.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1838
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1839
 * @param {Date} dateObject the date object to modify
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1840
 * @param {String} string an ISO 8601 string to parse
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1841
 * @return {Date} the modified date object
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1842
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1843
SimileAjax.DateTime.setIso8601 = function (dateObject, string){
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1844
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1845
     *  This function has been adapted from dojo.date, v.0.3.0
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1846
     *  http://dojotoolkit.org/.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1847
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1848
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1849
    var offset = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1850
    var comps = (string.indexOf("T") == -1) ? string.split(" ") : string.split("T");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1851
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1852
    SimileAjax.DateTime.setIso8601Date(dateObject, comps[0]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1853
    if (comps.length == 2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1854
        // first strip timezone info from the end
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1855
        var d = comps[1].match(SimileAjax.DateTime._timezoneRegexp);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1856
        if (d) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1857
            if (d[0] == 'Z') {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1858
                offset = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1859
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1860
                offset = (Number(d[3]) * 60) + Number(d[5]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1861
                offset *= ((d[2] == '-') ? 1 : -1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1862
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1863
            comps[1] = comps[1].substr(0, comps[1].length - d[0].length);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1864
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1865
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1866
        SimileAjax.DateTime.setIso8601Time(dateObject, comps[1]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1867
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1868
    if (offset == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1869
        offset = dateObject.getTimezoneOffset(); // local time zone if no tz info
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1870
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1871
    dateObject.setTime(dateObject.getTime() + offset * 60000);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1872
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1873
    return dateObject;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1874
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1875
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1876
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1877
 * Takes a string containing an ISO 8601 date and returns a newly instantiated
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1878
 * date object with the parsed date and time information from the string.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1879
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1880
 * @param {String} string an ISO 8601 string to parse
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1881
 * @return {Date} a new date object created from the string
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1882
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1883
SimileAjax.DateTime.parseIso8601DateTime = function (string) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1884
    try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1885
        return SimileAjax.DateTime.setIso8601(new Date(0), string);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1886
    } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1887
        return null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1888
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1889
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1890
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1891
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1892
 * Takes a string containing a Gregorian date and time and returns a newly
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1893
 * instantiated date object with the parsed date and time information from the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1894
 * string.  If the param is actually an instance of Date instead of a string,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1895
 * simply returns the given date instead.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1896
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1897
 * @param {Object} o an object, to either return or parse as a string
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1898
 * @return {Date} the date object
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1899
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1900
SimileAjax.DateTime.parseGregorianDateTime = function(o) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1901
    if (o == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1902
        return null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1903
    } else if (o instanceof Date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1904
        return o;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1905
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1906
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1907
    var s = o.toString();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1908
    if (s.length > 0 && s.length < 8) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1909
        var space = s.indexOf(" ");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1910
        if (space > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1911
            var year = parseInt(s.substr(0, space));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1912
            var suffix = s.substr(space + 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1913
            if (suffix.toLowerCase() == "bc") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1914
                year = 1 - year;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1915
            }
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
  1916
        } else {
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1917
            var year = parseInt(s);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1918
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1919
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1920
        var d = new Date(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1921
        d.setUTCFullYear(year);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1922
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1923
        return d;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1924
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1925
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1926
    try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1927
        return new Date(Date.parse(s));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1928
    } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1929
        return null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1930
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1931
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1932
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1933
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1934
 * Rounds date objects down to the nearest interval or multiple of an interval.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1935
 * This method modifies the given date object, converting it to the given
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1936
 * timezone if specified.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1937
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1938
 * @param {Date} date the date object to round
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1939
 * @param {Number} intervalUnit a constant, integer index specifying an
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1940
 *   interval, e.g. SimileAjax.DateTime.HOUR
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1941
 * @param {Number} timeZone a timezone shift, given in hours
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1942
 * @param {Number} multiple a multiple of the interval to round by
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1943
 * @param {Number} firstDayOfWeek an integer specifying the first day of the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1944
 *   week, 0 corresponds to Sunday, 1 to Monday, etc.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1945
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1946
SimileAjax.DateTime.roundDownToInterval = function(date, intervalUnit, timeZone, multiple, firstDayOfWeek) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1947
    var timeShift = timeZone *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1948
        SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.HOUR];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1949
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1950
    var date2 = new Date(date.getTime() + timeShift);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1951
    var clearInDay = function(d) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1952
        d.setUTCMilliseconds(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1953
        d.setUTCSeconds(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1954
        d.setUTCMinutes(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1955
        d.setUTCHours(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1956
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1957
    var clearInYear = function(d) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1958
        clearInDay(d);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1959
        d.setUTCDate(1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1960
        d.setUTCMonth(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1961
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1962
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1963
    switch(intervalUnit) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1964
    case SimileAjax.DateTime.MILLISECOND:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1965
        var x = date2.getUTCMilliseconds();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1966
        date2.setUTCMilliseconds(x - (x % multiple));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1967
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1968
    case SimileAjax.DateTime.SECOND:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1969
        date2.setUTCMilliseconds(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1970
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1971
        var x = date2.getUTCSeconds();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1972
        date2.setUTCSeconds(x - (x % multiple));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1973
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1974
    case SimileAjax.DateTime.MINUTE:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1975
        date2.setUTCMilliseconds(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1976
        date2.setUTCSeconds(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1977
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1978
        var x = date2.getUTCMinutes();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1979
        date2.setTime(date2.getTime() -
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1980
            (x % multiple) * SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.MINUTE]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1981
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1982
    case SimileAjax.DateTime.HOUR:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1983
        date2.setUTCMilliseconds(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1984
        date2.setUTCSeconds(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1985
        date2.setUTCMinutes(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1986
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1987
        var x = date2.getUTCHours();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1988
        date2.setUTCHours(x - (x % multiple));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1989
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1990
    case SimileAjax.DateTime.DAY:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1991
        clearInDay(date2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1992
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1993
    case SimileAjax.DateTime.WEEK:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1994
        clearInDay(date2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1995
        var d = (date2.getUTCDay() + 7 - firstDayOfWeek) % 7;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1996
        date2.setTime(date2.getTime() -
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1997
            d * SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.DAY]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1998
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  1999
    case SimileAjax.DateTime.MONTH:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2000
        clearInDay(date2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2001
        date2.setUTCDate(1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2002
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2003
        var x = date2.getUTCMonth();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2004
        date2.setUTCMonth(x - (x % multiple));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2005
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2006
    case SimileAjax.DateTime.YEAR:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2007
        clearInYear(date2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2008
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2009
        var x = date2.getUTCFullYear();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2010
        date2.setUTCFullYear(x - (x % multiple));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2011
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2012
    case SimileAjax.DateTime.DECADE:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2013
        clearInYear(date2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2014
        date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / 10) * 10);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2015
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2016
    case SimileAjax.DateTime.CENTURY:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2017
        clearInYear(date2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2018
        date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / 100) * 100);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2019
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2020
    case SimileAjax.DateTime.MILLENNIUM:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2021
        clearInYear(date2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2022
        date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / 1000) * 1000);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2023
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2024
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2025
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2026
    date.setTime(date2.getTime() - timeShift);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2027
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2028
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2029
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2030
 * Rounds date objects up to the nearest interval or multiple of an interval.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2031
 * This method modifies the given date object, converting it to the given
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2032
 * timezone if specified.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2033
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2034
 * @param {Date} date the date object to round
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2035
 * @param {Number} intervalUnit a constant, integer index specifying an
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2036
 *   interval, e.g. SimileAjax.DateTime.HOUR
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2037
 * @param {Number} timeZone a timezone shift, given in hours
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2038
 * @param {Number} multiple a multiple of the interval to round by
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2039
 * @param {Number} firstDayOfWeek an integer specifying the first day of the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2040
 *   week, 0 corresponds to Sunday, 1 to Monday, etc.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2041
 * @see SimileAjax.DateTime.roundDownToInterval
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2042
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2043
SimileAjax.DateTime.roundUpToInterval = function(date, intervalUnit, timeZone, multiple, firstDayOfWeek) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2044
    var originalTime = date.getTime();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2045
    SimileAjax.DateTime.roundDownToInterval(date, intervalUnit, timeZone, multiple, firstDayOfWeek);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2046
    if (date.getTime() < originalTime) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2047
        date.setTime(date.getTime() +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2048
            SimileAjax.DateTime.gregorianUnitLengths[intervalUnit] * multiple);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2049
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2050
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2051
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2052
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2053
 * Increments a date object by a specified interval, taking into
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2054
 * consideration the timezone.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2055
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2056
 * @param {Date} date the date object to increment
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2057
 * @param {Number} intervalUnit a constant, integer index specifying an
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2058
 *   interval, e.g. SimileAjax.DateTime.HOUR
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2059
 * @param {Number} timeZone the timezone offset in hours
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2060
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2061
SimileAjax.DateTime.incrementByInterval = function(date, intervalUnit, timeZone) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2062
    timeZone = (typeof timeZone == 'undefined') ? 0 : timeZone;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2063
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2064
    var timeShift = timeZone *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2065
        SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.HOUR];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2066
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2067
    var date2 = new Date(date.getTime() + timeShift);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2068
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2069
    switch(intervalUnit) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2070
    case SimileAjax.DateTime.MILLISECOND:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2071
        date2.setTime(date2.getTime() + 1)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2072
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2073
    case SimileAjax.DateTime.SECOND:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2074
        date2.setTime(date2.getTime() + 1000);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2075
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2076
    case SimileAjax.DateTime.MINUTE:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2077
        date2.setTime(date2.getTime() +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2078
            SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.MINUTE]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2079
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2080
    case SimileAjax.DateTime.HOUR:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2081
        date2.setTime(date2.getTime() +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2082
            SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.HOUR]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2083
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2084
    case SimileAjax.DateTime.DAY:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2085
        date2.setUTCDate(date2.getUTCDate() + 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2086
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2087
    case SimileAjax.DateTime.WEEK:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2088
        date2.setUTCDate(date2.getUTCDate() + 7);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2089
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2090
    case SimileAjax.DateTime.MONTH:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2091
        date2.setUTCMonth(date2.getUTCMonth() + 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2092
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2093
    case SimileAjax.DateTime.YEAR:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2094
        date2.setUTCFullYear(date2.getUTCFullYear() + 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2095
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2096
    case SimileAjax.DateTime.DECADE:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2097
        date2.setUTCFullYear(date2.getUTCFullYear() + 10);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2098
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2099
    case SimileAjax.DateTime.CENTURY:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2100
        date2.setUTCFullYear(date2.getUTCFullYear() + 100);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2101
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2102
    case SimileAjax.DateTime.MILLENNIUM:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2103
        date2.setUTCFullYear(date2.getUTCFullYear() + 1000);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2104
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2105
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2106
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2107
    date.setTime(date2.getTime() - timeShift);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2108
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2109
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2110
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2111
 * Returns a new date object with the given time offset removed.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2112
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2113
 * @param {Date} date the starting date
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2114
 * @param {Number} timeZone a timezone specified in an hour offset to remove
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2115
 * @return {Date} a new date object with the offset removed
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2116
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2117
SimileAjax.DateTime.removeTimeZoneOffset = function(date, timeZone) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2118
    return new Date(date.getTime() +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2119
        timeZone * SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.HOUR]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2120
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2121
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2122
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2123
 * Returns the timezone of the user's browser.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2124
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2125
 * @return {Number} the timezone in the user's locale in hours
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2126
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2127
SimileAjax.DateTime.getTimezone = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2128
    var d = new Date().getTimezoneOffset();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2129
    return d / -60;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2130
};
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  2131
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2132
 *  String Utility Functions and Constants
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  2133
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2134
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2135
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2136
String.prototype.trim = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2137
    return this.replace(/^\s+|\s+$/g, '');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2138
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2139
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2140
String.prototype.startsWith = function(prefix) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2141
    return this.length >= prefix.length && this.substr(0, prefix.length) == prefix;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2142
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2143
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2144
String.prototype.endsWith = function(suffix) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2145
    return this.length >= suffix.length && this.substr(this.length - suffix.length) == suffix;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2146
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2147
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2148
String.substitute = function(s, objects) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2149
    var result = "";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2150
    var start = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2151
    while (start < s.length - 1) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2152
        var percent = s.indexOf("%", start);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2153
        if (percent < 0 || percent == s.length - 1) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2154
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2155
        } else if (percent > start && s.charAt(percent - 1) == "\\") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2156
            result += s.substring(start, percent - 1) + "%";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2157
            start = percent + 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2158
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2159
            var n = parseInt(s.charAt(percent + 1));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2160
            if (isNaN(n) || n >= objects.length) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2161
                result += s.substring(start, percent + 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2162
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2163
                result += s.substring(start, percent) + objects[n].toString();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2164
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2165
            start = percent + 2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2166
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2167
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2168
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2169
    if (start < s.length) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2170
        result += s.substring(start);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2171
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2172
    return result;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2173
};
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  2174
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2175
 *  HTML Utility Functions
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  2176
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2177
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2178
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2179
SimileAjax.HTML = new Object();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2180
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2181
SimileAjax.HTML._e2uHash = {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2182
(function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2183
    var e2uHash = SimileAjax.HTML._e2uHash;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2184
    e2uHash['nbsp']= '\u00A0[space]';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2185
    e2uHash['iexcl']= '\u00A1';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2186
    e2uHash['cent']= '\u00A2';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2187
    e2uHash['pound']= '\u00A3';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2188
    e2uHash['curren']= '\u00A4';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2189
    e2uHash['yen']= '\u00A5';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2190
    e2uHash['brvbar']= '\u00A6';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2191
    e2uHash['sect']= '\u00A7';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2192
    e2uHash['uml']= '\u00A8';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2193
    e2uHash['copy']= '\u00A9';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2194
    e2uHash['ordf']= '\u00AA';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2195
    e2uHash['laquo']= '\u00AB';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2196
    e2uHash['not']= '\u00AC';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2197
    e2uHash['shy']= '\u00AD';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2198
    e2uHash['reg']= '\u00AE';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2199
    e2uHash['macr']= '\u00AF';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2200
    e2uHash['deg']= '\u00B0';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2201
    e2uHash['plusmn']= '\u00B1';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2202
    e2uHash['sup2']= '\u00B2';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2203
    e2uHash['sup3']= '\u00B3';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2204
    e2uHash['acute']= '\u00B4';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2205
    e2uHash['micro']= '\u00B5';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2206
    e2uHash['para']= '\u00B6';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2207
    e2uHash['middot']= '\u00B7';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2208
    e2uHash['cedil']= '\u00B8';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2209
    e2uHash['sup1']= '\u00B9';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2210
    e2uHash['ordm']= '\u00BA';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2211
    e2uHash['raquo']= '\u00BB';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2212
    e2uHash['frac14']= '\u00BC';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2213
    e2uHash['frac12']= '\u00BD';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2214
    e2uHash['frac34']= '\u00BE';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2215
    e2uHash['iquest']= '\u00BF';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2216
    e2uHash['Agrave']= '\u00C0';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2217
    e2uHash['Aacute']= '\u00C1';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2218
    e2uHash['Acirc']= '\u00C2';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2219
    e2uHash['Atilde']= '\u00C3';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2220
    e2uHash['Auml']= '\u00C4';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2221
    e2uHash['Aring']= '\u00C5';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2222
    e2uHash['AElig']= '\u00C6';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2223
    e2uHash['Ccedil']= '\u00C7';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2224
    e2uHash['Egrave']= '\u00C8';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2225
    e2uHash['Eacute']= '\u00C9';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2226
    e2uHash['Ecirc']= '\u00CA';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2227
    e2uHash['Euml']= '\u00CB';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2228
    e2uHash['Igrave']= '\u00CC';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2229
    e2uHash['Iacute']= '\u00CD';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2230
    e2uHash['Icirc']= '\u00CE';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2231
    e2uHash['Iuml']= '\u00CF';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2232
    e2uHash['ETH']= '\u00D0';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2233
    e2uHash['Ntilde']= '\u00D1';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2234
    e2uHash['Ograve']= '\u00D2';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2235
    e2uHash['Oacute']= '\u00D3';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2236
    e2uHash['Ocirc']= '\u00D4';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2237
    e2uHash['Otilde']= '\u00D5';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2238
    e2uHash['Ouml']= '\u00D6';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2239
    e2uHash['times']= '\u00D7';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2240
    e2uHash['Oslash']= '\u00D8';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2241
    e2uHash['Ugrave']= '\u00D9';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2242
    e2uHash['Uacute']= '\u00DA';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2243
    e2uHash['Ucirc']= '\u00DB';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2244
    e2uHash['Uuml']= '\u00DC';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2245
    e2uHash['Yacute']= '\u00DD';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2246
    e2uHash['THORN']= '\u00DE';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2247
    e2uHash['szlig']= '\u00DF';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2248
    e2uHash['agrave']= '\u00E0';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2249
    e2uHash['aacute']= '\u00E1';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2250
    e2uHash['acirc']= '\u00E2';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2251
    e2uHash['atilde']= '\u00E3';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2252
    e2uHash['auml']= '\u00E4';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2253
    e2uHash['aring']= '\u00E5';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2254
    e2uHash['aelig']= '\u00E6';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2255
    e2uHash['ccedil']= '\u00E7';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2256
    e2uHash['egrave']= '\u00E8';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2257
    e2uHash['eacute']= '\u00E9';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2258
    e2uHash['ecirc']= '\u00EA';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2259
    e2uHash['euml']= '\u00EB';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2260
    e2uHash['igrave']= '\u00EC';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2261
    e2uHash['iacute']= '\u00ED';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2262
    e2uHash['icirc']= '\u00EE';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2263
    e2uHash['iuml']= '\u00EF';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2264
    e2uHash['eth']= '\u00F0';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2265
    e2uHash['ntilde']= '\u00F1';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2266
    e2uHash['ograve']= '\u00F2';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2267
    e2uHash['oacute']= '\u00F3';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2268
    e2uHash['ocirc']= '\u00F4';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2269
    e2uHash['otilde']= '\u00F5';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2270
    e2uHash['ouml']= '\u00F6';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2271
    e2uHash['divide']= '\u00F7';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2272
    e2uHash['oslash']= '\u00F8';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2273
    e2uHash['ugrave']= '\u00F9';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2274
    e2uHash['uacute']= '\u00FA';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2275
    e2uHash['ucirc']= '\u00FB';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2276
    e2uHash['uuml']= '\u00FC';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2277
    e2uHash['yacute']= '\u00FD';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2278
    e2uHash['thorn']= '\u00FE';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2279
    e2uHash['yuml']= '\u00FF';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2280
    e2uHash['quot']= '\u0022';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2281
    e2uHash['amp']= '\u0026';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2282
    e2uHash['lt']= '\u003C';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2283
    e2uHash['gt']= '\u003E';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2284
    e2uHash['OElig']= '';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2285
    e2uHash['oelig']= '\u0153';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2286
    e2uHash['Scaron']= '\u0160';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2287
    e2uHash['scaron']= '\u0161';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2288
    e2uHash['Yuml']= '\u0178';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2289
    e2uHash['circ']= '\u02C6';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2290
    e2uHash['tilde']= '\u02DC';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2291
    e2uHash['ensp']= '\u2002';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2292
    e2uHash['emsp']= '\u2003';
5767
1d811df051c2 [packaging] MANIFEST.in cleanups, update js/css copyright, remove no more used files
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2097
diff changeset
  2293
    e2uHash['thinsp']= '\u2010';
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2294
    e2uHash['zwnj']= '\u200C';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2295
    e2uHash['zwj']= '\u200D';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2296
    e2uHash['lrm']= '\u200E';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2297
    e2uHash['rlm']= '\u200F';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2298
    e2uHash['ndash']= '\u2013';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2299
    e2uHash['mdash']= '\u2014';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2300
    e2uHash['lsquo']= '\u2018';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2301
    e2uHash['rsquo']= '\u2019';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2302
    e2uHash['sbquo']= '\u201A';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2303
    e2uHash['ldquo']= '\u201C';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2304
    e2uHash['rdquo']= '\u201D';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2305
    e2uHash['bdquo']= '\u201E';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2306
    e2uHash['dagger']= '\u2020';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2307
    e2uHash['Dagger']= '\u2021';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2308
    e2uHash['permil']= '\u2030';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2309
    e2uHash['lsaquo']= '\u2039';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2310
    e2uHash['rsaquo']= '\u203A';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2311
    e2uHash['euro']= '\u20AC';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2312
    e2uHash['fnof']= '\u0192';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2313
    e2uHash['Alpha']= '\u0391';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2314
    e2uHash['Beta']= '\u0392';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2315
    e2uHash['Gamma']= '\u0393';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2316
    e2uHash['Delta']= '\u0394';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2317
    e2uHash['Epsilon']= '\u0395';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2318
    e2uHash['Zeta']= '\u0396';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2319
    e2uHash['Eta']= '\u0397';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2320
    e2uHash['Theta']= '\u0398';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2321
    e2uHash['Iota']= '\u0399';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2322
    e2uHash['Kappa']= '\u039A';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2323
    e2uHash['Lambda']= '\u039B';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2324
    e2uHash['Mu']= '\u039C';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2325
    e2uHash['Nu']= '\u039D';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2326
    e2uHash['Xi']= '\u039E';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2327
    e2uHash['Omicron']= '\u039F';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2328
    e2uHash['Pi']= '\u03A0';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2329
    e2uHash['Rho']= '\u03A1';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2330
    e2uHash['Sigma']= '\u03A3';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2331
    e2uHash['Tau']= '\u03A4';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2332
    e2uHash['Upsilon']= '\u03A5';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2333
    e2uHash['Phi']= '\u03A6';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2334
    e2uHash['Chi']= '\u03A7';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2335
    e2uHash['Psi']= '\u03A8';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2336
    e2uHash['Omega']= '\u03A9';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2337
    e2uHash['alpha']= '\u03B1';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2338
    e2uHash['beta']= '\u03B2';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2339
    e2uHash['gamma']= '\u03B3';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2340
    e2uHash['delta']= '\u03B4';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2341
    e2uHash['epsilon']= '\u03B5';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2342
    e2uHash['zeta']= '\u03B6';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2343
    e2uHash['eta']= '\u03B7';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2344
    e2uHash['theta']= '\u03B8';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2345
    e2uHash['iota']= '\u03B9';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2346
    e2uHash['kappa']= '\u03BA';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2347
    e2uHash['lambda']= '\u03BB';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2348
    e2uHash['mu']= '\u03BC';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2349
    e2uHash['nu']= '\u03BD';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2350
    e2uHash['xi']= '\u03BE';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2351
    e2uHash['omicron']= '\u03BF';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2352
    e2uHash['pi']= '\u03C0';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2353
    e2uHash['rho']= '\u03C1';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2354
    e2uHash['sigmaf']= '\u03C2';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2355
    e2uHash['sigma']= '\u03C3';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2356
    e2uHash['tau']= '\u03C4';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2357
    e2uHash['upsilon']= '\u03C5';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2358
    e2uHash['phi']= '\u03C6';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2359
    e2uHash['chi']= '\u03C7';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2360
    e2uHash['psi']= '\u03C8';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2361
    e2uHash['omega']= '\u03C9';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2362
    e2uHash['thetasym']= '\u03D1';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2363
    e2uHash['upsih']= '\u03D2';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2364
    e2uHash['piv']= '\u03D6';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2365
    e2uHash['bull']= '\u2022';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2366
    e2uHash['hellip']= '\u2026';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2367
    e2uHash['prime']= '\u2032';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2368
    e2uHash['Prime']= '\u2033';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2369
    e2uHash['oline']= '\u203E';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2370
    e2uHash['frasl']= '\u2044';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2371
    e2uHash['weierp']= '\u2118';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2372
    e2uHash['image']= '\u2111';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2373
    e2uHash['real']= '\u211C';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2374
    e2uHash['trade']= '\u2122';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2375
    e2uHash['alefsym']= '\u2135';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2376
    e2uHash['larr']= '\u2190';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2377
    e2uHash['uarr']= '\u2191';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2378
    e2uHash['rarr']= '\u2192';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2379
    e2uHash['darr']= '\u2193';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2380
    e2uHash['harr']= '\u2194';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2381
    e2uHash['crarr']= '\u21B5';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2382
    e2uHash['lArr']= '\u21D0';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2383
    e2uHash['uArr']= '\u21D1';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2384
    e2uHash['rArr']= '\u21D2';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2385
    e2uHash['dArr']= '\u21D3';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2386
    e2uHash['hArr']= '\u21D4';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2387
    e2uHash['forall']= '\u2200';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2388
    e2uHash['part']= '\u2202';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2389
    e2uHash['exist']= '\u2203';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2390
    e2uHash['empty']= '\u2205';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2391
    e2uHash['nabla']= '\u2207';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2392
    e2uHash['isin']= '\u2208';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2393
    e2uHash['notin']= '\u2209';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2394
    e2uHash['ni']= '\u220B';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2395
    e2uHash['prod']= '\u220F';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2396
    e2uHash['sum']= '\u2211';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2397
    e2uHash['minus']= '\u2212';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2398
    e2uHash['lowast']= '\u2217';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2399
    e2uHash['radic']= '\u221A';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2400
    e2uHash['prop']= '\u221D';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2401
    e2uHash['infin']= '\u221E';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2402
    e2uHash['ang']= '\u2220';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2403
    e2uHash['and']= '\u2227';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2404
    e2uHash['or']= '\u2228';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2405
    e2uHash['cap']= '\u2229';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2406
    e2uHash['cup']= '\u222A';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2407
    e2uHash['int']= '\u222B';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2408
    e2uHash['there4']= '\u2234';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2409
    e2uHash['sim']= '\u223C';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2410
    e2uHash['cong']= '\u2245';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2411
    e2uHash['asymp']= '\u2248';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2412
    e2uHash['ne']= '\u2260';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2413
    e2uHash['equiv']= '\u2261';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2414
    e2uHash['le']= '\u2264';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2415
    e2uHash['ge']= '\u2265';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2416
    e2uHash['sub']= '\u2282';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2417
    e2uHash['sup']= '\u2283';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2418
    e2uHash['nsub']= '\u2284';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2419
    e2uHash['sube']= '\u2286';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2420
    e2uHash['supe']= '\u2287';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2421
    e2uHash['oplus']= '\u2295';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2422
    e2uHash['otimes']= '\u2297';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2423
    e2uHash['perp']= '\u22A5';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2424
    e2uHash['sdot']= '\u22C5';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2425
    e2uHash['lceil']= '\u2308';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2426
    e2uHash['rceil']= '\u2309';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2427
    e2uHash['lfloor']= '\u230A';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2428
    e2uHash['rfloor']= '\u230B';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2429
    e2uHash['lang']= '\u2329';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2430
    e2uHash['rang']= '\u232A';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2431
    e2uHash['loz']= '\u25CA';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2432
    e2uHash['spades']= '\u2660';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2433
    e2uHash['clubs']= '\u2663';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2434
    e2uHash['hearts']= '\u2665';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2435
    e2uHash['diams']= '\u2666';
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
  2436
})();
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2437
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2438
SimileAjax.HTML.deEntify = function(s) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2439
    var e2uHash = SimileAjax.HTML._e2uHash;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2440
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2441
    var re = /&(\w+?);/;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2442
    while (re.test(s)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2443
        var m = s.match(re);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2444
        s = s.replace(re, e2uHash[m[1]]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2445
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2446
    return s;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2447
};/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2448
 * A basic set (in the mathematical sense) data structure
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2449
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2450
 * @constructor
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2451
 * @param {Array or SimileAjax.Set} [a] an initial collection
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2452
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2453
SimileAjax.Set = function(a) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2454
    this._hash = {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2455
    this._count = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2456
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2457
    if (a instanceof Array) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2458
        for (var i = 0; i < a.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2459
            this.add(a[i]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2460
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2461
    } else if (a instanceof SimileAjax.Set) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2462
        this.addSet(a);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2463
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2464
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2465
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2466
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2467
 * Adds the given object to this set, assuming there it does not already exist
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2468
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2469
 * @param {Object} o the object to add
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2470
 * @return {Boolean} true if the object was added, false if not
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2471
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2472
SimileAjax.Set.prototype.add = function(o) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2473
    if (!(o in this._hash)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2474
        this._hash[o] = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2475
        this._count++;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2476
        return true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2477
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2478
    return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2479
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2480
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2481
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2482
 * Adds each element in the given set to this set
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2483
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2484
 * @param {SimileAjax.Set} set the set of elements to add
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2485
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2486
SimileAjax.Set.prototype.addSet = function(set) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2487
    for (var o in set._hash) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2488
        this.add(o);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2489
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2490
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2491
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2492
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2493
 * Removes the given element from this set
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2494
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2495
 * @param {Object} o the object to remove
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2496
 * @return {Boolean} true if the object was successfully removed,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2497
 *   false otherwise
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2498
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2499
SimileAjax.Set.prototype.remove = function(o) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2500
    if (o in this._hash) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2501
        delete this._hash[o];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2502
        this._count--;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2503
        return true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2504
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2505
    return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2506
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2507
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2508
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2509
 * Removes the elements in this set that correspond to the elements in the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2510
 * given set
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2511
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2512
 * @param {SimileAjax.Set} set the set of elements to remove
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2513
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2514
SimileAjax.Set.prototype.removeSet = function(set) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2515
    for (var o in set._hash) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2516
        this.remove(o);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2517
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2518
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2519
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2520
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2521
 * Removes all elements in this set that are not present in the given set, i.e.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2522
 * modifies this set to the intersection of the two sets
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2523
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2524
 * @param {SimileAjax.Set} set the set to intersect
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2525
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2526
SimileAjax.Set.prototype.retainSet = function(set) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2527
    for (var o in this._hash) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2528
        if (!set.contains(o)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2529
            delete this._hash[o];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2530
            this._count--;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2531
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2532
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2533
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2534
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2535
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2536
 * Returns whether or not the given element exists in this set
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2537
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2538
 * @param {SimileAjax.Set} o the object to test for
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2539
 * @return {Boolean} true if the object is present, false otherwise
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2540
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2541
SimileAjax.Set.prototype.contains = function(o) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2542
    return (o in this._hash);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2543
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2544
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2545
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2546
 * Returns the number of elements in this set
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2547
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2548
 * @return {Number} the number of elements in this set
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2549
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2550
SimileAjax.Set.prototype.size = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2551
    return this._count;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2552
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2553
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2554
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2555
 * Returns the elements of this set as an array
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2556
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2557
 * @return {Array} a new array containing the elements of this set
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2558
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2559
SimileAjax.Set.prototype.toArray = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2560
    var a = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2561
    for (var o in this._hash) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2562
        a.push(o);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2563
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2564
    return a;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2565
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2566
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2567
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2568
 * Iterates through the elements of this set, order unspecified, executing the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2569
 * given function on each element until the function returns true
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2570
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2571
 * @param {Function} f a function of form f(element)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2572
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2573
SimileAjax.Set.prototype.visit = function(f) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2574
    for (var o in this._hash) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2575
        if (f(o) == true) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2576
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2577
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2578
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2579
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2580
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2581
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2582
 * A sorted array data structure
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2583
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2584
 * @constructor
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2585
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2586
SimileAjax.SortedArray = function(compare, initialArray) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2587
    this._a = (initialArray instanceof Array) ? initialArray : [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2588
    this._compare = compare;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2589
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2590
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2591
SimileAjax.SortedArray.prototype.add = function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2592
    var sa = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2593
    var index = this.find(function(elmt2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2594
        return sa._compare(elmt2, elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2595
    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2596
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2597
    if (index < this._a.length) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2598
        this._a.splice(index, 0, elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2599
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2600
        this._a.push(elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2601
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2602
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2603
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2604
SimileAjax.SortedArray.prototype.remove = function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2605
    var sa = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2606
    var index = this.find(function(elmt2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2607
        return sa._compare(elmt2, elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2608
    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2609
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2610
    while (index < this._a.length && this._compare(this._a[index], elmt) == 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2611
        if (this._a[index] == elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2612
            this._a.splice(index, 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2613
            return true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2614
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2615
            index++;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2616
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2617
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2618
    return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2619
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2620
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2621
SimileAjax.SortedArray.prototype.removeAll = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2622
    this._a = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2623
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2624
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2625
SimileAjax.SortedArray.prototype.elementAt = function(index) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2626
    return this._a[index];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2627
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2628
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2629
SimileAjax.SortedArray.prototype.length = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2630
    return this._a.length;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2631
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2632
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2633
SimileAjax.SortedArray.prototype.find = function(compare) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2634
    var a = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2635
    var b = this._a.length;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2636
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2637
    while (a < b) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2638
        var mid = Math.floor((a + b) / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2639
        var c = compare(this._a[mid]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2640
        if (mid == a) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2641
            return c < 0 ? a+1 : a;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2642
        } else if (c < 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2643
            a = mid;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2644
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2645
            b = mid;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2646
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2647
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2648
    return a;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2649
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2650
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2651
SimileAjax.SortedArray.prototype.getFirst = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2652
    return (this._a.length > 0) ? this._a[0] : null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2653
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2654
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2655
SimileAjax.SortedArray.prototype.getLast = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2656
    return (this._a.length > 0) ? this._a[this._a.length - 1] : null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2657
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2658
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  2659
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2660
 *  Event Index
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  2661
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2662
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2663
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2664
SimileAjax.EventIndex = function(unit) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2665
    var eventIndex = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2666
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2667
    this._unit = (unit != null) ? unit : SimileAjax.NativeDateUnit;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2668
    this._events = new SimileAjax.SortedArray(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2669
        function(event1, event2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2670
            return eventIndex._unit.compare(event1.getStart(), event2.getStart());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2671
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2672
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2673
    this._idToEvent = {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2674
    this._indexed = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2675
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2676
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2677
SimileAjax.EventIndex.prototype.getUnit = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2678
    return this._unit;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2679
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2680
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2681
SimileAjax.EventIndex.prototype.getEvent = function(id) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2682
    return this._idToEvent[id];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2683
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2684
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2685
SimileAjax.EventIndex.prototype.add = function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2686
    this._events.add(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2687
    this._idToEvent[evt.getID()] = evt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2688
    this._indexed = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2689
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2690
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2691
SimileAjax.EventIndex.prototype.removeAll = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2692
    this._events.removeAll();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2693
    this._idToEvent = {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2694
    this._indexed = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2695
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2696
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2697
SimileAjax.EventIndex.prototype.getCount = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2698
    return this._events.length();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2699
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2700
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2701
SimileAjax.EventIndex.prototype.getIterator = function(startDate, endDate) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2702
    if (!this._indexed) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2703
        this._index();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2704
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2705
    return new SimileAjax.EventIndex._Iterator(this._events, startDate, endDate, this._unit);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2706
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2707
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2708
SimileAjax.EventIndex.prototype.getReverseIterator = function(startDate, endDate) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2709
    if (!this._indexed) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2710
        this._index();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2711
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2712
    return new SimileAjax.EventIndex._ReverseIterator(this._events, startDate, endDate, this._unit);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2713
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2714
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2715
SimileAjax.EventIndex.prototype.getAllIterator = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2716
    return new SimileAjax.EventIndex._AllIterator(this._events);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2717
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2718
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2719
SimileAjax.EventIndex.prototype.getEarliestDate = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2720
    var evt = this._events.getFirst();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2721
    return (evt == null) ? null : evt.getStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2722
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2723
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2724
SimileAjax.EventIndex.prototype.getLatestDate = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2725
    var evt = this._events.getLast();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2726
    if (evt == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2727
        return null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2728
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2729
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2730
    if (!this._indexed) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2731
        this._index();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2732
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2733
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2734
    var index = evt._earliestOverlapIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2735
    var date = this._events.elementAt(index).getEnd();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2736
    for (var i = index + 1; i < this._events.length(); i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2737
        date = this._unit.later(date, this._events.elementAt(i).getEnd());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2738
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2739
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2740
    return date;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2741
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2742
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2743
SimileAjax.EventIndex.prototype._index = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2744
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2745
     *  For each event, we want to find the earliest preceding
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2746
     *  event that overlaps with it, if any.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2747
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2748
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2749
    var l = this._events.length();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2750
    for (var i = 0; i < l; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2751
        var evt = this._events.elementAt(i);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2752
        evt._earliestOverlapIndex = i;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2753
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2754
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2755
    var toIndex = 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2756
    for (var i = 0; i < l; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2757
        var evt = this._events.elementAt(i);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2758
        var end = evt.getEnd();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2759
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2760
        toIndex = Math.max(toIndex, i + 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2761
        while (toIndex < l) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2762
            var evt2 = this._events.elementAt(toIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2763
            var start2 = evt2.getStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2764
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2765
            if (this._unit.compare(start2, end) < 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2766
                evt2._earliestOverlapIndex = i;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2767
                toIndex++;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2768
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2769
                break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2770
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2771
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2772
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2773
    this._indexed = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2774
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2775
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2776
SimileAjax.EventIndex._Iterator = function(events, startDate, endDate, unit) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2777
    this._events = events;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2778
    this._startDate = startDate;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2779
    this._endDate = endDate;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2780
    this._unit = unit;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2781
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2782
    this._currentIndex = events.find(function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2783
        return unit.compare(evt.getStart(), startDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2784
    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2785
    if (this._currentIndex - 1 >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2786
        this._currentIndex = this._events.elementAt(this._currentIndex - 1)._earliestOverlapIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2787
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2788
    this._currentIndex--;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2789
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2790
    this._maxIndex = events.find(function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2791
        return unit.compare(evt.getStart(), endDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2792
    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2793
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2794
    this._hasNext = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2795
    this._next = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2796
    this._findNext();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2797
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2798
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2799
SimileAjax.EventIndex._Iterator.prototype = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2800
    hasNext: function() { return this._hasNext; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2801
    next: function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2802
        if (this._hasNext) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2803
            var next = this._next;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2804
            this._findNext();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2805
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2806
            return next;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2807
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2808
            return null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2809
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2810
    },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2811
    _findNext: function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2812
        var unit = this._unit;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2813
        while ((++this._currentIndex) < this._maxIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2814
            var evt = this._events.elementAt(this._currentIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2815
            if (unit.compare(evt.getStart(), this._endDate) < 0 &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2816
                unit.compare(evt.getEnd(), this._startDate) > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2817
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2818
                this._next = evt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2819
                this._hasNext = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2820
                return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2821
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2822
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2823
        this._next = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2824
        this._hasNext = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2825
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2826
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2827
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2828
SimileAjax.EventIndex._ReverseIterator = function(events, startDate, endDate, unit) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2829
    this._events = events;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2830
    this._startDate = startDate;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2831
    this._endDate = endDate;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2832
    this._unit = unit;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2833
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2834
    this._minIndex = events.find(function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2835
        return unit.compare(evt.getStart(), startDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2836
    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2837
    if (this._minIndex - 1 >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2838
        this._minIndex = this._events.elementAt(this._minIndex - 1)._earliestOverlapIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2839
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2840
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2841
    this._maxIndex = events.find(function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2842
        return unit.compare(evt.getStart(), endDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2843
    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2844
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2845
    this._currentIndex = this._maxIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2846
    this._hasNext = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2847
    this._next = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2848
    this._findNext();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2849
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2850
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2851
SimileAjax.EventIndex._ReverseIterator.prototype = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2852
    hasNext: function() { return this._hasNext; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2853
    next: function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2854
        if (this._hasNext) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2855
            var next = this._next;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2856
            this._findNext();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2857
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2858
            return next;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2859
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2860
            return null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2861
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2862
    },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2863
    _findNext: function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2864
        var unit = this._unit;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2865
        while ((--this._currentIndex) >= this._minIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2866
            var evt = this._events.elementAt(this._currentIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2867
            if (unit.compare(evt.getStart(), this._endDate) < 0 &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2868
                unit.compare(evt.getEnd(), this._startDate) > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2869
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2870
                this._next = evt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2871
                this._hasNext = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2872
                return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2873
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2874
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2875
        this._next = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2876
        this._hasNext = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2877
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2878
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2879
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2880
SimileAjax.EventIndex._AllIterator = function(events) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2881
    this._events = events;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2882
    this._index = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2883
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2884
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2885
SimileAjax.EventIndex._AllIterator.prototype = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2886
    hasNext: function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2887
        return this._index < this._events.length();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2888
    },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2889
    next: function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2890
        return this._index < this._events.length() ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2891
            this._events.elementAt(this._index++) : null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2892
    }
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  2893
};/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2894
 *  Default Unit
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  2895
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2896
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2897
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2898
SimileAjax.NativeDateUnit = new Object();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2899
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2900
SimileAjax.NativeDateUnit.makeDefaultValue = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2901
    return new Date();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2902
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2903
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2904
SimileAjax.NativeDateUnit.cloneValue = function(v) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2905
    return new Date(v.getTime());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2906
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2907
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2908
SimileAjax.NativeDateUnit.getParser = function(format) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2909
    if (typeof format == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2910
        format = format.toLowerCase();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2911
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2912
    return (format == "iso8601" || format == "iso 8601") ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2913
        SimileAjax.DateTime.parseIso8601DateTime : 
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2914
        SimileAjax.DateTime.parseGregorianDateTime;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2915
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2916
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2917
SimileAjax.NativeDateUnit.parseFromObject = function(o) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2918
    return SimileAjax.DateTime.parseGregorianDateTime(o);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2919
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2920
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2921
SimileAjax.NativeDateUnit.toNumber = function(v) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2922
    return v.getTime();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2923
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2924
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2925
SimileAjax.NativeDateUnit.fromNumber = function(n) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2926
    return new Date(n);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2927
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2928
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2929
SimileAjax.NativeDateUnit.compare = function(v1, v2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2930
    var n1, n2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2931
    if (typeof v1 == "object") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2932
        n1 = v1.getTime();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2933
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2934
        n1 = Number(v1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2935
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2936
    if (typeof v2 == "object") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2937
        n2 = v2.getTime();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2938
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2939
        n2 = Number(v2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2940
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2941
    
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2942
    return n1 - n2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2943
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2944
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2945
SimileAjax.NativeDateUnit.earlier = function(v1, v2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2946
    return SimileAjax.NativeDateUnit.compare(v1, v2) < 0 ? v1 : v2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2947
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2948
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2949
SimileAjax.NativeDateUnit.later = function(v1, v2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2950
    return SimileAjax.NativeDateUnit.compare(v1, v2) > 0 ? v1 : v2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2951
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2952
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2953
SimileAjax.NativeDateUnit.change = function(v, n) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2954
    return new Date(v.getTime() + n);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2955
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2956
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  2957
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2958
 *  General, miscellaneous SimileAjax stuff
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  2959
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2960
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2961
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2962
SimileAjax.ListenerQueue = function(wildcardHandlerName) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2963
    this._listeners = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2964
    this._wildcardHandlerName = wildcardHandlerName;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2965
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2966
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2967
SimileAjax.ListenerQueue.prototype.add = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2968
    this._listeners.push(listener);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2969
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2970
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2971
SimileAjax.ListenerQueue.prototype.remove = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2972
    var listeners = this._listeners;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2973
    for (var i = 0; i < listeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2974
        if (listeners[i] == listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2975
            listeners.splice(i, 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2976
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2977
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2978
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2979
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2980
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2981
SimileAjax.ListenerQueue.prototype.fire = function(handlerName, args) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2982
    var listeners = [].concat(this._listeners);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2983
    for (var i = 0; i < listeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2984
        var listener = listeners[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2985
        if (handlerName in listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2986
            try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2987
                listener[handlerName].apply(listener, args);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2988
            } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2989
                SimileAjax.Debug.exception("Error firing event of name " + handlerName, e);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2990
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2991
        } else if (this._wildcardHandlerName != null &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2992
            this._wildcardHandlerName in listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2993
            try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2994
                listener[this._wildcardHandlerName].apply(listener, [ handlerName ]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2995
            } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2996
                SimileAjax.Debug.exception("Error firing event of name " + handlerName + " to wildcard handler", e);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2997
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2998
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  2999
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3000
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3001
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  3002
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3003
 *  History
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3004
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3005
 *  This is a singleton that keeps track of undoable user actions and
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3006
 *  performs undos and redos in response to the browser's Back and
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3007
 *  Forward buttons.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3008
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3009
 *  Call addAction(action) to register an undoable user action. action
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3010
 *  must have 4 fields:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3011
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3012
 *      perform: an argument-less function that carries out the action
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3013
 *      undo:    an argument-less function that undos the action
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3014
 *      label:   a short, user-friendly string describing the action
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3015
 *      uiLayer: the UI layer on which the action takes place
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3016
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3017
 *  By default, the history keeps track of upto 10 actions. You can
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3018
 *  configure this behavior by setting
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3019
 *      SimileAjax.History.maxHistoryLength
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3020
 *  to a different number.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3021
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3022
 *  An iframe is inserted into the document's body element to track
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3023
 *  onload events.
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  3024
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3025
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3026
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3027
SimileAjax.History = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3028
    maxHistoryLength:       10,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3029
    historyFile:            "__history__.html",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3030
    enabled:               true,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3031
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3032
    _initialized:           false,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3033
    _listeners:             new SimileAjax.ListenerQueue(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3034
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3035
    _actions:               [],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3036
    _baseIndex:             0,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3037
    _currentIndex:          0,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3038
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3039
    _plainDocumentTitle:    document.title
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3040
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3041
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3042
SimileAjax.History.formatHistoryEntryTitle = function(actionLabel) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3043
    return SimileAjax.History._plainDocumentTitle + " {" + actionLabel + "}";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3044
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3045
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3046
SimileAjax.History.initialize = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3047
    if (SimileAjax.History._initialized) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3048
        return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3049
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3050
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3051
    if (SimileAjax.History.enabled) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3052
        var iframe = document.createElement("iframe");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3053
        iframe.id = "simile-ajax-history";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3054
        iframe.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3055
        iframe.style.width = "10px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3056
        iframe.style.height = "10px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3057
        iframe.style.top = "0px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3058
        iframe.style.left = "0px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3059
        iframe.style.visibility = "hidden";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3060
        iframe.src = SimileAjax.History.historyFile + "?0";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3061
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3062
        document.body.appendChild(iframe);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3063
        SimileAjax.DOM.registerEvent(iframe, "load", SimileAjax.History._handleIFrameOnLoad);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3064
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3065
        SimileAjax.History._iframe = iframe;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3066
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3067
    SimileAjax.History._initialized = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3068
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3069
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3070
SimileAjax.History.addListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3071
    SimileAjax.History.initialize();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3072
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3073
    SimileAjax.History._listeners.add(listener);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3074
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3075
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3076
SimileAjax.History.removeListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3077
    SimileAjax.History.initialize();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3078
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3079
    SimileAjax.History._listeners.remove(listener);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3080
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3081
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3082
SimileAjax.History.addAction = function(action) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3083
    SimileAjax.History.initialize();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3084
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3085
    SimileAjax.History._listeners.fire("onBeforePerform", [ action ]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3086
    window.setTimeout(function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3087
        try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3088
            action.perform();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3089
            SimileAjax.History._listeners.fire("onAfterPerform", [ action ]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3090
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3091
            if (SimileAjax.History.enabled) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3092
                SimileAjax.History._actions = SimileAjax.History._actions.slice(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3093
                    0, SimileAjax.History._currentIndex - SimileAjax.History._baseIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3094
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3095
                SimileAjax.History._actions.push(action);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3096
                SimileAjax.History._currentIndex++;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3097
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3098
                var diff = SimileAjax.History._actions.length - SimileAjax.History.maxHistoryLength;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3099
                if (diff > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3100
                    SimileAjax.History._actions = SimileAjax.History._actions.slice(diff);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3101
                    SimileAjax.History._baseIndex += diff;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3102
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3103
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3104
                try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3105
                    SimileAjax.History._iframe.contentWindow.location.search =
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3106
                        "?" + SimileAjax.History._currentIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3107
                } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3108
                    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3109
                     *  We can't modify location.search most probably because it's a file:// url.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3110
                     *  We'll just going to modify the document's title.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3111
                     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3112
                    var title = SimileAjax.History.formatHistoryEntryTitle(action.label);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3113
                    document.title = title;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3114
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3115
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3116
        } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3117
            SimileAjax.Debug.exception(e, "Error adding action {" + action.label + "} to history");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3118
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3119
    }, 0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3120
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3121
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3122
SimileAjax.History.addLengthyAction = function(perform, undo, label) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3123
    SimileAjax.History.addAction({
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3124
        perform:    perform,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3125
        undo:       undo,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3126
        label:      label,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3127
        uiLayer:    SimileAjax.WindowManager.getBaseLayer(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3128
        lengthy:    true
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3129
    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3130
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3131
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3132
SimileAjax.History._handleIFrameOnLoad = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3133
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3134
     *  This function is invoked when the user herself
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3135
     *  navigates backward or forward. We need to adjust
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3136
     *  the application's state accordingly.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3137
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3138
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3139
    try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3140
        var q = SimileAjax.History._iframe.contentWindow.location.search;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3141
        var c = (q.length == 0) ? 0 : Math.max(0, parseInt(q.substr(1)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3142
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3143
        var finishUp = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3144
            var diff = c - SimileAjax.History._currentIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3145
            SimileAjax.History._currentIndex += diff;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3146
            SimileAjax.History._baseIndex += diff;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3147
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3148
            SimileAjax.History._iframe.contentWindow.location.search = "?" + c;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3149
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3150
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3151
        if (c < SimileAjax.History._currentIndex) { // need to undo
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3152
            SimileAjax.History._listeners.fire("onBeforeUndoSeveral", []);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3153
            window.setTimeout(function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3154
                while (SimileAjax.History._currentIndex > c &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3155
                       SimileAjax.History._currentIndex > SimileAjax.History._baseIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3157
                    SimileAjax.History._currentIndex--;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3158
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3159
                    var action = SimileAjax.History._actions[SimileAjax.History._currentIndex - SimileAjax.History._baseIndex];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3160
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3161
                    try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3162
                        action.undo();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3163
                    } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3164
                        SimileAjax.Debug.exception(e, "History: Failed to undo action {" + action.label + "}");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3165
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3166
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3167
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3168
                SimileAjax.History._listeners.fire("onAfterUndoSeveral", []);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3169
                finishUp();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3170
            }, 0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3171
        } else if (c > SimileAjax.History._currentIndex) { // need to redo
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3172
            SimileAjax.History._listeners.fire("onBeforeRedoSeveral", []);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3173
            window.setTimeout(function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3174
                while (SimileAjax.History._currentIndex < c &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3175
                       SimileAjax.History._currentIndex - SimileAjax.History._baseIndex < SimileAjax.History._actions.length) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3176
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3177
                    var action = SimileAjax.History._actions[SimileAjax.History._currentIndex - SimileAjax.History._baseIndex];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3178
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3179
                    try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3180
                        action.perform();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3181
                    } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3182
                        SimileAjax.Debug.exception(e, "History: Failed to redo action {" + action.label + "}");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3183
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3184
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3185
                    SimileAjax.History._currentIndex++;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3186
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3187
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3188
                SimileAjax.History._listeners.fire("onAfterRedoSeveral", []);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3189
                finishUp();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3190
            }, 0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3191
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3192
            var index = SimileAjax.History._currentIndex - SimileAjax.History._baseIndex - 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3193
            var title = (index >= 0 && index < SimileAjax.History._actions.length) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3194
                SimileAjax.History.formatHistoryEntryTitle(SimileAjax.History._actions[index].label) :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3195
                SimileAjax.History._plainDocumentTitle;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3196
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3197
            SimileAjax.History._iframe.contentWindow.document.title = title;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3198
            document.title = title;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3199
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3200
    } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3201
        // silent
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3202
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3203
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3204
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3205
SimileAjax.History.getNextUndoAction = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3206
    try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3207
        var index = SimileAjax.History._currentIndex - SimileAjax.History._baseIndex - 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3208
        return SimileAjax.History._actions[index];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3209
    } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3210
        return null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3211
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3212
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3213
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3214
SimileAjax.History.getNextRedoAction = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3215
    try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3216
        var index = SimileAjax.History._currentIndex - SimileAjax.History._baseIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3217
        return SimileAjax.History._actions[index];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3218
    } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3219
        return null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3220
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3221
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3222
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3223
 * @fileOverview UI layers and window-wide dragging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3224
 * @name SimileAjax.WindowManager
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3225
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3226
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3227
/**
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3228
 *  This is a singleton that keeps track of UI layers (modal and
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3229
 *  modeless) and enables/disables UI elements based on which layers
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3230
 *  they belong to. It also provides window-wide dragging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3231
 *  implementation.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3232
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3233
SimileAjax.WindowManager = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3234
    _initialized:       false,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3235
    _listeners:         [],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3236
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3237
    _draggedElement:                null,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3238
    _draggedElementCallback:        null,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3239
    _dropTargetHighlightElement:    null,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3240
    _lastCoords:                    null,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3241
    _ghostCoords:                   null,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3242
    _draggingMode:                  "",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3243
    _dragging:                      false,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3244
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3245
    _layers:            []
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3246
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3247
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3248
SimileAjax.WindowManager.initialize = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3249
    if (SimileAjax.WindowManager._initialized) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3250
        return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3251
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3252
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3253
    SimileAjax.DOM.registerEvent(document.body, "mousedown", SimileAjax.WindowManager._onBodyMouseDown);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3254
    SimileAjax.DOM.registerEvent(document.body, "mousemove", SimileAjax.WindowManager._onBodyMouseMove);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3255
    SimileAjax.DOM.registerEvent(document.body, "mouseup",   SimileAjax.WindowManager._onBodyMouseUp);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3256
    SimileAjax.DOM.registerEvent(document, "keydown",       SimileAjax.WindowManager._onBodyKeyDown);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3257
    SimileAjax.DOM.registerEvent(document, "keyup",         SimileAjax.WindowManager._onBodyKeyUp);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3258
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3259
    SimileAjax.WindowManager._layers.push({index: 0});
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3260
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3261
    SimileAjax.WindowManager._historyListener = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3262
        onBeforeUndoSeveral:    function() {},
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3263
        onAfterUndoSeveral:     function() {},
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3264
        onBeforeUndo:           function() {},
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3265
        onAfterUndo:            function() {},
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3266
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3267
        onBeforeRedoSeveral:    function() {},
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3268
        onAfterRedoSeveral:     function() {},
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3269
        onBeforeRedo:           function() {},
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3270
        onAfterRedo:            function() {}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3271
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3272
    SimileAjax.History.addListener(SimileAjax.WindowManager._historyListener);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3273
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3274
    SimileAjax.WindowManager._initialized = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3275
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3276
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3277
SimileAjax.WindowManager.getBaseLayer = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3278
    SimileAjax.WindowManager.initialize();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3279
    return SimileAjax.WindowManager._layers[0];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3280
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3281
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3282
SimileAjax.WindowManager.getHighestLayer = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3283
    SimileAjax.WindowManager.initialize();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3284
    return SimileAjax.WindowManager._layers[SimileAjax.WindowManager._layers.length - 1];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3285
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3286
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3287
SimileAjax.WindowManager.registerEventWithObject = function(elmt, eventName, obj, handlerName, layer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3288
    SimileAjax.WindowManager.registerEvent(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3289
        elmt,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3290
        eventName,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3291
        function(elmt2, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3292
            return obj[handlerName].call(obj, elmt2, evt, target);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3293
        },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3294
        layer
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3295
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3296
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3297
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3298
SimileAjax.WindowManager.registerEvent = function(elmt, eventName, handler, layer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3299
    if (layer == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3300
        layer = SimileAjax.WindowManager.getHighestLayer();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3301
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3302
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3303
    var handler2 = function(elmt, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3304
        if (SimileAjax.WindowManager._canProcessEventAtLayer(layer)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3305
            SimileAjax.WindowManager._popToLayer(layer.index);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3306
            try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3307
                handler(elmt, evt, target);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3308
            } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3309
                SimileAjax.Debug.exception(e);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3310
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3311
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3312
        SimileAjax.DOM.cancelEvent(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3313
        return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3314
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3315
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3316
    SimileAjax.DOM.registerEvent(elmt, eventName, handler2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3317
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3318
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3319
SimileAjax.WindowManager.pushLayer = function(f, ephemeral, elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3320
    var layer = { onPop: f, index: SimileAjax.WindowManager._layers.length, ephemeral: (ephemeral), elmt: elmt };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3321
    SimileAjax.WindowManager._layers.push(layer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3322
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3323
    return layer;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3324
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3325
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3326
SimileAjax.WindowManager.popLayer = function(layer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3327
    for (var i = 1; i < SimileAjax.WindowManager._layers.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3328
        if (SimileAjax.WindowManager._layers[i] == layer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3329
            SimileAjax.WindowManager._popToLayer(i - 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3330
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3331
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3332
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3333
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3334
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3335
SimileAjax.WindowManager.popAllLayers = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3336
    SimileAjax.WindowManager._popToLayer(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3337
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3338
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3339
SimileAjax.WindowManager.registerForDragging = function(elmt, callback, layer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3340
    SimileAjax.WindowManager.registerEvent(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3341
        elmt,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3342
        "mousedown",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3343
        function(elmt, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3344
            SimileAjax.WindowManager._handleMouseDown(elmt, evt, callback);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3345
        },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3346
        layer
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3347
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3348
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3349
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3350
SimileAjax.WindowManager._popToLayer = function(level) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3351
    while (level+1 < SimileAjax.WindowManager._layers.length) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3352
        try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3353
            var layer = SimileAjax.WindowManager._layers.pop();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3354
            if (layer.onPop != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3355
                layer.onPop();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3356
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3357
        } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3358
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3359
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3360
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3361
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3362
SimileAjax.WindowManager._canProcessEventAtLayer = function(layer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3363
    if (layer.index == (SimileAjax.WindowManager._layers.length - 1)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3364
        return true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3365
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3366
    for (var i = layer.index + 1; i < SimileAjax.WindowManager._layers.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3367
        if (!SimileAjax.WindowManager._layers[i].ephemeral) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3368
            return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3369
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3370
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3371
    return true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3372
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3373
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3374
SimileAjax.WindowManager.cancelPopups = function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3375
    var evtCoords = (evt) ? SimileAjax.DOM.getEventPageCoordinates(evt) : { x: -1, y: -1 };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3376
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3377
    var i = SimileAjax.WindowManager._layers.length - 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3378
    while (i > 0 && SimileAjax.WindowManager._layers[i].ephemeral) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3379
        var layer = SimileAjax.WindowManager._layers[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3380
        if (layer.elmt != null) { // if event falls within main element of layer then don't cancel
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3381
            var elmt = layer.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3382
            var elmtCoords = SimileAjax.DOM.getPageCoordinates(elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3383
            if (evtCoords.x >= elmtCoords.left && evtCoords.x < (elmtCoords.left + elmt.offsetWidth) &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3384
                evtCoords.y >= elmtCoords.top && evtCoords.y < (elmtCoords.top + elmt.offsetHeight)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3385
                break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3386
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3387
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3388
        i--;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3389
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3390
    SimileAjax.WindowManager._popToLayer(i);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3391
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3392
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3393
SimileAjax.WindowManager._onBodyMouseDown = function(elmt, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3394
    if (!("eventPhase" in evt) || evt.eventPhase == evt.BUBBLING_PHASE) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3395
        SimileAjax.WindowManager.cancelPopups(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3396
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3397
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3398
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3399
SimileAjax.WindowManager._handleMouseDown = function(elmt, evt, callback) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3400
    SimileAjax.WindowManager._draggedElement = elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3401
    SimileAjax.WindowManager._draggedElementCallback = callback;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3402
    SimileAjax.WindowManager._lastCoords = { x: evt.clientX, y: evt.clientY };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3403
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3404
    SimileAjax.DOM.cancelEvent(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3405
    return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3406
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3407
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3408
SimileAjax.WindowManager._onBodyKeyDown = function(elmt, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3409
    if (SimileAjax.WindowManager._dragging) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3410
        if (evt.keyCode == 27) { // esc
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3411
            SimileAjax.WindowManager._cancelDragging();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3412
        } else if ((evt.keyCode == 17 || evt.keyCode == 16) && SimileAjax.WindowManager._draggingMode != "copy") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3413
            SimileAjax.WindowManager._draggingMode = "copy";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3414
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3415
            var img = SimileAjax.Graphics.createTranslucentImage(SimileAjax.urlPrefix + "images/copy.png");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3416
            img.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3417
            img.style.left = (SimileAjax.WindowManager._ghostCoords.left - 16) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3418
            img.style.top = (SimileAjax.WindowManager._ghostCoords.top) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3419
            document.body.appendChild(img);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3420
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3421
            SimileAjax.WindowManager._draggingModeIndicatorElmt = img;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3422
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3423
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3424
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3425
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3426
SimileAjax.WindowManager._onBodyKeyUp = function(elmt, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3427
    if (SimileAjax.WindowManager._dragging) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3428
        if (evt.keyCode == 17 || evt.keyCode == 16) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3429
            SimileAjax.WindowManager._draggingMode = "";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3430
            if (SimileAjax.WindowManager._draggingModeIndicatorElmt != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3431
                document.body.removeChild(SimileAjax.WindowManager._draggingModeIndicatorElmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3432
                SimileAjax.WindowManager._draggingModeIndicatorElmt = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3433
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3434
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3435
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3436
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3437
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3438
SimileAjax.WindowManager._onBodyMouseMove = function(elmt, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3439
    if (SimileAjax.WindowManager._draggedElement != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3440
        var callback = SimileAjax.WindowManager._draggedElementCallback;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3441
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3442
        var lastCoords = SimileAjax.WindowManager._lastCoords;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3443
        var diffX = evt.clientX - lastCoords.x;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3444
        var diffY = evt.clientY - lastCoords.y;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3445
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3446
        if (!SimileAjax.WindowManager._dragging) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3447
            if (Math.abs(diffX) > 5 || Math.abs(diffY) > 5) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3448
                try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3449
                    if ("onDragStart" in callback) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3450
                        callback.onDragStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3451
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3452
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3453
                    if ("ghost" in callback && callback.ghost) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3454
                        var draggedElmt = SimileAjax.WindowManager._draggedElement;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3455
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3456
                        SimileAjax.WindowManager._ghostCoords = SimileAjax.DOM.getPageCoordinates(draggedElmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3457
                        SimileAjax.WindowManager._ghostCoords.left += diffX;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3458
                        SimileAjax.WindowManager._ghostCoords.top += diffY;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3459
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3460
                        var ghostElmt = draggedElmt.cloneNode(true);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3461
                        ghostElmt.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3462
                        ghostElmt.style.left = SimileAjax.WindowManager._ghostCoords.left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3463
                        ghostElmt.style.top = SimileAjax.WindowManager._ghostCoords.top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3464
                        ghostElmt.style.zIndex = 1000;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3465
                        SimileAjax.Graphics.setOpacity(ghostElmt, 50);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3466
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3467
                        document.body.appendChild(ghostElmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3468
                        callback._ghostElmt = ghostElmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3469
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3470
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3471
                    SimileAjax.WindowManager._dragging = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3472
                    SimileAjax.WindowManager._lastCoords = { x: evt.clientX, y: evt.clientY };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3473
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3474
                    document.body.focus();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3475
                } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3476
                    SimileAjax.Debug.exception("WindowManager: Error handling mouse down", e);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3477
                    SimileAjax.WindowManager._cancelDragging();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3478
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3479
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3480
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3481
            try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3482
                SimileAjax.WindowManager._lastCoords = { x: evt.clientX, y: evt.clientY };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3483
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3484
                if ("onDragBy" in callback) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3485
                    callback.onDragBy(diffX, diffY);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3486
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3487
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3488
                if ("_ghostElmt" in callback) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3489
                    var ghostElmt = callback._ghostElmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3490
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3491
                    SimileAjax.WindowManager._ghostCoords.left += diffX;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3492
                    SimileAjax.WindowManager._ghostCoords.top += diffY;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3493
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3494
                    ghostElmt.style.left = SimileAjax.WindowManager._ghostCoords.left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3495
                    ghostElmt.style.top = SimileAjax.WindowManager._ghostCoords.top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3496
                    if (SimileAjax.WindowManager._draggingModeIndicatorElmt != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3497
                        var indicatorElmt = SimileAjax.WindowManager._draggingModeIndicatorElmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3498
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3499
                        indicatorElmt.style.left = (SimileAjax.WindowManager._ghostCoords.left - 16) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3500
                        indicatorElmt.style.top = SimileAjax.WindowManager._ghostCoords.top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3501
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3502
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3503
                    if ("droppable" in callback && callback.droppable) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3504
                        var coords = SimileAjax.DOM.getEventPageCoordinates(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3505
                        var target = SimileAjax.DOM.hittest(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3506
                            coords.x, coords.y,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3507
                            [   SimileAjax.WindowManager._ghostElmt,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3508
                                SimileAjax.WindowManager._dropTargetHighlightElement
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3509
                            ]
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3510
                        );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3511
                        target = SimileAjax.WindowManager._findDropTarget(target);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3512
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3513
                        if (target != SimileAjax.WindowManager._potentialDropTarget) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3514
                            if (SimileAjax.WindowManager._dropTargetHighlightElement != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3515
                                document.body.removeChild(SimileAjax.WindowManager._dropTargetHighlightElement);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3516
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3517
                                SimileAjax.WindowManager._dropTargetHighlightElement = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3518
                                SimileAjax.WindowManager._potentialDropTarget = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3519
                            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3520
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3521
                            var droppable = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3522
                            if (target != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3523
                                if ((!("canDropOn" in callback) || callback.canDropOn(target)) &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3524
                                    (!("canDrop" in target) || target.canDrop(SimileAjax.WindowManager._draggedElement))) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3525
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3526
                                    droppable = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3527
                                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3528
                            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3529
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3530
                            if (droppable) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3531
                                var border = 4;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3532
                                var targetCoords = SimileAjax.DOM.getPageCoordinates(target);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3533
                                var highlight = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3534
                                highlight.style.border = border + "px solid yellow";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3535
                                highlight.style.backgroundColor = "yellow";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3536
                                highlight.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3537
                                highlight.style.left = targetCoords.left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3538
                                highlight.style.top = targetCoords.top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3539
                                highlight.style.width = (target.offsetWidth - border * 2) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3540
                                highlight.style.height = (target.offsetHeight - border * 2) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3541
                                SimileAjax.Graphics.setOpacity(highlight, 30);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3542
                                document.body.appendChild(highlight);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3543
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3544
                                SimileAjax.WindowManager._potentialDropTarget = target;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3545
                                SimileAjax.WindowManager._dropTargetHighlightElement = highlight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3546
                            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3547
                        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3548
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3549
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3550
            } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3551
                SimileAjax.Debug.exception("WindowManager: Error handling mouse move", e);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3552
                SimileAjax.WindowManager._cancelDragging();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3553
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3554
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3555
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3556
        SimileAjax.DOM.cancelEvent(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3557
        return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3558
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3559
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3560
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3561
SimileAjax.WindowManager._onBodyMouseUp = function(elmt, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3562
    if (SimileAjax.WindowManager._draggedElement != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3563
        try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3564
            if (SimileAjax.WindowManager._dragging) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3565
                var callback = SimileAjax.WindowManager._draggedElementCallback;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3566
                if ("onDragEnd" in callback) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3567
                    callback.onDragEnd();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3568
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3569
                if ("droppable" in callback && callback.droppable) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3570
                    var dropped = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3571
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3572
                    var target = SimileAjax.WindowManager._potentialDropTarget;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3573
                    if (target != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3574
                        if ((!("canDropOn" in callback) || callback.canDropOn(target)) &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3575
                            (!("canDrop" in target) || target.canDrop(SimileAjax.WindowManager._draggedElement))) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3576
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3577
                            if ("onDropOn" in callback) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3578
                                callback.onDropOn(target);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3579
                            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3580
                            target.ondrop(SimileAjax.WindowManager._draggedElement, SimileAjax.WindowManager._draggingMode);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3581
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3582
                            dropped = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3583
                        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3584
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3585
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3586
                    if (!dropped) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3587
                        // TODO: do holywood explosion here
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3588
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3589
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3590
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3591
        } finally {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3592
            SimileAjax.WindowManager._cancelDragging();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3593
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3594
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3595
        SimileAjax.DOM.cancelEvent(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3596
        return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3597
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3598
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3599
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3600
SimileAjax.WindowManager._cancelDragging = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3601
    var callback = SimileAjax.WindowManager._draggedElementCallback;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3602
    if ("_ghostElmt" in callback) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3603
        var ghostElmt = callback._ghostElmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3604
        document.body.removeChild(ghostElmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3605
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3606
        delete callback._ghostElmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3607
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3608
    if (SimileAjax.WindowManager._dropTargetHighlightElement != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3609
        document.body.removeChild(SimileAjax.WindowManager._dropTargetHighlightElement);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3610
        SimileAjax.WindowManager._dropTargetHighlightElement = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3611
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3612
    if (SimileAjax.WindowManager._draggingModeIndicatorElmt != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3613
        document.body.removeChild(SimileAjax.WindowManager._draggingModeIndicatorElmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3614
        SimileAjax.WindowManager._draggingModeIndicatorElmt = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3615
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3616
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3617
    SimileAjax.WindowManager._draggedElement = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3618
    SimileAjax.WindowManager._draggedElementCallback = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3619
    SimileAjax.WindowManager._potentialDropTarget = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3620
    SimileAjax.WindowManager._dropTargetHighlightElement = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3621
    SimileAjax.WindowManager._lastCoords = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3622
    SimileAjax.WindowManager._ghostCoords = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3623
    SimileAjax.WindowManager._draggingMode = "";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3624
    SimileAjax.WindowManager._dragging = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3625
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3626
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3627
SimileAjax.WindowManager._findDropTarget = function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3628
    while (elmt != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3629
        if ("ondrop" in elmt && (typeof elmt.ondrop) == "function") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3630
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3631
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3632
        elmt = elmt.parentNode;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3633
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3634
    return elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3635
};
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  3636
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3637
 *  Timeline API
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3638
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3639
 *  This file will load all the Javascript files
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3640
 *  necessary to make the standard timeline work.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3641
 *  It also detects the default locale.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3642
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3643
 *  To run from the MIT copy of Timeline:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3644
 *  Include this file in your HTML file as follows:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3645
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3646
 *    <script src="http://api.simile-widgets.org/timeline/2.3.1/timeline-api.js"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3647
 *     type="text/javascript"></script>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3648
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3649
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3650
 * To host the Timeline files on your own server:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3651
 *   1) Install the Timeline and Simile-Ajax files onto your webserver using
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3652
 *      timeline_libraries.zip or timeline_source.zip
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3653
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3654
 *   2) Set global js variables used to send parameters to this script:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3655
 *        var Timeline_ajax_url -- url for simile-ajax-api.js
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3656
 *        var Timeline_urlPrefix -- url for the *directory* that contains timeline-api.js
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3657
 *            Include trailing slash
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3658
 *        var Timeline_parameters='bundle=true'; // you must set bundle to true if you are using
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3659
 *                                               // timeline_libraries.zip since only the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3660
 *                                               // bundled libraries are included
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3661
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3662
 * eg your html page would include
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3663
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3664
 *   <script>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3665
 *     var Timeline_ajax_url="http://YOUR_SERVER/javascripts/timeline/timeline_ajax/simile-ajax-api.js";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3666
 *     var Timeline_urlPrefix='http://YOUR_SERVER/javascripts/timeline/timeline_js/';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3667
 *     var Timeline_parameters='bundle=true';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3668
 *   </script>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3669
 *   <script src="http://YOUR_SERVER/javascripts/timeline/timeline_js/timeline-api.js"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3670
 *     type="text/javascript">
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3671
 *   </script>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3672
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3673
 * SCRIPT PARAMETERS
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3674
 * This script auto-magically figures out locale and has defaults for other parameters
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3675
 * To set parameters explicity, set js global variable Timeline_parameters or include as
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3676
 * parameters on the url using GET style. Eg the two next lines pass the same parameters:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3677
 *     Timeline_parameters='bundle=true';                    // pass parameter via js variable
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3678
 *     <script src="http://....timeline-api.js?bundle=true"  // pass parameter via url
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3679
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3680
 * Parameters
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3681
 *   timeline-use-local-resources --
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3682
 *   bundle -- true: use the single js bundle file; false: load individual files (for debugging)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3683
 *   locales --
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3684
 *   defaultLocale --
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3685
 *   forceLocale -- force locale to be a particular value--used for debugging. Normally locale is determined
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3686
 *                  by browser's and server's locale settings.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3687
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3688
 * DEBUGGING
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3689
 * If you have a problem with Timeline, the first step is to use the unbundled Javascript files. To do so:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3690
 * To use the unbundled Timeline and Ajax libraries
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3691
 * Change
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3692
 *   <script src="http://api.simile-widgets.org/timeline/2.3.1/api/timeline-api.js?bundle=true" type="text/javascript"></script>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3693
 * To
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3694
 *   <script>var Timeline_ajax_url = "http://api.simile-widgets.org/ajax/2.2.1/simile-ajax-api.js?bundle=false"</script>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3695
 *   <script src="http://api.simile-widgets.org/timeline/2.3.1/api/timeline-api.js?bundle=false" type="text/javascript"></script>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3696
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3697
 * Note that the Ajax version is usually NOT the same as the Timeline version.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3698
 * See variable simile_ajax_ver below for the current version
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3699
 *
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  3700
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3701
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3702
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3703
(function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3704
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3705
    var simile_ajax_ver = "2.2.1"; // ===========>>>  current Simile-Ajax version
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3706
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3707
    var useLocalResources = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3708
    if (document.location.search.length > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3709
        var params = document.location.search.substr(1).split("&");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3710
        for (var i = 0; i < params.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3711
            if (params[i] == "timeline-use-local-resources") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3712
                useLocalResources = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3713
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3714
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3715
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3716
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3717
    var loadMe = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3718
        if ("Timeline" in window) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3719
            return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3720
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3721
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3722
        window.Timeline = new Object();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3723
        window.Timeline.DateTime = window.SimileAjax.DateTime; // for backward compatibility
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3724
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3725
        var bundle = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3726
        var javascriptFiles = [
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3727
            "timeline.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3728
            "band.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3729
            "themes.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3730
            "ethers.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3731
            "ether-painters.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3732
            "event-utils.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3733
            "labellers.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3734
            "sources.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3735
            "original-painter.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3736
            "detailed-painter.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3737
            "overview-painter.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3738
            "compact-painter.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3739
            "decorators.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3740
            "units.js"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3741
        ];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3742
        var cssFiles = [
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3743
            "timeline.css",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3744
            "ethers.css",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3745
            "events.css"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3746
        ];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3747
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3748
        var localizedJavascriptFiles = [
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3749
            "timeline.js",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3750
            "labellers.js"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3751
        ];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3752
        var localizedCssFiles = [
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3753
        ];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3754
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3755
        // ISO-639 language codes, ISO-3166 country codes (2 characters)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3756
        var supportedLocales = [
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3757
            "cs",       // Czech
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3758
            "de",       // German
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3759
            "en",       // English
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3760
            "es",       // Spanish
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3761
            "fr",       // French
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3762
            "it",       // Italian
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3763
            "nl",       // Dutch (The Netherlands)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3764
            "ru",       // Russian
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3765
            "se",       // Swedish
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3766
            "tr",       // Turkish
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3767
            "vi",       // Vietnamese
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3768
            "zh"        // Chinese
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3769
        ];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3770
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3771
        try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3772
            var desiredLocales = [ "en" ],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3773
                defaultServerLocale = "en",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3774
                forceLocale = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3775
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3776
            var parseURLParameters = function(parameters) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3777
                var params = parameters.split("&");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3778
                for (var p = 0; p < params.length; p++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3779
                    var pair = params[p].split("=");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3780
                    if (pair[0] == "locales") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3781
                        desiredLocales = desiredLocales.concat(pair[1].split(","));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3782
                    } else if (pair[0] == "defaultLocale") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3783
                        defaultServerLocale = pair[1];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3784
                    } else if (pair[0] == "forceLocale") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3785
                        forceLocale = pair[1];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3786
                        desiredLocales = desiredLocales.concat(pair[1].split(","));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3787
                    } else if (pair[0] == "bundle") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3788
                        bundle = pair[1] != "false";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3789
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3790
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3791
            };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3792
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3793
            (function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3794
                if (typeof Timeline_urlPrefix == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3795
                    Timeline.urlPrefix = Timeline_urlPrefix;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3796
                    if (typeof Timeline_parameters == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3797
                        parseURLParameters(Timeline_parameters);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3798
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3799
                } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3800
                    var heads = document.documentElement.getElementsByTagName("head");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3801
                    for (var h = 0; h < heads.length; h++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3802
                        var scripts = heads[h].getElementsByTagName("script");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3803
                        for (var s = 0; s < scripts.length; s++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3804
                            var url = scripts[s].src;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3805
                            var i = url.indexOf("timeline-api.js");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3806
                            if (i >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3807
                                Timeline.urlPrefix = url.substr(0, i);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3808
                                var q = url.indexOf("?");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3809
                                if (q > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3810
                                    parseURLParameters(url.substr(q + 1));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3811
                                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3812
                                return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3813
                            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3814
                        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3815
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3816
                    throw new Error("Failed to derive URL prefix for Timeline API code files");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3817
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3818
            })();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3819
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3820
            var includeJavascriptFiles = function(urlPrefix, filenames) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3821
                SimileAjax.includeJavascriptFiles(document, urlPrefix, filenames);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3822
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3823
            var includeCssFiles = function(urlPrefix, filenames) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3824
                SimileAjax.includeCssFiles(document, urlPrefix, filenames);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3825
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3826
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3827
            /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3828
             *  Include non-localized files
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3829
             */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3830
            if (bundle) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3831
                includeJavascriptFiles(Timeline.urlPrefix, [ "timeline-bundle.js" ]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3832
                includeCssFiles(Timeline.urlPrefix, [ "timeline-bundle.css" ]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3833
            } else {
2097
400bdbcc5699 [javascript] timeline is already bundled, don't try to include dynamically other js files
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1156
diff changeset
  3834
                // XXX adim includeJavascriptFiles(Timeline.urlPrefix + "scripts/", javascriptFiles);
400bdbcc5699 [javascript] timeline is already bundled, don't try to include dynamically other js files
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1156
diff changeset
  3835
                // XXX adim includeCssFiles(Timeline.urlPrefix + "styles/", cssFiles);
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3836
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3837
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3838
            /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3839
             *  Include localized files
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3840
             */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3841
            var loadLocale = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3842
            loadLocale[defaultServerLocale] = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3843
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3844
            var tryExactLocale = function(locale) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3845
                for (var l = 0; l < supportedLocales.length; l++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3846
                    if (locale == supportedLocales[l]) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3847
                        loadLocale[locale] = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3848
                        return true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3849
                    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3850
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3851
                return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3852
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3853
            var tryLocale = function(locale) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3854
                if (tryExactLocale(locale)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3855
                    return locale;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3856
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3857
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3858
                var dash = locale.indexOf("-");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3859
                if (dash > 0 && tryExactLocale(locale.substr(0, dash))) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3860
                    return locale.substr(0, dash);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3861
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3862
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3863
                return null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3864
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3865
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3866
            for (var l = 0; l < desiredLocales.length; l++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3867
                tryLocale(desiredLocales[l]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3868
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3869
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3870
            var defaultClientLocale = defaultServerLocale;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3871
            var defaultClientLocales = ("language" in navigator ? navigator.language : navigator.browserLanguage).split(";");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3872
            for (var l = 0; l < defaultClientLocales.length; l++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3873
                var locale = tryLocale(defaultClientLocales[l]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3874
                if (locale != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3875
                    defaultClientLocale = locale;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3876
                    break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3877
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3878
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3879
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3880
            for (var l = 0; l < supportedLocales.length; l++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3881
                var locale = supportedLocales[l];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3882
                if (loadLocale[locale]) {
2097
400bdbcc5699 [javascript] timeline is already bundled, don't try to include dynamically other js files
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1156
diff changeset
  3883
                    // XXX adim includeJavascriptFiles(Timeline.urlPrefix + "scripts/l10n/" + locale + "/", localizedJavascriptFiles);
400bdbcc5699 [javascript] timeline is already bundled, don't try to include dynamically other js files
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1156
diff changeset
  3884
                    // XXX adim includeCssFiles(Timeline.urlPrefix + "styles/l10n/" + locale + "/", localizedCssFiles);
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3885
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3886
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3887
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3888
            if (forceLocale == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3889
              Timeline.serverLocale = defaultServerLocale;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3890
              Timeline.clientLocale = defaultClientLocale;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3891
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3892
              Timeline.serverLocale = forceLocale;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3893
              Timeline.clientLocale = forceLocale;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3894
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3895
        } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3896
            alert(e);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3897
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3898
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3899
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3900
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3901
     *  Load SimileAjax if it's not already loaded
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3902
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3903
    if (typeof SimileAjax == "undefined") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3904
        window.SimileAjax_onLoad = loadMe;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3905
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3906
        var url = useLocalResources ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3907
            "http://127.0.0.1:9999/ajax/api/simile-ajax-api.js?bundle=false" :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3908
            "http://api.simile-widgets.org/ajax/" + simile_ajax_ver + "/simile-ajax-api.js";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3909
        if (typeof Timeline_ajax_url == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3910
           url = Timeline_ajax_url;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3911
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3912
        var createScriptElement = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3913
            var script = document.createElement("script");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3914
            script.type = "text/javascript";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3915
            script.language = "JavaScript";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3916
            script.src = url;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3917
            document.getElementsByTagName("head")[0].appendChild(script);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3918
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3919
        if (document.body == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3920
            try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3921
                document.write("<script src='" + url + "' type='text/javascript'></script>");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3922
            } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3923
                createScriptElement();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3924
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3925
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3926
            createScriptElement();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3927
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3928
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3929
        loadMe();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3930
    }
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
  3931
})();
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  3932
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3933
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3934
 * Coding standards:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3935
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3936
 * We aim towards Douglas Crockford's Javascript conventions.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3937
 * See:  http://javascript.crockford.com/code.html
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3938
 * See also: http://www.crockford.com/javascript/javascript.html
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3939
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3940
 * That said, this JS code was written before some recent JS
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3941
 * support libraries became widely used or available.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3942
 * In particular, the _ character is used to indicate a class function or
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3943
 * variable that should be considered private to the class.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3944
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3945
 * The code mostly uses accessor methods for getting/setting the private
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3946
 * class variables.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3947
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3948
 * Over time, we'd like to formalize the convention by using support libraries
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3949
 * which enforce privacy in objects.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3950
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3951
 * We also want to use jslint:  http://www.jslint.com/
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3952
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3953
 *
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  3954
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3955
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3956
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3957
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3958
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  3959
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3960
 *  Timeline VERSION
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  3961
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3962
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3963
// Note: version is also stored in the build.xml file
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3964
Timeline.version = 'pre 2.4.0';  // use format 'pre 1.2.3' for trunk versions
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3965
Timeline.ajax_lib_version = SimileAjax.version;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3966
Timeline.display_version = Timeline.version + ' (with Ajax lib ' + Timeline.ajax_lib_version + ')';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3967
 // cf method Timeline.writeVersion
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3968
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  3969
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3970
 *  Timeline
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  3971
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3972
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3973
Timeline.strings = {}; // localization string tables
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3974
Timeline.HORIZONTAL = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3975
Timeline.VERTICAL = 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3976
Timeline._defaultTheme = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3977
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3978
Timeline.getDefaultLocale = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3979
    return Timeline.clientLocale;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3980
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3981
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3982
Timeline.create = function(elmt, bandInfos, orientation, unit) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3983
    if (Timeline.timelines == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3984
        Timeline.timelines = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3985
        // Timeline.timelines array can have null members--Timelines that
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3986
        // once existed on the page, but were later disposed of.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3987
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3988
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3989
    var timelineID = Timeline.timelines.length;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3990
    Timeline.timelines[timelineID] = null; // placeholder until we have the object
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3991
    var new_tl = new Timeline._Impl(elmt, bandInfos, orientation, unit,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3992
      timelineID);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3993
    Timeline.timelines[timelineID] = new_tl;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3994
    return new_tl;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3995
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3996
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3997
Timeline.createBandInfo = function(params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3998
    var theme = ("theme" in params) ? params.theme : Timeline.getDefaultTheme();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  3999
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4000
    var eventSource = ("eventSource" in params) ? params.eventSource : null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4001
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4002
    var etherParams = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4003
        interval:           SimileAjax.DateTime.gregorianUnitLengths[params.intervalUnit],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4004
        pixelsPerInterval: params.intervalPixels,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4005
	theme: theme
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4006
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4007
    if ('startsOn' in params || 'endsOn' in params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4008
	if ('startsOn' in params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4009
	    etherParams.startsOn = params.startsOn;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4010
	}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4011
	if ('endsOn' in params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4012
	    etherParams.endsOn = params.endsOn;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4013
	}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4014
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4015
	etherParams.centersOn = ("date" in params) ? params.date : new Date();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4016
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4017
    var ether = new Timeline.LinearEther(etherParams);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4018
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4019
    var etherPainter = new Timeline.GregorianEtherPainter({
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4020
        unit:       params.intervalUnit,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4021
        multiple:   ("multiple" in params) ? params.multiple : 1,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4022
        theme:      theme,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4023
        align:      ("align" in params) ? params.align : undefined
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4024
    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4025
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4026
    var eventPainterParams = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4027
        showText:   ("showEventText" in params) ? params.showEventText : true,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4028
        theme:      theme
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4029
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4030
    // pass in custom parameters for the event painter
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4031
    if ("eventPainterParams" in params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4032
        for (var prop in params.eventPainterParams) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4033
            eventPainterParams[prop] = params.eventPainterParams[prop];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4034
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4035
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4036
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4037
    if ("trackHeight" in params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4038
        eventPainterParams.trackHeight = params.trackHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4039
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4040
    if ("trackGap" in params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4041
        eventPainterParams.trackGap = params.trackGap;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4042
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4043
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4044
    var layout = ("overview" in params && params.overview) ? "overview" : ("layout" in params ? params.layout : "original");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4045
    var eventPainter;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4046
    if ("eventPainter" in params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4047
        eventPainter = new params.eventPainter(eventPainterParams);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4048
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4049
        switch (layout) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4050
            case "overview" :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4051
                eventPainter = new Timeline.OverviewEventPainter(eventPainterParams);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4052
                break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4053
            case "detailed" :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4054
                eventPainter = new Timeline.DetailedEventPainter(eventPainterParams);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4055
                break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4056
            default:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4057
                eventPainter = new Timeline.OriginalEventPainter(eventPainterParams);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4058
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4059
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4060
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4061
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4062
        width:          params.width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4063
        eventSource:    eventSource,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4064
        timeZone:       ("timeZone" in params) ? params.timeZone : 0,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4065
        ether:          ether,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4066
        etherPainter:   etherPainter,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4067
        eventPainter:   eventPainter,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4068
        theme:          theme,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4069
        zoomIndex:      ("zoomIndex" in params) ? params.zoomIndex : 0,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4070
        zoomSteps:      ("zoomSteps" in params) ? params.zoomSteps : null
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4071
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4072
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4073
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4074
Timeline.createHotZoneBandInfo = function(params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4075
    var theme = ("theme" in params) ? params.theme : Timeline.getDefaultTheme();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4076
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4077
    var eventSource = ("eventSource" in params) ? params.eventSource : null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4078
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4079
    var ether = new Timeline.HotZoneEther({
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4080
        centersOn:          ("date" in params) ? params.date : new Date(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4081
        interval:           SimileAjax.DateTime.gregorianUnitLengths[params.intervalUnit],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4082
        pixelsPerInterval:  params.intervalPixels,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4083
        zones:              params.zones,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4084
        theme:              theme
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4085
    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4086
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4087
    var etherPainter = new Timeline.HotZoneGregorianEtherPainter({
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4088
        unit:       params.intervalUnit,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4089
        zones:      params.zones,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4090
        theme:      theme,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4091
        align:      ("align" in params) ? params.align : undefined
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4092
    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4093
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4094
    var eventPainterParams = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4095
        showText:   ("showEventText" in params) ? params.showEventText : true,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4096
        theme:      theme
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4097
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4098
    // pass in custom parameters for the event painter
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4099
    if ("eventPainterParams" in params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4100
        for (var prop in params.eventPainterParams) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4101
            eventPainterParams[prop] = params.eventPainterParams[prop];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4102
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4103
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4104
    if ("trackHeight" in params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4105
        eventPainterParams.trackHeight = params.trackHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4106
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4107
    if ("trackGap" in params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4108
        eventPainterParams.trackGap = params.trackGap;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4109
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4110
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4111
    var layout = ("overview" in params && params.overview) ? "overview" : ("layout" in params ? params.layout : "original");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4112
    var eventPainter;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4113
    if ("eventPainter" in params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4114
        eventPainter = new params.eventPainter(eventPainterParams);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4115
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4116
        switch (layout) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4117
            case "overview" :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4118
                eventPainter = new Timeline.OverviewEventPainter(eventPainterParams);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4119
                break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4120
            case "detailed" :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4121
                eventPainter = new Timeline.DetailedEventPainter(eventPainterParams);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4122
                break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4123
            default:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4124
                eventPainter = new Timeline.OriginalEventPainter(eventPainterParams);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4125
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4126
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4127
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4128
        width:          params.width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4129
        eventSource:    eventSource,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4130
        timeZone:       ("timeZone" in params) ? params.timeZone : 0,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4131
        ether:          ether,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4132
        etherPainter:   etherPainter,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4133
        eventPainter:   eventPainter,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4134
        theme:          theme,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4135
        zoomIndex:      ("zoomIndex" in params) ? params.zoomIndex : 0,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4136
        zoomSteps:      ("zoomSteps" in params) ? params.zoomSteps : null
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4137
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4138
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4139
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4140
Timeline.getDefaultTheme = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4141
    if (Timeline._defaultTheme == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4142
        Timeline._defaultTheme = Timeline.ClassicTheme.create(Timeline.getDefaultLocale());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4143
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4144
    return Timeline._defaultTheme;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4145
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4146
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4147
Timeline.setDefaultTheme = function(theme) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4148
    Timeline._defaultTheme = theme;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4149
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4150
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4151
Timeline.loadXML = function(url, f) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4152
    var fError = function(statusText, status, xmlhttp) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4153
        alert("Failed to load data xml from " + url + "\n" + statusText);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4154
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4155
    var fDone = function(xmlhttp) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4156
        var xml = xmlhttp.responseXML;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4157
        if (!xml.documentElement && xmlhttp.responseStream) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4158
            xml.load(xmlhttp.responseStream);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4159
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4160
        f(xml, url);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4161
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4162
    SimileAjax.XmlHttp.get(url, fError, fDone);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4163
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4164
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4165
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4166
Timeline.loadJSON = function(url, f) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4167
    var fError = function(statusText, status, xmlhttp) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4168
        alert("Failed to load json data from " + url + "\n" + statusText);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4169
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4170
    var fDone = function(xmlhttp) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4171
        f(eval('(' + xmlhttp.responseText + ')'), url);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4172
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4173
    SimileAjax.XmlHttp.get(url, fError, fDone);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4174
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4175
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4176
Timeline.getTimelineFromID = function(timelineID) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4177
    return Timeline.timelines[timelineID];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4178
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4179
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4180
// Write the current Timeline version as the contents of element with id el_id
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4181
Timeline.writeVersion = function(el_id) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4182
  document.getElementById(el_id).innerHTML = this.display_version;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4183
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4184
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4185
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4186
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  4187
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4188
 *  Timeline Implementation object
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  4189
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4190
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4191
Timeline._Impl = function(elmt, bandInfos, orientation, unit, timelineID) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4192
    SimileAjax.WindowManager.initialize();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4193
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4194
    this._containerDiv = elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4195
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4196
    this._bandInfos = bandInfos;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4197
    this._orientation = orientation == null ? Timeline.HORIZONTAL : orientation;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4198
    this._unit = (unit != null) ? unit : SimileAjax.NativeDateUnit;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4199
    this._starting = true; // is the Timeline being created? Used by autoWidth
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4200
                           // functions
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4201
    this._autoResizing = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4202
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4203
    // autoWidth is a "public" property of the Timeline object
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4204
    this.autoWidth = bandInfos && bandInfos[0] && bandInfos[0].theme &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4205
                     bandInfos[0].theme.autoWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4206
    this.autoWidthAnimationTime = bandInfos && bandInfos[0] && bandInfos[0].theme &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4207
                     bandInfos[0].theme.autoWidthAnimationTime;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4208
    this.timelineID = timelineID; // also public attribute
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4209
    this.timeline_start = bandInfos && bandInfos[0] && bandInfos[0].theme &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4210
                     bandInfos[0].theme.timeline_start;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4211
    this.timeline_stop  = bandInfos && bandInfos[0] && bandInfos[0].theme &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4212
                     bandInfos[0].theme.timeline_stop;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4213
    this.timeline_at_start = false; // already at start or stop? Then won't
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4214
    this.timeline_at_stop = false;  // try to move further in the wrong direction
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4215
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4216
    this._initialize();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4217
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4218
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4219
//
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4220
// Public functions used by client sw
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4221
//
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4222
Timeline._Impl.prototype.dispose = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4223
    for (var i = 0; i < this._bands.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4224
        this._bands[i].dispose();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4225
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4226
    this._bands = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4227
    this._bandInfos = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4228
    this._containerDiv.innerHTML = "";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4229
    // remove from array of Timelines
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4230
    Timeline.timelines[this.timelineID] = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4231
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4232
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4233
Timeline._Impl.prototype.getBandCount = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4234
    return this._bands.length;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4235
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4236
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4237
Timeline._Impl.prototype.getBand = function(index) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4238
    return this._bands[index];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4239
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4240
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4241
Timeline._Impl.prototype.finishedEventLoading = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4242
    // Called by client after events have been loaded into Timeline
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4243
    // Only used if the client has set autoWidth
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4244
    // Sets width to Timeline's requested amount and will shrink down the div if
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4245
    // need be.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4246
    this._autoWidthCheck(true);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4247
    this._starting = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4248
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4249
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4250
Timeline._Impl.prototype.layout = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4251
    // called by client when browser is resized
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4252
    this._autoWidthCheck(true);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4253
    this._distributeWidths();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4254
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4255
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4256
Timeline._Impl.prototype.paint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4257
    for (var i = 0; i < this._bands.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4258
        this._bands[i].paint();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4259
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4260
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4261
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4262
Timeline._Impl.prototype.getDocument = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4263
    return this._containerDiv.ownerDocument;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4264
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4265
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4266
Timeline._Impl.prototype.addDiv = function(div) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4267
    this._containerDiv.appendChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4268
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4269
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4270
Timeline._Impl.prototype.removeDiv = function(div) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4271
    this._containerDiv.removeChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4272
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4273
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4274
Timeline._Impl.prototype.isHorizontal = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4275
    return this._orientation == Timeline.HORIZONTAL;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4276
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4277
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4278
Timeline._Impl.prototype.isVertical = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4279
    return this._orientation == Timeline.VERTICAL;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4280
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4281
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4282
Timeline._Impl.prototype.getPixelLength = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4283
    return this._orientation == Timeline.HORIZONTAL ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4284
        this._containerDiv.offsetWidth : this._containerDiv.offsetHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4285
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4286
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4287
Timeline._Impl.prototype.getPixelWidth = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4288
    return this._orientation == Timeline.VERTICAL ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4289
        this._containerDiv.offsetWidth : this._containerDiv.offsetHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4290
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4291
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4292
Timeline._Impl.prototype.getUnit = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4293
    return this._unit;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4294
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4295
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4296
Timeline._Impl.prototype.getWidthStyle = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4297
    // which element.style attribute should be changed to affect Timeline's "width"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4298
    return this._orientation == Timeline.HORIZONTAL ? 'height' : 'width';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4299
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4300
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4301
Timeline._Impl.prototype.loadXML = function(url, f) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4302
    var tl = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4303
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4304
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4305
    var fError = function(statusText, status, xmlhttp) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4306
        alert("Failed to load data xml from " + url + "\n" + statusText);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4307
        tl.hideLoadingMessage();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4308
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4309
    var fDone = function(xmlhttp) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4310
        try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4311
            var xml = xmlhttp.responseXML;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4312
            if (!xml.documentElement && xmlhttp.responseStream) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4313
                xml.load(xmlhttp.responseStream);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4314
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4315
            f(xml, url);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4316
        } finally {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4317
            tl.hideLoadingMessage();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4318
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4319
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4320
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4321
    this.showLoadingMessage();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4322
    window.setTimeout(function() { SimileAjax.XmlHttp.get(url, fError, fDone); }, 0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4323
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4324
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4325
Timeline._Impl.prototype.loadJSON = function(url, f) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4326
    var tl = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4327
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4328
    var fError = function(statusText, status, xmlhttp) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4329
        alert("Failed to load json data from " + url + "\n" + statusText);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4330
        tl.hideLoadingMessage();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4331
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4332
    var fDone = function(xmlhttp) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4333
        try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4334
            f(eval('(' + xmlhttp.responseText + ')'), url);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4335
        } finally {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4336
            tl.hideLoadingMessage();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4337
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4338
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4339
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4340
    this.showLoadingMessage();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4341
    window.setTimeout(function() { SimileAjax.XmlHttp.get(url, fError, fDone); }, 0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4342
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4343
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4344
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4345
//
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4346
// Private functions used by Timeline object functions
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4347
//
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4348
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4349
Timeline._Impl.prototype._autoWidthScrollListener = function(band) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4350
    band.getTimeline()._autoWidthCheck(false);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4351
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4352
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4353
// called to re-calculate auto width and adjust the overall Timeline div if needed
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4354
Timeline._Impl.prototype._autoWidthCheck = function(okToShrink) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4355
    var timeline = this; // this Timeline
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4356
    var immediateChange = timeline._starting;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4357
    var newWidth = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4358
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4359
    function changeTimelineWidth() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4360
        var widthStyle = timeline.getWidthStyle();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4361
        if (immediateChange) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4362
            timeline._containerDiv.style[widthStyle] = newWidth + 'px';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4363
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4364
        	  // animate change
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4365
        	  timeline._autoResizing = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4366
        	  var animateParam ={};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4367
        	  animateParam[widthStyle] = newWidth + 'px';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4368
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4369
        	  SimileAjax.jQuery(timeline._containerDiv).animate(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4370
        	      animateParam, timeline.autoWidthAnimationTime,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4371
        	      'linear', function(){timeline._autoResizing = false;});
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4372
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4373
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4374
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4375
    function checkTimelineWidth() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4376
        var targetWidth = 0; // the new desired width
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4377
        var currentWidth = timeline.getPixelWidth();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4378
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4379
        if (timeline._autoResizing) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4380
        	return; // early return
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4381
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4382
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4383
        // compute targetWidth
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4384
        for (var i = 0; i < timeline._bands.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4385
            timeline._bands[i].checkAutoWidth();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4386
            targetWidth += timeline._bandInfos[i].width;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4387
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4388
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4389
        if (targetWidth > currentWidth || okToShrink) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4390
            // yes, let's change the size
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4391
            newWidth = targetWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4392
            changeTimelineWidth();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4393
            timeline._distributeWidths();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4394
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4395
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4396
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4397
    // function's mainline
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4398
    if (!timeline.autoWidth) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4399
        return; // early return
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4400
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4401
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4402
    checkTimelineWidth();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4403
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4404
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4405
Timeline._Impl.prototype._initialize = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4406
    var containerDiv = this._containerDiv;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4407
    var doc = containerDiv.ownerDocument;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4408
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4409
    containerDiv.className =
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4410
        containerDiv.className.split(" ").concat("timeline-container").join(" ");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4411
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4412
	/*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4413
	 * Set css-class on container div that will define orientation
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4414
	 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4415
	var orientation = (this.isHorizontal()) ? 'horizontal' : 'vertical'
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4416
	containerDiv.className +=' timeline-'+orientation;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4417
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4418
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4419
    while (containerDiv.firstChild) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4420
        containerDiv.removeChild(containerDiv.firstChild);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4421
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4422
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4423
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4424
     *  inserting copyright and link to simile
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4425
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4426
    var elmtCopyright = SimileAjax.Graphics.createTranslucentImage(Timeline.urlPrefix + (this.isHorizontal() ? "images/copyright-vertical.png" : "images/copyright.png"));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4427
    elmtCopyright.className = "timeline-copyright";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4428
    elmtCopyright.title = "Timeline copyright SIMILE - www.code.google.com/p/simile-widgets/";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4429
    SimileAjax.DOM.registerEvent(elmtCopyright, "click", function() { window.location = "http://www.simile-widgets.org/"; });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4430
    containerDiv.appendChild(elmtCopyright);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4431
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4432
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4433
     *  creating bands
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4434
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4435
    this._bands = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4436
    for (var i = 0; i < this._bandInfos.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4437
        var bandInfo = this._bandInfos[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4438
        var bandClass = bandInfo.bandClass || Timeline._Band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4439
        var band = new bandClass(this, this._bandInfos[i], i);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4440
        this._bands.push(band);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4441
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4442
    this._distributeWidths();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4443
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4444
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4445
     *  sync'ing bands
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4446
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4447
    for (var i = 0; i < this._bandInfos.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4448
        var bandInfo = this._bandInfos[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4449
        if ("syncWith" in bandInfo) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4450
            this._bands[i].setSyncWithBand(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4451
                this._bands[bandInfo.syncWith],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4452
                ("highlight" in bandInfo) ? bandInfo.highlight : false
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4453
            );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4454
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4455
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4456
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4457
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4458
    if (this.autoWidth) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4459
        for (var i = 0; i < this._bands.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4460
            this._bands[i].addOnScrollListener(this._autoWidthScrollListener);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4461
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4462
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4463
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4464
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4465
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4466
     *  creating loading UI
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4467
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4468
    var message = SimileAjax.Graphics.createMessageBubble(doc);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4469
    message.containerDiv.className = "timeline-message-container";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4470
    containerDiv.appendChild(message.containerDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4471
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4472
    message.contentDiv.className = "timeline-message";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4473
    message.contentDiv.innerHTML = "<img src='" + Timeline.urlPrefix + "images/progress-running.gif' /> Loading...";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4474
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4475
    this.showLoadingMessage = function() { message.containerDiv.style.display = "block"; };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4476
    this.hideLoadingMessage = function() { message.containerDiv.style.display = "none"; };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4477
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4478
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4479
Timeline._Impl.prototype._distributeWidths = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4480
    var length = this.getPixelLength();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4481
    var width = this.getPixelWidth();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4482
    var cumulativeWidth = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4483
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4484
    for (var i = 0; i < this._bands.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4485
        var band = this._bands[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4486
        var bandInfos = this._bandInfos[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4487
        var widthString = bandInfos.width;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4488
        var bandWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4489
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4490
        if (typeof widthString == 'string') {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4491
          var x =  widthString.indexOf("%");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4492
          if (x > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4493
              var percent = parseInt(widthString.substr(0, x));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4494
              bandWidth = Math.round(percent * width / 100);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4495
          } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4496
              bandWidth = parseInt(widthString);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4497
          }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4498
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4499
        	// was given an integer
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4500
        	bandWidth = widthString;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4501
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4502
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4503
        band.setBandShiftAndWidth(cumulativeWidth, bandWidth);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4504
        band.setViewLength(length);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4505
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4506
        cumulativeWidth += bandWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4507
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4508
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4509
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4510
Timeline._Impl.prototype.shiftOK = function(index, shift) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4511
    // Returns true if the proposed shift is ok
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4512
    //
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4513
    // Positive shift means going back in time
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4514
    var going_back = shift > 0,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4515
        going_forward = shift < 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4516
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4517
    // Is there an edge?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4518
    if ((going_back    && this.timeline_start == null) ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4519
        (going_forward && this.timeline_stop  == null) ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4520
        (shift == 0)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4521
        return (true);  // early return
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4522
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4523
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4524
    // If any of the bands has noted that it is changing the others,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4525
    // then this shift is a secondary shift in reaction to the real shift,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4526
    // which already happened. In such cases, ignore it. (The issue is
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4527
    // that a positive original shift can cause a negative secondary shift,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4528
    // as the bands adjust.)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4529
    var secondary_shift = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4530
    for (var i = 0; i < this._bands.length && !secondary_shift; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4531
       secondary_shift = this._bands[i].busy();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4532
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4533
    if (secondary_shift) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4534
        return(true); // early return
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4535
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4536
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4537
    // If we are already at an edge, then don't even think about going any further
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4538
    if ((going_back    && this.timeline_at_start) ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4539
        (going_forward && this.timeline_at_stop)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4540
        return (false);  // early return
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4541
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4542
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4543
    // Need to check all the bands
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4544
    var ok = false; // return value
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4545
    // If any of the bands will be or are showing an ok date, then let the shift proceed.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4546
    for (var i = 0; i < this._bands.length && !ok; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4547
       var band = this._bands[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4548
       if (going_back) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4549
           ok = (i == index ? band.getMinVisibleDateAfterDelta(shift) : band.getMinVisibleDate())
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4550
                >= this.timeline_start;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4551
       } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4552
           ok = (i == index ? band.getMaxVisibleDateAfterDelta(shift) : band.getMaxVisibleDate())
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4553
                <= this.timeline_stop;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4554
       }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4555
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4556
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4557
    // process results
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4558
    if (going_back) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4559
       this.timeline_at_start = !ok;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4560
       this.timeline_at_stop = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4561
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4562
       this.timeline_at_stop = !ok;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4563
       this.timeline_at_start = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4564
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4565
    // This is where you could have an effect once per hitting an
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4566
    // edge of the Timeline. Eg jitter the Timeline
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4567
    //if (!ok) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4568
        //alert(going_back ? "At beginning" : "At end");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4569
    //}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4570
    return (ok);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4571
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4572
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4573
Timeline._Impl.prototype.zoom = function (zoomIn, x, y, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4574
  var matcher = new RegExp("^timeline-band-([0-9]+)$");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4575
  var bandIndex = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4576
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4577
  var result = matcher.exec(target.id);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4578
  if (result) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4579
    bandIndex = parseInt(result[1]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4580
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4581
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4582
  if (bandIndex != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4583
    this._bands[bandIndex].zoom(zoomIn, x, y, target);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4584
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4585
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4586
  this.paint();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4587
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4588
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  4589
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4590
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4591
 * Coding standards:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4592
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4593
 * We aim towards Douglas Crockford's Javascript conventions.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4594
 * See:  http://javascript.crockford.com/code.html
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4595
 * See also: http://www.crockford.com/javascript/javascript.html
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4596
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4597
 * That said, this JS code was written before some recent JS
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4598
 * support libraries became widely used or available.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4599
 * In particular, the _ character is used to indicate a class function or
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4600
 * variable that should be considered private to the class.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4601
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4602
 * The code mostly uses accessor methods for getting/setting the private
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4603
 * class variables.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4604
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4605
 * Over time, we'd like to formalize the convention by using support libraries
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4606
 * which enforce privacy in objects.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4607
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4608
 * We also want to use jslint:  http://www.jslint.com/
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4609
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4610
 *
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  4611
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4612
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4613
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4614
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4615
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  4616
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4617
 *  Band
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  4618
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4619
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4620
Timeline._Band = function(timeline, bandInfo, index) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4621
    // hack for easier subclassing
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4622
    if (timeline !== undefined) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4623
        this.initialize(timeline, bandInfo, index);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4624
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4625
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4626
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4627
Timeline._Band.prototype.initialize = function(timeline, bandInfo, index) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4628
    // Set up the band's object
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4629
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4630
    // Munge params: If autoWidth is on for the Timeline, then ensure that
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4631
    // bandInfo.width is an integer
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4632
    if (timeline.autoWidth && typeof bandInfo.width == 'string') {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4633
        bandInfo.width = bandInfo.width.indexOf("%") > -1 ? 0 : parseInt(bandInfo.width);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4634
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4635
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4636
    this._timeline = timeline;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4637
    this._bandInfo = bandInfo;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4638
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4639
    this._index = index;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4640
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4641
    this._locale = ("locale" in bandInfo) ? bandInfo.locale : Timeline.getDefaultLocale();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4642
    this._timeZone = ("timeZone" in bandInfo) ? bandInfo.timeZone : 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4643
    this._labeller = ("labeller" in bandInfo) ? bandInfo.labeller :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4644
        (("createLabeller" in timeline.getUnit()) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4645
            timeline.getUnit().createLabeller(this._locale, this._timeZone) :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4646
            new Timeline.GregorianDateLabeller(this._locale, this._timeZone));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4647
    this._theme = bandInfo.theme;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4648
    this._zoomIndex = ("zoomIndex" in bandInfo) ? bandInfo.zoomIndex : 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4649
    this._zoomSteps = ("zoomSteps" in bandInfo) ? bandInfo.zoomSteps : null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4650
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4651
    this._dragging = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4652
    this._changing = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4653
    this._originalScrollSpeed = 5; // pixels
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4654
    this._scrollSpeed = this._originalScrollSpeed;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4655
    this._viewOrthogonalOffset= 0; // vertical offset if the timeline is horizontal, and vice versa
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4656
    this._onScrollListeners = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4657
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4658
    var b = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4659
    this._syncWithBand = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4660
    this._syncWithBandHandler = function(band) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4661
        b._onHighlightBandScroll();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4662
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4663
    this._selectorListener = function(band) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4664
        b._onHighlightBandScroll();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4665
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4666
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4667
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4668
     *  Install a textbox to capture keyboard events
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4669
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4670
    var inputDiv = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4671
    inputDiv.className = "timeline-band-input";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4672
    this._timeline.addDiv(inputDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4673
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4674
    this._keyboardInput = document.createElement("input");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4675
    this._keyboardInput.type = "text";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4676
    inputDiv.appendChild(this._keyboardInput);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4677
    SimileAjax.DOM.registerEventWithObject(this._keyboardInput, "keydown", this, "_onKeyDown");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4678
    SimileAjax.DOM.registerEventWithObject(this._keyboardInput, "keyup", this, "_onKeyUp");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4679
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4680
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4681
     *  The band's outer most div that slides with respect to the timeline's div
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4682
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4683
    this._div = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4684
    this._div.id = "timeline-band-" + index;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4685
    this._div.className = "timeline-band timeline-band-" + index;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4686
    this._timeline.addDiv(this._div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4687
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4688
    SimileAjax.DOM.registerEventWithObject(this._div, "mousedown", this, "_onMouseDown");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4689
    SimileAjax.DOM.registerEventWithObject(this._div, "mousemove", this, "_onMouseMove");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4690
    SimileAjax.DOM.registerEventWithObject(this._div, "mouseup", this, "_onMouseUp");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4691
    SimileAjax.DOM.registerEventWithObject(this._div, "mouseout", this, "_onMouseOut");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4692
    SimileAjax.DOM.registerEventWithObject(this._div, "dblclick", this, "_onDblClick");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4693
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4694
    var mouseWheel = this._theme!= null ? this._theme.mouseWheel : 'scroll'; // theme is not always defined
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4695
    if (mouseWheel === 'zoom' || mouseWheel === 'scroll' || this._zoomSteps) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4696
        // capture mouse scroll
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4697
        if (SimileAjax.Platform.browser.isFirefox) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4698
            SimileAjax.DOM.registerEventWithObject(this._div, "DOMMouseScroll", this, "_onMouseScroll");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4699
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4700
            SimileAjax.DOM.registerEventWithObject(this._div, "mousewheel", this, "_onMouseScroll");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4701
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4702
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4703
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4704
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4705
     *  The inner div that contains layers
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4706
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4707
    this._innerDiv = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4708
    this._innerDiv.className = "timeline-band-inner";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4709
    this._div.appendChild(this._innerDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4710
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4711
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4712
     *  Initialize parts of the band
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4713
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4714
    this._ether = bandInfo.ether;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4715
    bandInfo.ether.initialize(this, timeline);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4716
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4717
    this._etherPainter = bandInfo.etherPainter;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4718
    bandInfo.etherPainter.initialize(this, timeline);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4719
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4720
    this._eventSource = bandInfo.eventSource;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4721
    if (this._eventSource) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4722
        this._eventListener = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4723
            onAddMany: function() { b._onAddMany(); },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4724
            onClear:   function() { b._onClear(); }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4725
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4726
        this._eventSource.addListener(this._eventListener);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4727
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4728
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4729
    this._eventPainter = bandInfo.eventPainter;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4730
    this._eventTracksNeeded = 0;   // set by painter via updateEventTrackInfo
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4731
    this._eventTrackIncrement = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4732
    bandInfo.eventPainter.initialize(this, timeline);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4733
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4734
    this._decorators = ("decorators" in bandInfo) ? bandInfo.decorators : [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4735
    for (var i = 0; i < this._decorators.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4736
        this._decorators[i].initialize(this, timeline);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4737
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4738
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4739
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4740
Timeline._Band.SCROLL_MULTIPLES = 5;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4741
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4742
Timeline._Band.prototype.dispose = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4743
    this.closeBubble();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4744
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4745
    if (this._eventSource) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4746
        this._eventSource.removeListener(this._eventListener);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4747
        this._eventListener = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4748
        this._eventSource = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4749
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4750
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4751
    this._timeline = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4752
    this._bandInfo = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4753
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4754
    this._labeller = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4755
    this._ether = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4756
    this._etherPainter = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4757
    this._eventPainter = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4758
    this._decorators = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4759
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4760
    this._onScrollListeners = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4761
    this._syncWithBandHandler = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4762
    this._selectorListener = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4763
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4764
    this._div = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4765
    this._innerDiv = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4766
    this._keyboardInput = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4767
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4768
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4769
Timeline._Band.prototype.addOnScrollListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4770
    this._onScrollListeners.push(listener);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4771
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4772
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4773
Timeline._Band.prototype.removeOnScrollListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4774
    for (var i = 0; i < this._onScrollListeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4775
        if (this._onScrollListeners[i] == listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4776
            this._onScrollListeners.splice(i, 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4777
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4778
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4779
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4780
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4781
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4782
Timeline._Band.prototype.setSyncWithBand = function(band, highlight) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4783
    if (this._syncWithBand) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4784
        this._syncWithBand.removeOnScrollListener(this._syncWithBandHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4785
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4786
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4787
    this._syncWithBand = band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4788
    this._syncWithBand.addOnScrollListener(this._syncWithBandHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4789
    this._highlight = highlight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4790
    this._positionHighlight();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4791
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4792
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4793
Timeline._Band.prototype.getLocale = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4794
    return this._locale;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4795
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4796
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4797
Timeline._Band.prototype.getTimeZone = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4798
    return this._timeZone;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4799
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4800
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4801
Timeline._Band.prototype.getLabeller = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4802
    return this._labeller;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4803
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4804
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4805
Timeline._Band.prototype.getIndex = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4806
    return this._index;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4807
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4808
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4809
Timeline._Band.prototype.getEther = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4810
    return this._ether;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4811
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4812
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4813
Timeline._Band.prototype.getEtherPainter = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4814
    return this._etherPainter;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4815
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4816
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4817
Timeline._Band.prototype.getEventSource = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4818
    return this._eventSource;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4819
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4820
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4821
Timeline._Band.prototype.getEventPainter = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4822
    return this._eventPainter;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4823
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4824
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4825
Timeline._Band.prototype.getTimeline = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4826
    return this._timeline;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4827
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4828
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4829
// Autowidth support
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4830
Timeline._Band.prototype.updateEventTrackInfo = function(tracks, increment) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4831
    this._eventTrackIncrement = increment; // doesn't vary for a specific band
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4832
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4833
    if (tracks > this._eventTracksNeeded) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4834
        this._eventTracksNeeded = tracks;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4835
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4836
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4837
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4838
// Autowidth support
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4839
Timeline._Band.prototype.checkAutoWidth = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4840
    // if a new (larger) width is needed by the band
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4841
    // then: a) updates the band's bandInfo.width
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4842
    //
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4843
    // desiredWidth for the band is
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4844
    //   (number of tracks + margin) * track increment
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4845
    if (! this._timeline.autoWidth) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4846
      return; // early return
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4847
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4848
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4849
    var overviewBand = this._eventPainter.getType() == 'overview';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4850
    var margin = overviewBand ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4851
       this._theme.event.overviewTrack.autoWidthMargin :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4852
       this._theme.event.track.autoWidthMargin;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4853
    var desiredWidth = Math.ceil((this._eventTracksNeeded + margin) *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4854
                       this._eventTrackIncrement);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4855
    // add offset amount (additional margin)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4856
    desiredWidth += overviewBand ? this._theme.event.overviewTrack.offset :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4857
                                   this._theme.event.track.offset;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4858
    var bandInfo = this._bandInfo;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4859
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4860
    if (desiredWidth != bandInfo.width) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4861
        bandInfo.width = desiredWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4862
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4863
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4864
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4865
Timeline._Band.prototype.layout = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4866
    this.paint();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4867
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4868
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4869
Timeline._Band.prototype.paint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4870
    this._etherPainter.paint();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4871
    this._paintDecorators();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4872
    this._paintEvents();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4873
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4874
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4875
Timeline._Band.prototype.softLayout = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4876
    this.softPaint();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4877
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4878
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4879
Timeline._Band.prototype.softPaint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4880
    this._etherPainter.softPaint();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4881
    this._softPaintDecorators();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4882
    this._softPaintEvents();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4883
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4884
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4885
Timeline._Band.prototype.setBandShiftAndWidth = function(shift, width) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4886
    var inputDiv = this._keyboardInput.parentNode;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4887
    var middle = shift + Math.floor(width / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4888
    if (this._timeline.isHorizontal()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4889
        this._div.style.top = shift + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4890
        this._div.style.height = width + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4891
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4892
        inputDiv.style.top = middle + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4893
        inputDiv.style.left = "-1em";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4894
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4895
        this._div.style.left = shift + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4896
        this._div.style.width = width + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4897
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4898
        inputDiv.style.left = middle + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4899
        inputDiv.style.top = "-1em";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4900
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4901
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4902
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4903
Timeline._Band.prototype.getViewWidth = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4904
    if (this._timeline.isHorizontal()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4905
        return this._div.offsetHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4906
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4907
        return this._div.offsetWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4908
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4909
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4910
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4911
Timeline._Band.prototype.setViewLength = function(length) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4912
    this._viewLength = length;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4913
    this._recenterDiv();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4914
    this._onChanging();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4915
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4916
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4917
Timeline._Band.prototype.getViewLength = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4918
    return this._viewLength;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4919
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4920
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4921
Timeline._Band.prototype.getTotalViewLength = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4922
    return Timeline._Band.SCROLL_MULTIPLES * this._viewLength;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4923
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4924
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4925
Timeline._Band.prototype.getViewOffset = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4926
    return this._viewOffset;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4927
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4928
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4929
Timeline._Band.prototype.getMinDate = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4930
    return this._ether.pixelOffsetToDate(this._viewOffset);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4931
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4932
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4933
Timeline._Band.prototype.getMaxDate = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4934
    return this._ether.pixelOffsetToDate(this._viewOffset + Timeline._Band.SCROLL_MULTIPLES * this._viewLength);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4935
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4936
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4937
Timeline._Band.prototype.getMinVisibleDate = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4938
    return this._ether.pixelOffsetToDate(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4939
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4940
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4941
Timeline._Band.prototype.getMinVisibleDateAfterDelta = function(delta) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4942
    return this._ether.pixelOffsetToDate(delta);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4943
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4944
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4945
Timeline._Band.prototype.getMaxVisibleDate = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4946
    // Max date currently visible on band
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4947
    return this._ether.pixelOffsetToDate(this._viewLength);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4948
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4949
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4950
Timeline._Band.prototype.getMaxVisibleDateAfterDelta = function(delta) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4951
    // Max date visible on band after delta px view change is applied
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4952
    return this._ether.pixelOffsetToDate(this._viewLength + delta);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4953
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4954
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4955
Timeline._Band.prototype.getCenterVisibleDate = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4956
    return this._ether.pixelOffsetToDate(this._viewLength / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4957
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4958
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4959
Timeline._Band.prototype.setMinVisibleDate = function(date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4960
    if (!this._changing) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4961
        this._moveEther(Math.round(-this._ether.dateToPixelOffset(date)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4962
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4963
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4964
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4965
Timeline._Band.prototype.setMaxVisibleDate = function(date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4966
    if (!this._changing) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4967
        this._moveEther(Math.round(this._viewLength - this._ether.dateToPixelOffset(date)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4968
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4969
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4970
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4971
Timeline._Band.prototype.setCenterVisibleDate = function(date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4972
    if (!this._changing) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4973
        this._moveEther(Math.round(this._viewLength / 2 - this._ether.dateToPixelOffset(date)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4974
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4975
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4976
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4977
Timeline._Band.prototype.dateToPixelOffset = function(date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4978
    return this._ether.dateToPixelOffset(date) - this._viewOffset;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4979
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4980
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4981
Timeline._Band.prototype.pixelOffsetToDate = function(pixels) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4982
    return this._ether.pixelOffsetToDate(pixels + this._viewOffset);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4983
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4984
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4985
Timeline._Band.prototype.getViewOrthogonalOffset = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4986
    return this._viewOrthogonalOffset;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4987
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4988
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4989
Timeline._Band.prototype.setViewOrthogonalOffset = function(offset) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4990
    this._viewOrthogonalOffset = Math.max(0, offset);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4991
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4992
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4993
Timeline._Band.prototype.createLayerDiv = function(zIndex, className) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4994
    var div = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4995
    div.className = "timeline-band-layer" + (typeof className == "string" ? (" " + className) : "");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4996
    div.style.zIndex = zIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4997
    this._innerDiv.appendChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4998
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  4999
    var innerDiv = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5000
    innerDiv.className = "timeline-band-layer-inner";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5001
    if (SimileAjax.Platform.browser.isIE) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5002
        innerDiv.style.cursor = "move";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5003
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5004
        innerDiv.style.cursor = "-moz-grab";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5005
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5006
    div.appendChild(innerDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5007
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5008
    return innerDiv;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5009
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5010
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5011
Timeline._Band.prototype.removeLayerDiv = function(div) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5012
    this._innerDiv.removeChild(div.parentNode);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5013
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5014
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5015
Timeline._Band.prototype.scrollToCenter = function(date, f) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5016
    var pixelOffset = this._ether.dateToPixelOffset(date);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5017
    if (pixelOffset < -this._viewLength / 2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5018
        this.setCenterVisibleDate(this.pixelOffsetToDate(pixelOffset + this._viewLength));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5019
    } else if (pixelOffset > 3 * this._viewLength / 2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5020
        this.setCenterVisibleDate(this.pixelOffsetToDate(pixelOffset - this._viewLength));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5021
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5022
    this._autoScroll(Math.round(this._viewLength / 2 - this._ether.dateToPixelOffset(date)), f);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5023
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5024
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5025
Timeline._Band.prototype.showBubbleForEvent = function(eventID) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5026
    var evt = this.getEventSource().getEvent(eventID);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5027
    if (evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5028
        var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5029
        this.scrollToCenter(evt.getStart(), function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5030
            self._eventPainter.showBubble(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5031
        });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5032
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5033
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5034
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5035
Timeline._Band.prototype.zoom = function(zoomIn, x, y, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5036
  if (!this._zoomSteps) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5037
    // zoom disabled
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5038
    return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5039
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5040
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5041
  // shift the x value by our offset
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5042
  x += this._viewOffset;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5043
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5044
  var zoomDate = this._ether.pixelOffsetToDate(x);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5045
  var netIntervalChange = this._ether.zoom(zoomIn);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5046
  this._etherPainter.zoom(netIntervalChange);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5047
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5048
  // shift our zoom date to the far left
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5049
  this._moveEther(Math.round(-this._ether.dateToPixelOffset(zoomDate)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5050
  // then shift it back to where the mouse was
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5051
  this._moveEther(x);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5052
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5053
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5054
Timeline._Band.prototype._onMouseDown = function(innerFrame, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5055
    this.closeBubble();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5056
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5057
    this._dragging = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5058
    this._dragX = evt.clientX;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5059
    this._dragY = evt.clientY;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5060
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5061
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5062
Timeline._Band.prototype._onMouseMove = function(innerFrame, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5063
    if (this._dragging) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5064
        var diffX = evt.clientX - this._dragX;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5065
        var diffY = evt.clientY - this._dragY;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5066
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5067
        this._dragX = evt.clientX;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5068
        this._dragY = evt.clientY;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5069
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5070
        if (this._timeline.isHorizontal()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5071
            this._moveEther(diffX, diffY);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5072
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5073
            this._moveEther(diffY, diffX);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5074
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5075
        this._positionHighlight();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5076
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5077
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5078
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5079
Timeline._Band.prototype._onMouseUp = function(innerFrame, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5080
    this._dragging = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5081
    this._keyboardInput.focus();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5082
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5083
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5084
Timeline._Band.prototype._onMouseOut = function(innerFrame, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5085
    var coords = SimileAjax.DOM.getEventRelativeCoordinates(evt, innerFrame);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5086
    coords.x += this._viewOffset;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5087
    if (coords.x < 0 || coords.x > innerFrame.offsetWidth ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5088
        coords.y < 0 || coords.y > innerFrame.offsetHeight) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5089
        this._dragging = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5090
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5091
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5092
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5093
Timeline._Band.prototype._onMouseScroll = function(innerFrame, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5094
  var now = new Date();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5095
  now = now.getTime();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5096
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5097
  if (!this._lastScrollTime || ((now - this._lastScrollTime) > 50)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5098
    // limit 1 scroll per 200ms due to FF3 sending multiple events back to back
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5099
    this._lastScrollTime = now;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5100
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5101
    var delta = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5102
    if (evt.wheelDelta) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5103
      delta = evt.wheelDelta/120;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5104
    } else if (evt.detail) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5105
      delta = -evt.detail/3;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5106
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5107
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5108
    // either scroll or zoom
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5109
    var mouseWheel = this._theme.mouseWheel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5110
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5111
    if (this._zoomSteps || mouseWheel === 'zoom') {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5112
      var loc = SimileAjax.DOM.getEventRelativeCoordinates(evt, innerFrame);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5113
      if (delta != 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5114
        var zoomIn;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5115
        if (delta > 0)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5116
          zoomIn = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5117
        if (delta < 0)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5118
          zoomIn = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5119
        // call zoom on the timeline so we could zoom multiple bands if desired
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5120
        this._timeline.zoom(zoomIn, loc.x, loc.y, innerFrame);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5121
      }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5122
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5123
    else if (mouseWheel === 'scroll') {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5124
    	var move_amt = 50 * (delta < 0 ? -1 : 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5125
      this._moveEther(move_amt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5126
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5127
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5128
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5129
  // prevent bubble
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5130
  if (evt.stopPropagation) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5131
    evt.stopPropagation();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5132
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5133
  evt.cancelBubble = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5134
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5135
  // prevent the default action
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5136
  if (evt.preventDefault) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5137
    evt.preventDefault();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5138
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5139
  evt.returnValue = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5140
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5141
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5142
Timeline._Band.prototype._onDblClick = function(innerFrame, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5143
    var coords = SimileAjax.DOM.getEventRelativeCoordinates(evt, innerFrame);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5144
    var distance = coords.x - (this._viewLength / 2 - this._viewOffset);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5145
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5146
    this._autoScroll(-distance);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5147
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5148
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5149
Timeline._Band.prototype._onKeyDown = function(keyboardInput, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5150
    if (!this._dragging) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5151
        switch (evt.keyCode) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5152
        case 27: // ESC
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5153
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5154
        case 37: // left arrow
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5155
        case 38: // up arrow
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5156
            this._scrollSpeed = Math.min(50, Math.abs(this._scrollSpeed * 1.05));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5157
            this._moveEther(this._scrollSpeed);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5158
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5159
        case 39: // right arrow
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5160
        case 40: // down arrow
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5161
            this._scrollSpeed = -Math.min(50, Math.abs(this._scrollSpeed * 1.05));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5162
            this._moveEther(this._scrollSpeed);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5163
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5164
        default:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5165
            return true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5166
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5167
        this.closeBubble();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5168
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5169
        SimileAjax.DOM.cancelEvent(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5170
        return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5171
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5172
    return true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5173
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5174
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5175
Timeline._Band.prototype._onKeyUp = function(keyboardInput, evt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5176
    if (!this._dragging) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5177
        this._scrollSpeed = this._originalScrollSpeed;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5178
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5179
        switch (evt.keyCode) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5180
        case 35: // end
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5181
            this.setCenterVisibleDate(this._eventSource.getLatestDate());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5182
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5183
        case 36: // home
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5184
            this.setCenterVisibleDate(this._eventSource.getEarliestDate());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5185
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5186
        case 33: // page up
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5187
            this._autoScroll(this._timeline.getPixelLength());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5188
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5189
        case 34: // page down
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5190
            this._autoScroll(-this._timeline.getPixelLength());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5191
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5192
        default:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5193
            return true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5194
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5195
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5196
        this.closeBubble();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5197
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5198
        SimileAjax.DOM.cancelEvent(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5199
        return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5200
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5201
    return true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5202
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5203
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5204
Timeline._Band.prototype._autoScroll = function(distance, f) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5205
    var b = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5206
    var a = SimileAjax.Graphics.createAnimation(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5207
        function(abs, diff) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5208
            b._moveEther(diff);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5209
        },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5210
        0,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5211
        distance,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5212
        1000,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5213
        f
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5214
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5215
    a.run();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5216
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5217
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5218
Timeline._Band.prototype._moveEther = function(shift, orthogonalShift) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5219
    if (orthogonalShift === undefined) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5220
        orthogonalShift = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5221
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5222
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5223
    this.closeBubble();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5224
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5225
    // A positive shift means back in time
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5226
    // Check that we're not moving beyond Timeline's limits
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5227
    if (!this._timeline.shiftOK(this._index, shift)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5228
        return; // early return
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5229
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5230
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5231
    this._viewOffset += shift;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5232
    this._viewOrthogonalOffset = Math.min(0, this._viewOrthogonalOffset + orthogonalShift);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5233
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5234
    this._ether.shiftPixels(-shift);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5235
    if (this._timeline.isHorizontal()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5236
        this._div.style.left = this._viewOffset + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5237
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5238
        this._div.style.top = this._viewOffset + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5239
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5240
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5241
    if (this._viewOffset > -this._viewLength * 0.5 ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5242
        this._viewOffset < -this._viewLength * (Timeline._Band.SCROLL_MULTIPLES - 1.5)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5243
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5244
        this._recenterDiv();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5245
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5246
        this.softLayout();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5247
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5248
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5249
    this._onChanging();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5250
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5251
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5252
Timeline._Band.prototype._onChanging = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5253
    this._changing = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5254
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5255
    this._fireOnScroll();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5256
    this._setSyncWithBandDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5257
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5258
    this._changing = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5259
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5260
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5261
Timeline._Band.prototype.busy = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5262
    // Is this band busy changing other bands?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5263
    return(this._changing);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5264
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5265
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5266
Timeline._Band.prototype._fireOnScroll = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5267
    for (var i = 0; i < this._onScrollListeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5268
        this._onScrollListeners[i](this);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5269
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5270
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5271
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5272
Timeline._Band.prototype._setSyncWithBandDate = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5273
    if (this._syncWithBand) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5274
        var centerDate = this._ether.pixelOffsetToDate(this.getViewLength() / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5275
        this._syncWithBand.setCenterVisibleDate(centerDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5276
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5277
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5278
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5279
Timeline._Band.prototype._onHighlightBandScroll = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5280
    if (this._syncWithBand) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5281
        var centerDate = this._syncWithBand.getCenterVisibleDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5282
        var centerPixelOffset = this._ether.dateToPixelOffset(centerDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5283
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5284
        this._moveEther(Math.round(this._viewLength / 2 - centerPixelOffset));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5285
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5286
        if (this._highlight) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5287
            this._etherPainter.setHighlight(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5288
                this._syncWithBand.getMinVisibleDate(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5289
                this._syncWithBand.getMaxVisibleDate());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5290
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5291
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5292
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5293
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5294
Timeline._Band.prototype._onAddMany = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5295
    this._paintEvents();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5296
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5297
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5298
Timeline._Band.prototype._onClear = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5299
    this._paintEvents();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5300
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5301
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5302
Timeline._Band.prototype._positionHighlight = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5303
    if (this._syncWithBand) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5304
        var startDate = this._syncWithBand.getMinVisibleDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5305
        var endDate = this._syncWithBand.getMaxVisibleDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5306
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5307
        if (this._highlight) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5308
            this._etherPainter.setHighlight(startDate, endDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5309
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5310
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5311
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5312
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5313
Timeline._Band.prototype._recenterDiv = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5314
    this._viewOffset = -this._viewLength * (Timeline._Band.SCROLL_MULTIPLES - 1) / 2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5315
    if (this._timeline.isHorizontal()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5316
        this._div.style.left = this._viewOffset + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5317
        this._div.style.width = (Timeline._Band.SCROLL_MULTIPLES * this._viewLength) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5318
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5319
        this._div.style.top = this._viewOffset + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5320
        this._div.style.height = (Timeline._Band.SCROLL_MULTIPLES * this._viewLength) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5321
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5322
    this.layout();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5323
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5324
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5325
Timeline._Band.prototype._paintEvents = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5326
    this._eventPainter.paint();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5327
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5328
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5329
Timeline._Band.prototype._softPaintEvents = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5330
    this._eventPainter.softPaint();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5331
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5332
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5333
Timeline._Band.prototype._paintDecorators = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5334
    for (var i = 0; i < this._decorators.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5335
        this._decorators[i].paint();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5336
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5337
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5338
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5339
Timeline._Band.prototype._softPaintDecorators = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5340
    for (var i = 0; i < this._decorators.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5341
        this._decorators[i].softPaint();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5342
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5343
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5344
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5345
Timeline._Band.prototype.closeBubble = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5346
    SimileAjax.WindowManager.cancelPopups();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5347
};
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  5348
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5349
 *  Classic Theme
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  5350
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5351
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5352
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5353
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5354
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5355
Timeline.ClassicTheme = new Object();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5356
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5357
Timeline.ClassicTheme.implementations = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5358
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5359
Timeline.ClassicTheme.create = function(locale) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5360
    if (locale == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5361
        locale = Timeline.getDefaultLocale();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5362
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5363
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5364
    var f = Timeline.ClassicTheme.implementations[locale];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5365
    if (f == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5366
        f = Timeline.ClassicTheme._Impl;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5367
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5368
    return new f();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5369
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5370
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5371
Timeline.ClassicTheme._Impl = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5372
    this.firstDayOfWeek = 0; // Sunday
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5373
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5374
    // Note: Many styles previously set here are now set using CSS
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5375
    //       The comments indicate settings controlled by CSS, not
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5376
    //       lines to be un-commented.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5377
    //
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5378
    //
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5379
    // Attributes autoWidth, autoWidthAnimationTime, timeline_start
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5380
    // and timeline_stop must be set on the first band's theme.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5381
    // The other attributes can be set differently for each
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5382
    // band by using different themes for the bands.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5383
    this.autoWidth = false; // Should the Timeline automatically grow itself, as
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5384
                            // needed when too many events for the available width
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5385
                            // are painted on the visible part of the Timeline?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5386
    this.autoWidthAnimationTime = 500; // mSec
5767
1d811df051c2 [packaging] MANIFEST.in cleanups, update js/css copyright, remove no more used files
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2097
diff changeset
  5387
    this.timeline_start = null; // Setting a date, eg new Date(Date.UTC(2010,0,17,20,00,00,0)) will prevent the
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5388
                                // Timeline from being moved to anytime before the date.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5389
    this.timeline_stop = null;  // Use for setting a maximum date. The Timeline will not be able
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5390
                                // to be moved to anytime after this date.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5391
    this.ether = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5392
        backgroundColors: [
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5393
        //    "#EEE",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5394
        //    "#DDD",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5395
        //    "#CCC",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5396
        //    "#AAA"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5397
        ],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5398
     //   highlightColor:     "white",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5399
        highlightOpacity:   50,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5400
        interval: {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5401
            line: {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5402
                show:       true,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5403
                opacity:    25
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5404
               // color:      "#aaa",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5405
            },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5406
            weekend: {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5407
                opacity:    30
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5408
              //  color:      "#FFFFE0",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5409
            },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5410
            marker: {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5411
                hAlign:     "Bottom",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5412
                vAlign:     "Right"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5413
                                        /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5414
                hBottomStyler: function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5415
                    elmt.className = "timeline-ether-marker-bottom";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5416
                },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5417
                hBottomEmphasizedStyler: function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5418
                    elmt.className = "timeline-ether-marker-bottom-emphasized";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5419
                },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5420
                hTopStyler: function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5421
                    elmt.className = "timeline-ether-marker-top";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5422
                },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5423
                hTopEmphasizedStyler: function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5424
                    elmt.className = "timeline-ether-marker-top-emphasized";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5425
                },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5426
                */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5427
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5428
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5429
               /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5430
                                  vRightStyler: function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5431
                    elmt.className = "timeline-ether-marker-right";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5432
                },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5433
                vRightEmphasizedStyler: function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5434
                    elmt.className = "timeline-ether-marker-right-emphasized";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5435
                },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5436
                vLeftStyler: function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5437
                    elmt.className = "timeline-ether-marker-left";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5438
                },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5439
                vLeftEmphasizedStyler:function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5440
                    elmt.className = "timeline-ether-marker-left-emphasized";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5441
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5442
                */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5443
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5444
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5445
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5446
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5447
    this.event = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5448
        track: {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5449
                   height: 10, // px. You will need to change the track
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5450
                               //     height if you change the tape height.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5451
                      gap:  2, // px. Gap between tracks
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5452
                   offset:  2, // px. top margin above tapes
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5453
          autoWidthMargin:  1.5
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5454
          /* autoWidthMargin is only used if autoWidth (see above) is true.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5455
             The autoWidthMargin setting is used to set how close the bottom of the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5456
             lowest track is to the edge of the band's div. The units are total track
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5457
             width (tape + label + gap). A min of 0.5 is suggested. Use this setting to
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5458
             move the bottom track's tapes above the axis markers, if needed for your
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5459
             Timeline.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5460
          */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5461
        },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5462
        overviewTrack: {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5463
                  offset: 20, // px -- top margin above tapes
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5464
              tickHeight:  6, // px
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5465
                  height:  2, // px
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5466
                     gap:  1, // px
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5467
         autoWidthMargin:  5 // This attribute is only used if autoWidth (see above) is true.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5468
        },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5469
        tape: {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5470
            height:         4 // px. For thicker tapes, remember to change track height too.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5471
        },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5472
        instant: {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5473
                           icon: Timeline.urlPrefix + "images/dull-blue-circle.png",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5474
                                 // default icon. Icon can also be specified per event
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5475
                      iconWidth: 10,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5476
                     iconHeight: 10,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5477
               impreciseOpacity: 20, // opacity of the tape when durationEvent is false
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5478
            impreciseIconMargin: 3   // A tape and an icon are painted for imprecise instant
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5479
                                     // events. This attribute is the margin between the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5480
                                     // bottom of the tape and the top of the icon in that
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5481
                                     // case.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5482
    //        color:             "#58A0DC",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5483
    //        impreciseColor:    "#58A0DC",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5484
        },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5485
        duration: {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5486
            impreciseOpacity: 20 // tape opacity for imprecise part of duration events
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5487
      //      color:            "#58A0DC",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5488
      //      impreciseColor:   "#58A0DC",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5489
        },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5490
        label: {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5491
            backgroundOpacity: 50,// only used in detailed painter
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5492
               offsetFromLine:  3 // px left margin amount from icon's right edge
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5493
      //      backgroundColor:   "white",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5494
      //      lineColor:         "#58A0DC",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5495
        },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5496
        highlightColors: [  // Use with getEventPainter().setHighlightMatcher
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5497
                            // See webapp/examples/examples.js
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5498
            "#FFFF00",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5499
            "#FFC000",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5500
            "#FF0000",
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5501
            "#0000FF"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5502
        ],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5503
        highlightLabelBackground: false, // When highlighting an event, also change the event's label background?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5504
        bubble: {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5505
            width:          250, // px
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5506
            maxHeight:        0, // px Maximum height of bubbles. 0 means no max height.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5507
                                 // scrollbar will be added for taller bubbles
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5508
            titleStyler: function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5509
                elmt.className = "timeline-event-bubble-title";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5510
            },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5511
            bodyStyler: function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5512
                elmt.className = "timeline-event-bubble-body";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5513
            },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5514
            imageStyler: function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5515
                elmt.className = "timeline-event-bubble-image";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5516
            },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5517
            wikiStyler: function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5518
                elmt.className = "timeline-event-bubble-wiki";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5519
            },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5520
            timeStyler: function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5521
                elmt.className = "timeline-event-bubble-time";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5522
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5523
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5524
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5525
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5526
    this.mouseWheel = 'scroll'; // 'default', 'zoom', 'scroll'
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  5527
};/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5528
 *  An "ether" is a object that maps date/time to pixel coordinates.
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  5529
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5530
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5531
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  5532
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5533
 *  Linear Ether
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  5534
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5535
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5536
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5537
Timeline.LinearEther = function(params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5538
    this._params = params;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5539
    this._interval = params.interval;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5540
    this._pixelsPerInterval = params.pixelsPerInterval;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5541
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5542
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5543
Timeline.LinearEther.prototype.initialize = function(band, timeline) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5544
    this._band = band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5545
    this._timeline = timeline;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5546
    this._unit = timeline.getUnit();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5547
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5548
    if ("startsOn" in this._params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5549
        this._start = this._unit.parseFromObject(this._params.startsOn);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5550
    } else if ("endsOn" in this._params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5551
        this._start = this._unit.parseFromObject(this._params.endsOn);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5552
        this.shiftPixels(-this._timeline.getPixelLength());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5553
    } else if ("centersOn" in this._params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5554
        this._start = this._unit.parseFromObject(this._params.centersOn);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5555
        this.shiftPixels(-this._timeline.getPixelLength() / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5556
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5557
        this._start = this._unit.makeDefaultValue();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5558
        this.shiftPixels(-this._timeline.getPixelLength() / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5559
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5560
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5561
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5562
Timeline.LinearEther.prototype.setDate = function(date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5563
    this._start = this._unit.cloneValue(date);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5564
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5565
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5566
Timeline.LinearEther.prototype.shiftPixels = function(pixels) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5567
    var numeric = this._interval * pixels / this._pixelsPerInterval;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5568
    this._start = this._unit.change(this._start, numeric);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5569
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5570
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5571
Timeline.LinearEther.prototype.dateToPixelOffset = function(date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5572
    var numeric = this._unit.compare(date, this._start);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5573
    return this._pixelsPerInterval * numeric / this._interval;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5574
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5575
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5576
Timeline.LinearEther.prototype.pixelOffsetToDate = function(pixels) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5577
    var numeric = pixels * this._interval / this._pixelsPerInterval;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5578
    return this._unit.change(this._start, numeric);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5579
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5580
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5581
Timeline.LinearEther.prototype.zoom = function(zoomIn) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5582
  var netIntervalChange = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5583
  var currentZoomIndex = this._band._zoomIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5584
  var newZoomIndex = currentZoomIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5585
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5586
  if (zoomIn && (currentZoomIndex > 0)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5587
    newZoomIndex = currentZoomIndex - 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5588
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5589
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5590
  if (!zoomIn && (currentZoomIndex < (this._band._zoomSteps.length - 1))) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5591
    newZoomIndex = currentZoomIndex + 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5592
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5593
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5594
  this._band._zoomIndex = newZoomIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5595
  this._interval =
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5596
    SimileAjax.DateTime.gregorianUnitLengths[this._band._zoomSteps[newZoomIndex].unit];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5597
  this._pixelsPerInterval = this._band._zoomSteps[newZoomIndex].pixelsPerInterval;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5598
  netIntervalChange = this._band._zoomSteps[newZoomIndex].unit -
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5599
    this._band._zoomSteps[currentZoomIndex].unit;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5600
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5601
  return netIntervalChange;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5602
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5603
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5604
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  5605
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5606
 *  Hot Zone Ether
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  5607
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5608
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5609
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5610
Timeline.HotZoneEther = function(params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5611
    this._params = params;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5612
    this._interval = params.interval;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5613
    this._pixelsPerInterval = params.pixelsPerInterval;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5614
    this._theme = params.theme;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5615
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5616
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5617
Timeline.HotZoneEther.prototype.initialize = function(band, timeline) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5618
    this._band = band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5619
    this._timeline = timeline;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5620
    this._unit = timeline.getUnit();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5621
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5622
    this._zones = [{
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5623
        startTime:  Number.NEGATIVE_INFINITY,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5624
        endTime:    Number.POSITIVE_INFINITY,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5625
        magnify:    1
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5626
    }];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5627
    var params = this._params;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5628
    for (var i = 0; i < params.zones.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5629
        var zone = params.zones[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5630
        var zoneStart = this._unit.parseFromObject(zone.start);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5631
        var zoneEnd =   this._unit.parseFromObject(zone.end);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5632
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5633
        for (var j = 0; j < this._zones.length && this._unit.compare(zoneEnd, zoneStart) > 0; j++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5634
            var zone2 = this._zones[j];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5635
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5636
            if (this._unit.compare(zoneStart, zone2.endTime) < 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5637
                if (this._unit.compare(zoneStart, zone2.startTime) > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5638
                    this._zones.splice(j, 0, {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5639
                        startTime:   zone2.startTime,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5640
                        endTime:     zoneStart,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5641
                        magnify:     zone2.magnify
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5642
                    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5643
                    j++;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5644
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5645
                    zone2.startTime = zoneStart;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5646
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5647
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5648
                if (this._unit.compare(zoneEnd, zone2.endTime) < 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5649
                    this._zones.splice(j, 0, {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5650
                        startTime:  zoneStart,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5651
                        endTime:    zoneEnd,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5652
                        magnify:    zone.magnify * zone2.magnify
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5653
                    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5654
                    j++;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5655
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5656
                    zone2.startTime = zoneEnd;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5657
                    zoneStart = zoneEnd;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5658
                } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5659
                    zone2.magnify *= zone.magnify;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5660
                    zoneStart = zone2.endTime;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5661
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5662
            } // else, try the next existing zone
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5663
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5664
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5665
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5666
    if ("startsOn" in this._params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5667
        this._start = this._unit.parseFromObject(this._params.startsOn);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5668
    } else if ("endsOn" in this._params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5669
        this._start = this._unit.parseFromObject(this._params.endsOn);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5670
        this.shiftPixels(-this._timeline.getPixelLength());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5671
    } else if ("centersOn" in this._params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5672
        this._start = this._unit.parseFromObject(this._params.centersOn);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5673
        this.shiftPixels(-this._timeline.getPixelLength() / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5674
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5675
        this._start = this._unit.makeDefaultValue();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5676
        this.shiftPixels(-this._timeline.getPixelLength() / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5677
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5678
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5679
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5680
Timeline.HotZoneEther.prototype.setDate = function(date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5681
    this._start = this._unit.cloneValue(date);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5682
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5683
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5684
Timeline.HotZoneEther.prototype.shiftPixels = function(pixels) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5685
    this._start = this.pixelOffsetToDate(pixels);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5686
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5687
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5688
Timeline.HotZoneEther.prototype.dateToPixelOffset = function(date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5689
    return this._dateDiffToPixelOffset(this._start, date);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5690
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5691
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5692
Timeline.HotZoneEther.prototype.pixelOffsetToDate = function(pixels) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5693
    return this._pixelOffsetToDate(pixels, this._start);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5694
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5695
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5696
Timeline.HotZoneEther.prototype.zoom = function(zoomIn) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5697
  var netIntervalChange = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5698
  var currentZoomIndex = this._band._zoomIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5699
  var newZoomIndex = currentZoomIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5700
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5701
  if (zoomIn && (currentZoomIndex > 0)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5702
    newZoomIndex = currentZoomIndex - 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5703
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5704
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5705
  if (!zoomIn && (currentZoomIndex < (this._band._zoomSteps.length - 1))) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5706
    newZoomIndex = currentZoomIndex + 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5707
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5708
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5709
  this._band._zoomIndex = newZoomIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5710
  this._interval =
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5711
    SimileAjax.DateTime.gregorianUnitLengths[this._band._zoomSteps[newZoomIndex].unit];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5712
  this._pixelsPerInterval = this._band._zoomSteps[newZoomIndex].pixelsPerInterval;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5713
  netIntervalChange = this._band._zoomSteps[newZoomIndex].unit -
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5714
    this._band._zoomSteps[currentZoomIndex].unit;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5715
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5716
  return netIntervalChange;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5717
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5718
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5719
Timeline.HotZoneEther.prototype._dateDiffToPixelOffset = function(fromDate, toDate) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5720
    var scale = this._getScale();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5721
    var fromTime = fromDate;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5722
    var toTime = toDate;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5723
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5724
    var pixels = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5725
    if (this._unit.compare(fromTime, toTime) < 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5726
        var z = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5727
        while (z < this._zones.length) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5728
            if (this._unit.compare(fromTime, this._zones[z].endTime) < 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5729
                break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5730
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5731
            z++;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5732
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5733
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5734
        while (this._unit.compare(fromTime, toTime) < 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5735
            var zone = this._zones[z];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5736
            var toTime2 = this._unit.earlier(toTime, zone.endTime);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5737
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5738
            pixels += (this._unit.compare(toTime2, fromTime) / (scale / zone.magnify));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5739
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5740
            fromTime = toTime2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5741
            z++;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5742
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5743
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5744
        var z = this._zones.length - 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5745
        while (z >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5746
            if (this._unit.compare(fromTime, this._zones[z].startTime) > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5747
                break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5748
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5749
            z--;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5750
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5751
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5752
        while (this._unit.compare(fromTime, toTime) > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5753
            var zone = this._zones[z];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5754
            var toTime2 = this._unit.later(toTime, zone.startTime);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5755
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5756
            pixels += (this._unit.compare(toTime2, fromTime) / (scale / zone.magnify));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5757
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5758
            fromTime = toTime2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5759
            z--;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5760
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5761
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5762
    return pixels;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5763
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5764
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5765
Timeline.HotZoneEther.prototype._pixelOffsetToDate = function(pixels, fromDate) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5766
    var scale = this._getScale();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5767
    var time = fromDate;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5768
    if (pixels > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5769
        var z = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5770
        while (z < this._zones.length) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5771
            if (this._unit.compare(time, this._zones[z].endTime) < 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5772
                break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5773
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5774
            z++;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5775
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5776
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5777
        while (pixels > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5778
            var zone = this._zones[z];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5779
            var scale2 = scale / zone.magnify;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5780
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5781
            if (zone.endTime == Number.POSITIVE_INFINITY) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5782
                time = this._unit.change(time, pixels * scale2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5783
                pixels = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5784
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5785
                var pixels2 = this._unit.compare(zone.endTime, time) / scale2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5786
                if (pixels2 > pixels) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5787
                    time = this._unit.change(time, pixels * scale2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5788
                    pixels = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5789
                } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5790
                    time = zone.endTime;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5791
                    pixels -= pixels2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5792
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5793
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5794
            z++;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5795
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5796
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5797
        var z = this._zones.length - 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5798
        while (z >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5799
            if (this._unit.compare(time, this._zones[z].startTime) > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5800
                break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5801
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5802
            z--;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5803
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5804
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5805
        pixels = -pixels;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5806
        while (pixels > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5807
            var zone = this._zones[z];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5808
            var scale2 = scale / zone.magnify;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5809
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5810
            if (zone.startTime == Number.NEGATIVE_INFINITY) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5811
                time = this._unit.change(time, -pixels * scale2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5812
                pixels = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5813
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5814
                var pixels2 = this._unit.compare(time, zone.startTime) / scale2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5815
                if (pixels2 > pixels) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5816
                    time = this._unit.change(time, -pixels * scale2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5817
                    pixels = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5818
                } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5819
                    time = zone.startTime;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5820
                    pixels -= pixels2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5821
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5822
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5823
            z--;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5824
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5825
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5826
    return time;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5827
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5828
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5829
Timeline.HotZoneEther.prototype._getScale = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5830
    return this._interval / this._pixelsPerInterval;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5831
};
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  5832
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5833
 *  Gregorian Ether Painter
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  5834
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5835
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5836
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5837
Timeline.GregorianEtherPainter = function(params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5838
    this._params = params;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5839
    this._theme = params.theme;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5840
    this._unit = params.unit;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5841
    this._multiple = ("multiple" in params) ? params.multiple : 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5842
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5843
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5844
Timeline.GregorianEtherPainter.prototype.initialize = function(band, timeline) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5845
    this._band = band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5846
    this._timeline = timeline;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5847
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5848
    this._backgroundLayer = band.createLayerDiv(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5849
    this._backgroundLayer.setAttribute("name", "ether-background"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5850
    this._backgroundLayer.className = 'timeline-ether-bg';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5851
  //  this._backgroundLayer.style.background = this._theme.ether.backgroundColors[band.getIndex()];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5852
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5853
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5854
    this._markerLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5855
    this._lineLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5856
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5857
    var align = ("align" in this._params && this._params.align != undefined) ? this._params.align :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5858
        this._theme.ether.interval.marker[timeline.isHorizontal() ? "hAlign" : "vAlign"];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5859
    var showLine = ("showLine" in this._params) ? this._params.showLine :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5860
        this._theme.ether.interval.line.show;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5861
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5862
    this._intervalMarkerLayout = new Timeline.EtherIntervalMarkerLayout(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5863
        this._timeline, this._band, this._theme, align, showLine);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5864
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5865
    this._highlight = new Timeline.EtherHighlight(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5866
        this._timeline, this._band, this._theme, this._backgroundLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5867
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5868
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5869
Timeline.GregorianEtherPainter.prototype.setHighlight = function(startDate, endDate) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5870
    this._highlight.position(startDate, endDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5871
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5872
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5873
Timeline.GregorianEtherPainter.prototype.paint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5874
    if (this._markerLayer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5875
        this._band.removeLayerDiv(this._markerLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5876
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5877
    this._markerLayer = this._band.createLayerDiv(100);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5878
    this._markerLayer.setAttribute("name", "ether-markers"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5879
    this._markerLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5880
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5881
    if (this._lineLayer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5882
        this._band.removeLayerDiv(this._lineLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5883
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5884
    this._lineLayer = this._band.createLayerDiv(1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5885
    this._lineLayer.setAttribute("name", "ether-lines"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5886
    this._lineLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5887
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5888
    var minDate = this._band.getMinDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5889
    var maxDate = this._band.getMaxDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5890
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5891
    var timeZone = this._band.getTimeZone();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5892
    var labeller = this._band.getLabeller();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5893
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5894
    SimileAjax.DateTime.roundDownToInterval(minDate, this._unit, timeZone, this._multiple, this._theme.firstDayOfWeek);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5895
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5896
    var p = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5897
    var incrementDate = function(date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5898
        for (var i = 0; i < p._multiple; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5899
            SimileAjax.DateTime.incrementByInterval(date, p._unit);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5900
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5901
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5902
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5903
    while (minDate.getTime() < maxDate.getTime()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5904
        this._intervalMarkerLayout.createIntervalMarker(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5905
            minDate, labeller, this._unit, this._markerLayer, this._lineLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5906
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5907
        incrementDate(minDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5908
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5909
    this._markerLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5910
    this._lineLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5911
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5912
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5913
Timeline.GregorianEtherPainter.prototype.softPaint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5914
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5915
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5916
Timeline.GregorianEtherPainter.prototype.zoom = function(netIntervalChange) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5917
  if (netIntervalChange != 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5918
    this._unit += netIntervalChange;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5919
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5920
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5921
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5922
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  5923
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5924
 *  Hot Zone Gregorian Ether Painter
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  5925
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5926
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5927
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5928
Timeline.HotZoneGregorianEtherPainter = function(params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5929
    this._params = params;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5930
    this._theme = params.theme;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5931
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5932
    this._zones = [{
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5933
        startTime:  Number.NEGATIVE_INFINITY,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5934
        endTime:    Number.POSITIVE_INFINITY,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5935
        unit:       params.unit,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5936
        multiple:   1
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5937
    }];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5938
    for (var i = 0; i < params.zones.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5939
        var zone = params.zones[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5940
        var zoneStart = SimileAjax.DateTime.parseGregorianDateTime(zone.start).getTime();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5941
        var zoneEnd = SimileAjax.DateTime.parseGregorianDateTime(zone.end).getTime();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5942
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5943
        for (var j = 0; j < this._zones.length && zoneEnd > zoneStart; j++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5944
            var zone2 = this._zones[j];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5945
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5946
            if (zoneStart < zone2.endTime) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5947
                if (zoneStart > zone2.startTime) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5948
                    this._zones.splice(j, 0, {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5949
                        startTime:   zone2.startTime,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5950
                        endTime:     zoneStart,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5951
                        unit:        zone2.unit,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5952
                        multiple:    zone2.multiple
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5953
                    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5954
                    j++;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5955
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5956
                    zone2.startTime = zoneStart;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5957
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5958
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5959
                if (zoneEnd < zone2.endTime) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5960
                    this._zones.splice(j, 0, {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5961
                        startTime:  zoneStart,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5962
                        endTime:    zoneEnd,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5963
                        unit:       zone.unit,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5964
                        multiple:   (zone.multiple) ? zone.multiple : 1
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5965
                    });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5966
                    j++;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5967
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5968
                    zone2.startTime = zoneEnd;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5969
                    zoneStart = zoneEnd;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5970
                } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5971
                    zone2.multiple = zone.multiple;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5972
                    zone2.unit = zone.unit;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5973
                    zoneStart = zone2.endTime;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5974
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5975
            } // else, try the next existing zone
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5976
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5977
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5978
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5979
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5980
Timeline.HotZoneGregorianEtherPainter.prototype.initialize = function(band, timeline) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5981
    this._band = band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5982
    this._timeline = timeline;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5983
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5984
    this._backgroundLayer = band.createLayerDiv(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5985
    this._backgroundLayer.setAttribute("name", "ether-background"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5986
    this._backgroundLayer.className ='timeline-ether-bg';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5987
    //this._backgroundLayer.style.background = this._theme.ether.backgroundColors[band.getIndex()];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5988
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5989
    this._markerLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5990
    this._lineLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5991
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5992
    var align = ("align" in this._params && this._params.align != undefined) ? this._params.align :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5993
        this._theme.ether.interval.marker[timeline.isHorizontal() ? "hAlign" : "vAlign"];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5994
    var showLine = ("showLine" in this._params) ? this._params.showLine :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5995
        this._theme.ether.interval.line.show;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5996
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5997
    this._intervalMarkerLayout = new Timeline.EtherIntervalMarkerLayout(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5998
        this._timeline, this._band, this._theme, align, showLine);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  5999
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6000
    this._highlight = new Timeline.EtherHighlight(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6001
        this._timeline, this._band, this._theme, this._backgroundLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6002
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6003
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6004
Timeline.HotZoneGregorianEtherPainter.prototype.setHighlight = function(startDate, endDate) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6005
    this._highlight.position(startDate, endDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6006
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6007
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6008
Timeline.HotZoneGregorianEtherPainter.prototype.paint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6009
    if (this._markerLayer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6010
        this._band.removeLayerDiv(this._markerLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6011
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6012
    this._markerLayer = this._band.createLayerDiv(100);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6013
    this._markerLayer.setAttribute("name", "ether-markers"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6014
    this._markerLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6015
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6016
    if (this._lineLayer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6017
        this._band.removeLayerDiv(this._lineLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6018
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6019
    this._lineLayer = this._band.createLayerDiv(1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6020
    this._lineLayer.setAttribute("name", "ether-lines"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6021
    this._lineLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6022
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6023
    var minDate = this._band.getMinDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6024
    var maxDate = this._band.getMaxDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6025
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6026
    var timeZone = this._band.getTimeZone();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6027
    var labeller = this._band.getLabeller();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6028
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6029
    var p = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6030
    var incrementDate = function(date, zone) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6031
        for (var i = 0; i < zone.multiple; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6032
            SimileAjax.DateTime.incrementByInterval(date, zone.unit);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6033
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6034
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6035
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6036
    var zStart = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6037
    while (zStart < this._zones.length) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6038
        if (minDate.getTime() < this._zones[zStart].endTime) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6039
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6040
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6041
        zStart++;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6042
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6043
    var zEnd = this._zones.length - 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6044
    while (zEnd >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6045
        if (maxDate.getTime() > this._zones[zEnd].startTime) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6046
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6047
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6048
        zEnd--;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6049
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6050
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6051
    for (var z = zStart; z <= zEnd; z++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6052
        var zone = this._zones[z];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6053
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6054
        var minDate2 = new Date(Math.max(minDate.getTime(), zone.startTime));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6055
        var maxDate2 = new Date(Math.min(maxDate.getTime(), zone.endTime));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6056
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6057
        SimileAjax.DateTime.roundDownToInterval(minDate2, zone.unit, timeZone, zone.multiple, this._theme.firstDayOfWeek);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6058
        SimileAjax.DateTime.roundUpToInterval(maxDate2, zone.unit, timeZone, zone.multiple, this._theme.firstDayOfWeek);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6059
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6060
        while (minDate2.getTime() < maxDate2.getTime()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6061
            this._intervalMarkerLayout.createIntervalMarker(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6062
                minDate2, labeller, zone.unit, this._markerLayer, this._lineLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6063
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6064
            incrementDate(minDate2, zone);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6065
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6066
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6067
    this._markerLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6068
    this._lineLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6069
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6070
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6071
Timeline.HotZoneGregorianEtherPainter.prototype.softPaint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6072
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6073
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6074
Timeline.HotZoneGregorianEtherPainter.prototype.zoom = function(netIntervalChange) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6075
  if (netIntervalChange != 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6076
    for (var i = 0; i < this._zones.length; ++i) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6077
      if (this._zones[i]) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6078
        this._zones[i].unit += netIntervalChange;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6079
      }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6080
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6081
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6082
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6083
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6084
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6085
 *  Year Count Ether Painter
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6086
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6087
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6088
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6089
Timeline.YearCountEtherPainter = function(params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6090
    this._params = params;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6091
    this._theme = params.theme;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6092
    this._startDate = SimileAjax.DateTime.parseGregorianDateTime(params.startDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6093
    this._multiple = ("multiple" in params) ? params.multiple : 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6094
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6095
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6096
Timeline.YearCountEtherPainter.prototype.initialize = function(band, timeline) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6097
    this._band = band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6098
    this._timeline = timeline;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6099
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6100
    this._backgroundLayer = band.createLayerDiv(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6101
    this._backgroundLayer.setAttribute("name", "ether-background"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6102
    this._backgroundLayer.className = 'timeline-ether-bg';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6103
   // this._backgroundLayer.style.background = this._theme.ether.backgroundColors[band.getIndex()];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6104
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6105
    this._markerLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6106
    this._lineLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6107
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6108
    var align = ("align" in this._params) ? this._params.align :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6109
        this._theme.ether.interval.marker[timeline.isHorizontal() ? "hAlign" : "vAlign"];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6110
    var showLine = ("showLine" in this._params) ? this._params.showLine :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6111
        this._theme.ether.interval.line.show;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6112
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6113
    this._intervalMarkerLayout = new Timeline.EtherIntervalMarkerLayout(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6114
        this._timeline, this._band, this._theme, align, showLine);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6115
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6116
    this._highlight = new Timeline.EtherHighlight(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6117
        this._timeline, this._band, this._theme, this._backgroundLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6118
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6119
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6120
Timeline.YearCountEtherPainter.prototype.setHighlight = function(startDate, endDate) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6121
    this._highlight.position(startDate, endDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6122
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6123
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6124
Timeline.YearCountEtherPainter.prototype.paint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6125
    if (this._markerLayer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6126
        this._band.removeLayerDiv(this._markerLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6127
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6128
    this._markerLayer = this._band.createLayerDiv(100);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6129
    this._markerLayer.setAttribute("name", "ether-markers"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6130
    this._markerLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6131
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6132
    if (this._lineLayer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6133
        this._band.removeLayerDiv(this._lineLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6134
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6135
    this._lineLayer = this._band.createLayerDiv(1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6136
    this._lineLayer.setAttribute("name", "ether-lines"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6137
    this._lineLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6138
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6139
    var minDate = new Date(this._startDate.getTime());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6140
    var maxDate = this._band.getMaxDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6141
    var yearDiff = this._band.getMinDate().getUTCFullYear() - this._startDate.getUTCFullYear();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6142
    minDate.setUTCFullYear(this._band.getMinDate().getUTCFullYear() - yearDiff % this._multiple);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6143
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6144
    var p = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6145
    var incrementDate = function(date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6146
        for (var i = 0; i < p._multiple; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6147
            SimileAjax.DateTime.incrementByInterval(date, SimileAjax.DateTime.YEAR);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6148
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6149
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6150
    var labeller = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6151
        labelInterval: function(date, intervalUnit) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6152
            var diff = date.getUTCFullYear() - p._startDate.getUTCFullYear();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6153
            return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6154
                text: diff,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6155
                emphasized: diff == 0
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6156
            };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6157
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6158
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6159
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6160
    while (minDate.getTime() < maxDate.getTime()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6161
        this._intervalMarkerLayout.createIntervalMarker(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6162
            minDate, labeller, SimileAjax.DateTime.YEAR, this._markerLayer, this._lineLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6163
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6164
        incrementDate(minDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6165
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6166
    this._markerLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6167
    this._lineLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6168
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6169
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6170
Timeline.YearCountEtherPainter.prototype.softPaint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6171
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6172
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6173
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6174
 *  Quarterly Ether Painter
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6175
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6176
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6177
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6178
Timeline.QuarterlyEtherPainter = function(params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6179
    this._params = params;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6180
    this._theme = params.theme;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6181
    this._startDate = SimileAjax.DateTime.parseGregorianDateTime(params.startDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6182
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6183
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6184
Timeline.QuarterlyEtherPainter.prototype.initialize = function(band, timeline) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6185
    this._band = band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6186
    this._timeline = timeline;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6187
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6188
    this._backgroundLayer = band.createLayerDiv(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6189
    this._backgroundLayer.setAttribute("name", "ether-background"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6190
    this._backgroundLayer.className = 'timeline-ether-bg';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6191
 //   this._backgroundLayer.style.background = this._theme.ether.backgroundColors[band.getIndex()];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6192
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6193
    this._markerLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6194
    this._lineLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6195
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6196
    var align = ("align" in this._params) ? this._params.align :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6197
        this._theme.ether.interval.marker[timeline.isHorizontal() ? "hAlign" : "vAlign"];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6198
    var showLine = ("showLine" in this._params) ? this._params.showLine :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6199
        this._theme.ether.interval.line.show;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6200
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6201
    this._intervalMarkerLayout = new Timeline.EtherIntervalMarkerLayout(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6202
        this._timeline, this._band, this._theme, align, showLine);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6203
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6204
    this._highlight = new Timeline.EtherHighlight(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6205
        this._timeline, this._band, this._theme, this._backgroundLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6206
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6207
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6208
Timeline.QuarterlyEtherPainter.prototype.setHighlight = function(startDate, endDate) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6209
    this._highlight.position(startDate, endDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6210
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6211
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6212
Timeline.QuarterlyEtherPainter.prototype.paint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6213
    if (this._markerLayer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6214
        this._band.removeLayerDiv(this._markerLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6215
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6216
    this._markerLayer = this._band.createLayerDiv(100);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6217
    this._markerLayer.setAttribute("name", "ether-markers"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6218
    this._markerLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6219
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6220
    if (this._lineLayer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6221
        this._band.removeLayerDiv(this._lineLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6222
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6223
    this._lineLayer = this._band.createLayerDiv(1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6224
    this._lineLayer.setAttribute("name", "ether-lines"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6225
    this._lineLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6226
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6227
    var minDate = new Date(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6228
    var maxDate = this._band.getMaxDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6229
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6230
    minDate.setUTCFullYear(Math.max(this._startDate.getUTCFullYear(), this._band.getMinDate().getUTCFullYear()));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6231
    minDate.setUTCMonth(this._startDate.getUTCMonth());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6232
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6233
    var p = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6234
    var incrementDate = function(date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6235
        date.setUTCMonth(date.getUTCMonth() + 3);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6236
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6237
    var labeller = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6238
        labelInterval: function(date, intervalUnit) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6239
            var quarters = (4 + (date.getUTCMonth() - p._startDate.getUTCMonth()) / 3) % 4;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6240
            if (quarters != 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6241
                return { text: "Q" + (quarters + 1), emphasized: false };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6242
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6243
                return { text: "Y" + (date.getUTCFullYear() - p._startDate.getUTCFullYear() + 1), emphasized: true };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6244
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6245
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6246
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6247
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6248
    while (minDate.getTime() < maxDate.getTime()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6249
        this._intervalMarkerLayout.createIntervalMarker(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6250
            minDate, labeller, SimileAjax.DateTime.YEAR, this._markerLayer, this._lineLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6251
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6252
        incrementDate(minDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6253
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6254
    this._markerLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6255
    this._lineLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6256
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6257
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6258
Timeline.QuarterlyEtherPainter.prototype.softPaint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6259
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6260
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6261
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6262
 *  Ether Interval Marker Layout
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6263
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6264
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6265
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6266
Timeline.EtherIntervalMarkerLayout = function(timeline, band, theme, align, showLine) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6267
    var horizontal = timeline.isHorizontal();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6268
    if (horizontal) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6269
        if (align == "Top") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6270
            this.positionDiv = function(div, offset) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6271
                div.style.left = offset + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6272
                div.style.top = "0px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6273
            };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6274
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6275
            this.positionDiv = function(div, offset) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6276
                div.style.left = offset + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6277
                div.style.bottom = "0px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6278
            };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6279
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6280
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6281
        if (align == "Left") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6282
            this.positionDiv = function(div, offset) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6283
                div.style.top = offset + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6284
                div.style.left = "0px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6285
            };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6286
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6287
            this.positionDiv = function(div, offset) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6288
                div.style.top = offset + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6289
                div.style.right = "0px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6290
            };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6291
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6292
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6293
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6294
    var markerTheme = theme.ether.interval.marker;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6295
    var lineTheme = theme.ether.interval.line;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6296
    var weekendTheme = theme.ether.interval.weekend;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6297
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6298
    var stylePrefix = (horizontal ? "h" : "v") + align;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6299
    var labelStyler = markerTheme[stylePrefix + "Styler"];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6300
    var emphasizedLabelStyler = markerTheme[stylePrefix + "EmphasizedStyler"];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6301
    var day = SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.DAY];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6302
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6303
    this.createIntervalMarker = function(date, labeller, unit, markerDiv, lineDiv) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6304
        var offset = Math.round(band.dateToPixelOffset(date));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6305
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6306
        if (showLine && unit != SimileAjax.DateTime.WEEK) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6307
            var divLine = timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6308
            divLine.className = "timeline-ether-lines";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6309
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6310
            if (lineTheme.opacity < 100) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6311
                SimileAjax.Graphics.setOpacity(divLine, lineTheme.opacity);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6312
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6313
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6314
            if (horizontal) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6315
				//divLine.className += " timeline-ether-lines-vertical";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6316
				divLine.style.left = offset + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6317
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6318
				//divLine.className += " timeline-ether-lines-horizontal";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6319
                divLine.style.top = offset + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6320
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6321
            lineDiv.appendChild(divLine);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6322
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6323
        if (unit == SimileAjax.DateTime.WEEK) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6324
            var firstDayOfWeek = theme.firstDayOfWeek;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6325
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6326
            var saturday = new Date(date.getTime() + (6 - firstDayOfWeek - 7) * day);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6327
            var monday = new Date(saturday.getTime() + 2 * day);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6328
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6329
            var saturdayPixel = Math.round(band.dateToPixelOffset(saturday));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6330
            var mondayPixel = Math.round(band.dateToPixelOffset(monday));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6331
            var length = Math.max(1, mondayPixel - saturdayPixel);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6332
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6333
            var divWeekend = timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6334
			divWeekend.className = 'timeline-ether-weekends'
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6335
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6336
            if (weekendTheme.opacity < 100) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6337
                SimileAjax.Graphics.setOpacity(divWeekend, weekendTheme.opacity);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6338
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6339
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6340
            if (horizontal) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6341
                divWeekend.style.left = saturdayPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6342
                divWeekend.style.width = length + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6343
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6344
                divWeekend.style.top = saturdayPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6345
                divWeekend.style.height = length + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6346
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6347
            lineDiv.appendChild(divWeekend);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6348
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6349
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6350
        var label = labeller.labelInterval(date, unit);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6351
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6352
        var div = timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6353
        div.innerHTML = label.text;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6354
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6355
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6356
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6357
		div.className = 'timeline-date-label'
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6358
		if(label.emphasized) div.className += ' timeline-date-label-em'
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6359
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6360
        this.positionDiv(div, offset);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6361
        markerDiv.appendChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6362
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6363
        return div;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6364
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6365
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6366
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6367
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6368
 *  Ether Highlight Layout
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6369
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6370
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6371
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6372
Timeline.EtherHighlight = function(timeline, band, theme, backgroundLayer) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6373
    var horizontal = timeline.isHorizontal();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6374
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6375
    this._highlightDiv = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6376
    this._createHighlightDiv = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6377
        if (this._highlightDiv == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6378
            this._highlightDiv = timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6379
            this._highlightDiv.setAttribute("name", "ether-highlight"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6380
            this._highlightDiv.className = 'timeline-ether-highlight'
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6381
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6382
            var opacity = theme.ether.highlightOpacity;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6383
            if (opacity < 100) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6384
                SimileAjax.Graphics.setOpacity(this._highlightDiv, opacity);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6385
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6386
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6387
            backgroundLayer.appendChild(this._highlightDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6388
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6389
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6390
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6391
    this.position = function(startDate, endDate) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6392
        this._createHighlightDiv();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6393
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6394
        var startPixel = Math.round(band.dateToPixelOffset(startDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6395
        var endPixel = Math.round(band.dateToPixelOffset(endDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6396
        var length = Math.max(endPixel - startPixel, 3);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6397
        if (horizontal) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6398
            this._highlightDiv.style.left = startPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6399
            this._highlightDiv.style.width = length + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6400
            this._highlightDiv.style.height = (band.getViewWidth() - 4) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6401
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6402
            this._highlightDiv.style.top = startPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6403
            this._highlightDiv.style.height = length + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6404
            this._highlightDiv.style.width = (band.getViewWidth() - 4) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6405
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6406
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6407
};
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6408
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6409
 *  Event Utils
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6410
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6411
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6412
Timeline.EventUtils = {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6413
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6414
Timeline.EventUtils.getNewEventID = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6415
    // global across page
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6416
    if (this._lastEventID == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6417
        this._lastEventID = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6418
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6419
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6420
    this._lastEventID += 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6421
    return "e" + this._lastEventID;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6422
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6423
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6424
Timeline.EventUtils.decodeEventElID = function(elementID) {
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6425
    /*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6426
     *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6427
     * Use this function to decode an event element's id on a band (label div,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6428
     * tape div or icon img).
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6429
     *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6430
     * Returns {band: <bandObj>, evt: <eventObj>}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6431
     *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6432
     * To enable a single event listener to monitor everything
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6433
     * on a Timeline, a set format is used for the id's of the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6434
     * elements on the Timeline--
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6435
     *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6436
     * element id format for labels, icons, tapes:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6437
     *   labels: label-tl-<timelineID>-<band_index>-<evt.id>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6438
     *    icons: icon-tl-<timelineID>-<band_index>-<evt.id>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6439
     *    tapes: tape1-tl-<timelineID>-<band_index>-<evt.id>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6440
     *           tape2-tl-<timelineID>-<band_index>-<evt.id>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6441
     *           // some events have more than one tape
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6442
     *    highlight: highlight1-tl-<timelineID>-<band_index>-<evt.id>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6443
     *               highlight2-tl-<timelineID>-<band_index>-<evt.id>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6444
     *           // some events have more than one highlight div (future)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6445
     * Note: use split('-') to get array of the format's parts
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6446
     *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6447
     * You can then retrieve the timeline object and event object
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6448
     * by using Timeline.getTimeline, Timeline.getBand, or
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6449
     * Timeline.getEvent and passing in the element's id
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6450
     *
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6451
     *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6452
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6453
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6454
    var parts = elementID.split('-');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6455
    if (parts[1] != 'tl') {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6456
        alert("Internal Timeline problem 101, please consult support");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6457
        return {band: null, evt: null}; // early return
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6458
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6459
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6460
    var timeline = Timeline.getTimelineFromID(parts[2]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6461
    var band = timeline.getBand(parts[3]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6462
    var evt = band.getEventSource.getEvent(parts[4]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6463
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6464
    return {band: band, evt: evt};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6465
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6466
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6467
Timeline.EventUtils.encodeEventElID = function(timeline, band, elType, evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6468
    // elType should be one of {label | icon | tapeN | highlightN}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6469
    return elType + "-tl-" + timeline.timelineID +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6470
       "-" + band.getIndex() + "-" + evt.getID();
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6471
};/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6472
 *  Gregorian Date Labeller
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6473
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6474
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6475
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6476
Timeline.GregorianDateLabeller = function(locale, timeZone) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6477
    this._locale = locale;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6478
    this._timeZone = timeZone;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6479
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6480
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6481
Timeline.GregorianDateLabeller.monthNames = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6482
Timeline.GregorianDateLabeller.dayNames = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6483
Timeline.GregorianDateLabeller.labelIntervalFunctions = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6484
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6485
Timeline.GregorianDateLabeller.getMonthName = function(month, locale) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6486
    return Timeline.GregorianDateLabeller.monthNames[locale][month];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6487
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6488
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6489
Timeline.GregorianDateLabeller.prototype.labelInterval = function(date, intervalUnit) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6490
    var f = Timeline.GregorianDateLabeller.labelIntervalFunctions[this._locale];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6491
    if (f == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6492
        f = Timeline.GregorianDateLabeller.prototype.defaultLabelInterval;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6493
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6494
    return f.call(this, date, intervalUnit);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6495
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6496
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6497
Timeline.GregorianDateLabeller.prototype.labelPrecise = function(date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6498
    return SimileAjax.DateTime.removeTimeZoneOffset(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6499
        date,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6500
        this._timeZone //+ (new Date().getTimezoneOffset() / 60)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6501
    ).toUTCString();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6502
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6503
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6504
Timeline.GregorianDateLabeller.prototype.defaultLabelInterval = function(date, intervalUnit) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6505
    var text;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6506
    var emphasized = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6507
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6508
    date = SimileAjax.DateTime.removeTimeZoneOffset(date, this._timeZone);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6509
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6510
    switch(intervalUnit) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6511
    case SimileAjax.DateTime.MILLISECOND:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6512
        text = date.getUTCMilliseconds();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6513
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6514
    case SimileAjax.DateTime.SECOND:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6515
        text = date.getUTCSeconds();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6516
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6517
    case SimileAjax.DateTime.MINUTE:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6518
        var m = date.getUTCMinutes();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6519
        if (m == 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6520
            text = date.getUTCHours() + ":00";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6521
            emphasized = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6522
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6523
            text = m;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6524
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6525
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6526
    case SimileAjax.DateTime.HOUR:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6527
        text = date.getUTCHours() + "hr";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6528
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6529
    case SimileAjax.DateTime.DAY:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6530
        text = Timeline.GregorianDateLabeller.getMonthName(date.getUTCMonth(), this._locale) + " " + date.getUTCDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6531
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6532
    case SimileAjax.DateTime.WEEK:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6533
        text = Timeline.GregorianDateLabeller.getMonthName(date.getUTCMonth(), this._locale) + " " + date.getUTCDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6534
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6535
    case SimileAjax.DateTime.MONTH:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6536
        var m = date.getUTCMonth();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6537
        if (m != 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6538
            text = Timeline.GregorianDateLabeller.getMonthName(m, this._locale);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6539
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6540
        } // else, fall through
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6541
    case SimileAjax.DateTime.YEAR:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6542
    case SimileAjax.DateTime.DECADE:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6543
    case SimileAjax.DateTime.CENTURY:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6544
    case SimileAjax.DateTime.MILLENNIUM:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6545
        var y = date.getUTCFullYear();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6546
        if (y > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6547
            text = date.getUTCFullYear();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6548
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6549
            text = (1 - y) + "BC";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6550
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6551
        emphasized =
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6552
            (intervalUnit == SimileAjax.DateTime.MONTH) ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6553
            (intervalUnit == SimileAjax.DateTime.DECADE && y % 100 == 0) ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6554
            (intervalUnit == SimileAjax.DateTime.CENTURY && y % 1000 == 0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6555
        break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6556
    default:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6557
        text = date.toUTCString();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6558
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6559
    return { text: text, emphasized: emphasized };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6560
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6561
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6562
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6563
 *  Default Event Source
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  6564
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6565
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6566
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6567
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6568
Timeline.DefaultEventSource = function(eventIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6569
    this._events = (eventIndex instanceof Object) ? eventIndex : new SimileAjax.EventIndex();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6570
    this._listeners = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6571
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6572
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6573
Timeline.DefaultEventSource.prototype.addListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6574
    this._listeners.push(listener);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6575
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6576
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6577
Timeline.DefaultEventSource.prototype.removeListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6578
    for (var i = 0; i < this._listeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6579
        if (this._listeners[i] == listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6580
            this._listeners.splice(i, 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6581
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6582
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6583
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6584
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6585
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6586
Timeline.DefaultEventSource.prototype.loadXML = function(xml, url) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6587
    var base = this._getBaseURL(url);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6588
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6589
    var wikiURL = xml.documentElement.getAttribute("wiki-url");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6590
    var wikiSection = xml.documentElement.getAttribute("wiki-section");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6591
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6592
    var dateTimeFormat = xml.documentElement.getAttribute("date-time-format");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6593
    var parseDateTimeFunction = this._events.getUnit().getParser(dateTimeFormat);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6594
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6595
    var node = xml.documentElement.firstChild;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6596
    var added = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6597
    while (node != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6598
        if (node.nodeType == 1) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6599
            var description = "";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6600
            if (node.firstChild != null && node.firstChild.nodeType == 3) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6601
                description = node.firstChild.nodeValue;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6602
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6603
            // instant event: default is true. Or use values from isDuration or durationEvent
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6604
            var instant = (node.getAttribute("isDuration")    === null &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6605
                           node.getAttribute("durationEvent") === null) ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6606
                          node.getAttribute("isDuration") == "false" ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6607
                          node.getAttribute("durationEvent") == "false";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6608
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6609
            var evt = new Timeline.DefaultEventSource.Event( {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6610
                          id: node.getAttribute("id"),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6611
                       start: parseDateTimeFunction(node.getAttribute("start")),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6612
                         end: parseDateTimeFunction(node.getAttribute("end")),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6613
                 latestStart: parseDateTimeFunction(node.getAttribute("latestStart")),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6614
                 earliestEnd: parseDateTimeFunction(node.getAttribute("earliestEnd")),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6615
                     instant: instant,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6616
                        text: node.getAttribute("title"),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6617
                 description: description,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6618
                       image: this._resolveRelativeURL(node.getAttribute("image"), base),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6619
                        link: this._resolveRelativeURL(node.getAttribute("link") , base),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6620
                        icon: this._resolveRelativeURL(node.getAttribute("icon") , base),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6621
                       color: node.getAttribute("color"),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6622
                   textColor: node.getAttribute("textColor"),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6623
                   hoverText: node.getAttribute("hoverText"),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6624
                   classname: node.getAttribute("classname"),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6625
                   tapeImage: node.getAttribute("tapeImage"),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6626
                  tapeRepeat: node.getAttribute("tapeRepeat"),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6627
                     caption: node.getAttribute("caption"),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6628
                     eventID: node.getAttribute("eventID"),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6629
                    trackNum: node.getAttribute("trackNum")
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6630
            });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6631
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6632
            evt._node = node;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6633
            evt.getProperty = function(name) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6634
                return this._node.getAttribute(name);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6635
            };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6636
            evt.setWikiInfo(wikiURL, wikiSection);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6637
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6638
            this._events.add(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6639
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6640
            added = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6641
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6642
        node = node.nextSibling;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6643
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6644
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6645
    if (added) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6646
        this._fire("onAddMany", []);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6647
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6648
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6649
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6650
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6651
Timeline.DefaultEventSource.prototype.loadJSON = function(data, url) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6652
    var base = this._getBaseURL(url);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6653
    var added = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6654
    if (data && data.events){
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6655
        var wikiURL = ("wikiURL" in data) ? data.wikiURL : null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6656
        var wikiSection = ("wikiSection" in data) ? data.wikiSection : null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6657
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6658
        var dateTimeFormat = ("dateTimeFormat" in data) ? data.dateTimeFormat : null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6659
        var parseDateTimeFunction = this._events.getUnit().getParser(dateTimeFormat);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6660
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6661
        for (var i=0; i < data.events.length; i++){
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6662
            var event = data.events[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6663
            // Fixing issue 33:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6664
            // instant event: default (for JSON only) is false. Or use values from isDuration or durationEvent
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6665
            // isDuration was negated (see issue 33, so keep that interpretation
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6666
            var instant = event.isDuration || (event.durationEvent != null && !event.durationEvent);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6667
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6668
            var evt = new Timeline.DefaultEventSource.Event({
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6669
                          id: ("id" in event) ? event.id : undefined,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6670
                       start: parseDateTimeFunction(event.start),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6671
                         end: parseDateTimeFunction(event.end),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6672
                 latestStart: parseDateTimeFunction(event.latestStart),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6673
                 earliestEnd: parseDateTimeFunction(event.earliestEnd),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6674
                     instant: instant,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6675
                        text: event.title,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6676
                 description: event.description,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6677
                       image: this._resolveRelativeURL(event.image, base),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6678
                        link: this._resolveRelativeURL(event.link , base),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6679
                        icon: this._resolveRelativeURL(event.icon , base),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6680
                       color: event.color,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6681
                   textColor: event.textColor,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6682
                   hoverText: event.hoverText,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6683
                   classname: event.classname,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6684
                   tapeImage: event.tapeImage,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6685
                  tapeRepeat: event.tapeRepeat,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6686
                     caption: event.caption,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6687
                     eventID: event.eventID,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6688
                    trackNum: event.trackNum
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6689
            });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6690
            evt._obj = event;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6691
            evt.getProperty = function(name) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6692
                return this._obj[name];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6693
            };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6694
            evt.setWikiInfo(wikiURL, wikiSection);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6695
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6696
            this._events.add(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6697
            added = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6698
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6699
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6700
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6701
    if (added) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6702
        this._fire("onAddMany", []);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6703
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6704
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6705
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6706
/*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6707
 *  Contributed by Morten Frederiksen, http://www.wasab.dk/morten/
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6708
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6709
Timeline.DefaultEventSource.prototype.loadSPARQL = function(xml, url) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6710
    var base = this._getBaseURL(url);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6711
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6712
    var dateTimeFormat = 'iso8601';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6713
    var parseDateTimeFunction = this._events.getUnit().getParser(dateTimeFormat);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6714
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6715
    if (xml == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6716
        return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6717
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6718
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6719
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6720
     *  Find <results> tag
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6721
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6722
    var node = xml.documentElement.firstChild;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6723
    while (node != null && (node.nodeType != 1 || node.nodeName != 'results')) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6724
        node = node.nextSibling;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6725
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6726
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6727
    var wikiURL = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6728
    var wikiSection = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6729
    if (node != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6730
        wikiURL = node.getAttribute("wiki-url");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6731
        wikiSection = node.getAttribute("wiki-section");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6732
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6733
        node = node.firstChild;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6734
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6735
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6736
    var added = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6737
    while (node != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6738
        if (node.nodeType == 1) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6739
            var bindings = { };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6740
            var binding = node.firstChild;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6741
            while (binding != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6742
                if (binding.nodeType == 1 &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6743
                    binding.firstChild != null &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6744
                    binding.firstChild.nodeType == 1 &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6745
                    binding.firstChild.firstChild != null &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6746
                    binding.firstChild.firstChild.nodeType == 3) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6747
                    bindings[binding.getAttribute('name')] = binding.firstChild.firstChild.nodeValue;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6748
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6749
                binding = binding.nextSibling;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6750
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6751
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6752
            if (bindings["start"] == null && bindings["date"] != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6753
                bindings["start"] = bindings["date"];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6754
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6755
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6756
            // instant event: default is true. Or use values from isDuration or durationEvent
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6757
            var instant = (bindings["isDuration"]    === null &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6758
                           bindings["durationEvent"] === null) ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6759
                          bindings["isDuration"] == "false" ||
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6760
                          bindings["durationEvent"] == "false";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6761
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6762
            var evt = new Timeline.DefaultEventSource.Event({
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6763
                          id: bindings["id"],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6764
                       start: parseDateTimeFunction(bindings["start"]),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6765
                         end: parseDateTimeFunction(bindings["end"]),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6766
                 latestStart: parseDateTimeFunction(bindings["latestStart"]),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6767
                 earliestEnd: parseDateTimeFunction(bindings["earliestEnd"]),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6768
                     instant: instant, // instant
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6769
                        text: bindings["title"], // text
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6770
                 description: bindings["description"],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6771
                       image: this._resolveRelativeURL(bindings["image"], base),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6772
                        link: this._resolveRelativeURL(bindings["link"] , base),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6773
                        icon: this._resolveRelativeURL(bindings["icon"] , base),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6774
                       color: bindings["color"],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6775
                   textColor: bindings["textColor"],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6776
                   hoverText: bindings["hoverText"],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6777
                     caption: bindings["caption"],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6778
                   classname: bindings["classname"],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6779
                   tapeImage: bindings["tapeImage"],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6780
                  tapeRepeat: bindings["tapeRepeat"],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6781
                     eventID: bindings["eventID"],
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6782
                    trackNum: bindings["trackNum"]
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6783
            });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6784
            evt._bindings = bindings;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6785
            evt.getProperty = function(name) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6786
                return this._bindings[name];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6787
            };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6788
            evt.setWikiInfo(wikiURL, wikiSection);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6789
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6790
            this._events.add(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6791
            added = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6792
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6793
        node = node.nextSibling;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6794
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6795
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6796
    if (added) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6797
        this._fire("onAddMany", []);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6798
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6799
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6800
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6801
Timeline.DefaultEventSource.prototype.add = function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6802
    this._events.add(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6803
    this._fire("onAddOne", [evt]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6804
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6805
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6806
Timeline.DefaultEventSource.prototype.addMany = function(events) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6807
    for (var i = 0; i < events.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6808
        this._events.add(events[i]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6809
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6810
    this._fire("onAddMany", []);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6811
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6812
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6813
Timeline.DefaultEventSource.prototype.clear = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6814
    this._events.removeAll();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6815
    this._fire("onClear", []);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6816
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6817
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6818
Timeline.DefaultEventSource.prototype.getEvent = function(id) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6819
    return this._events.getEvent(id);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6820
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6821
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6822
Timeline.DefaultEventSource.prototype.getEventIterator = function(startDate, endDate) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6823
    return this._events.getIterator(startDate, endDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6824
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6825
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6826
Timeline.DefaultEventSource.prototype.getEventReverseIterator = function(startDate, endDate) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6827
    return this._events.getReverseIterator(startDate, endDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6828
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6829
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6830
Timeline.DefaultEventSource.prototype.getAllEventIterator = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6831
    return this._events.getAllIterator();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6832
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6833
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6834
Timeline.DefaultEventSource.prototype.getCount = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6835
    return this._events.getCount();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6836
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6837
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6838
Timeline.DefaultEventSource.prototype.getEarliestDate = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6839
    return this._events.getEarliestDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6840
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6841
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6842
Timeline.DefaultEventSource.prototype.getLatestDate = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6843
    return this._events.getLatestDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6844
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6845
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6846
Timeline.DefaultEventSource.prototype._fire = function(handlerName, args) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6847
    for (var i = 0; i < this._listeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6848
        var listener = this._listeners[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6849
        if (handlerName in listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6850
            try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6851
                listener[handlerName].apply(listener, args);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6852
            } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6853
                SimileAjax.Debug.exception(e);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6854
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6855
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6856
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6857
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6858
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6859
Timeline.DefaultEventSource.prototype._getBaseURL = function(url) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6860
    if (url.indexOf("://") < 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6861
        var url2 = this._getBaseURL(document.location.href);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6862
        if (url.substr(0,1) == "/") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6863
            url = url2.substr(0, url2.indexOf("/", url2.indexOf("://") + 3)) + url;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6864
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6865
            url = url2 + url;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6866
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6867
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6868
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6869
    var i = url.lastIndexOf("/");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6870
    if (i < 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6871
        return "";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6872
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6873
        return url.substr(0, i+1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6874
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6875
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6876
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6877
Timeline.DefaultEventSource.prototype._resolveRelativeURL = function(url, base) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6878
    if (url == null || url == "") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6879
        return url;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6880
    } else if (url.indexOf("://") > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6881
        return url;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6882
    } else if (url.substr(0,1) == "/") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6883
        return base.substr(0, base.indexOf("/", base.indexOf("://") + 3)) + url;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6884
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6885
        return base + url;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6886
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6887
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6888
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6889
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6890
Timeline.DefaultEventSource.Event = function(args) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6891
  //
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6892
  // Attention developers!
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6893
  // If you add a new event attribute, please be sure to add it to
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6894
  // all three load functions: loadXML, loadSPARCL, loadJSON.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6895
  // Thanks!
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6896
  //
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6897
  // args is a hash/object. It supports the following keys. Most are optional
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6898
  //   id            -- an internal id. Really shouldn't be used by events.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6899
  //                    Timeline library clients should use eventID
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6900
  //   eventID       -- For use by library client when writing custom painters or
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6901
  //                    custom fillInfoBubble
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6902
  //   start
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6903
  //   end
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6904
  //   latestStart
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6905
  //   earliestEnd
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6906
  //   instant      -- boolean. Controls precise/non-precise logic & duration/instant issues
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6907
  //   text         -- event source attribute 'title' -- used as the label on Timelines and in bubbles.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6908
  //   description  -- used in bubbles
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6909
  //   image        -- used in bubbles
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6910
  //   link         -- used in bubbles
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6911
  //   icon         -- on the Timeline
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6912
  //   color        -- Timeline label and tape color
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6913
  //   textColor    -- Timeline label color, overrides color attribute
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6914
  //   hoverText    -- deprecated, here for backwards compatibility.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6915
  //                   Superceeded by caption
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6916
  //   caption      -- tooltip-like caption on the Timeline. Uses HTML title attribute
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6917
  //   classname    -- used to set classname in Timeline. Enables better CSS selector rules
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6918
  //   tapeImage    -- background image of the duration event's tape div on the Timeline
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6919
  //   tapeRepeat   -- repeat attribute for tapeImage. {repeat | repeat-x | repeat-y }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6920
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6921
  function cleanArg(arg) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6922
      // clean up an arg
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6923
      return (args[arg] != null && args[arg] != "") ? args[arg] : null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6924
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6925
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6926
  var id = args.id ? args.id.trim() : "";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6927
  this._id = id.length > 0 ? id : Timeline.EventUtils.getNewEventID();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6928
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6929
  this._instant = args.instant || (args.end == null);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6930
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6931
  this._start = args.start;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6932
  this._end = (args.end != null) ? args.end : args.start;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6933
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6934
  this._latestStart = (args.latestStart != null) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6935
                       args.latestStart : (args.instant ? this._end : this._start);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6936
  this._earliestEnd = (args.earliestEnd != null) ? args.earliestEnd : this._end;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6937
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6938
  // check sanity of dates since incorrect dates will later cause calculation errors
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6939
  // when painting
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6940
  var err=[];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6941
  if (this._start > this._latestStart) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6942
          this._latestStart = this._start;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6943
          err.push("start is > latestStart");}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6944
  if (this._start > this._earliestEnd) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6945
          this._earliestEnd = this._latestStart;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6946
          err.push("start is > earliestEnd");}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6947
  if (this._start > this._end) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6948
          this._end = this._earliestEnd;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6949
          err.push("start is > end");}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6950
  if (this._latestStart > this._earliestEnd) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6951
          this._earliestEnd = this._latestStart;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6952
          err.push("latestStart is > earliestEnd");}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6953
  if (this._latestStart > this._end) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6954
          this._end = this._earliestEnd;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6955
          err.push("latestStart is > end");}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6956
  if (this._earliestEnd > this._end) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6957
          this._end = this._earliestEnd;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6958
          err.push("earliestEnd is > end");}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6959
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6960
  this._eventID = cleanArg('eventID');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6961
  this._text = (args.text != null) ? SimileAjax.HTML.deEntify(args.text) : ""; // Change blank titles to ""
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6962
  if (err.length > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6963
          this._text += " PROBLEM: " + err.join(", ");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6964
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6965
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6966
  this._description = SimileAjax.HTML.deEntify(args.description);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6967
  this._image = cleanArg('image');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6968
  this._link =  cleanArg('link');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6969
  this._title = cleanArg('hoverText');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6970
  this._title = cleanArg('caption');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6971
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6972
  this._icon = cleanArg('icon');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6973
  this._color = cleanArg('color');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6974
  this._textColor = cleanArg('textColor');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6975
  this._classname = cleanArg('classname');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6976
  this._tapeImage = cleanArg('tapeImage');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6977
  this._tapeRepeat = cleanArg('tapeRepeat');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6978
  this._trackNum = cleanArg('trackNum');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6979
  if (this._trackNum != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6980
      this._trackNum = parseInt(this._trackNum);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6981
  }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6982
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6983
  this._wikiURL = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6984
  this._wikiSection = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6985
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6986
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6987
Timeline.DefaultEventSource.Event.prototype = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6988
    getID:          function() { return this._id; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6989
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6990
    isInstant:      function() { return this._instant; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6991
    isImprecise:    function() { return this._start != this._latestStart || this._end != this._earliestEnd; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6992
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6993
    getStart:       function() { return this._start; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6994
    getEnd:         function() { return this._end; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6995
    getLatestStart: function() { return this._latestStart; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6996
    getEarliestEnd: function() { return this._earliestEnd; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6997
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6998
    getEventID:     function() { return this._eventID; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  6999
    getText:        function() { return this._text; }, // title
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7000
    getDescription: function() { return this._description; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7001
    getImage:       function() { return this._image; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7002
    getLink:        function() { return this._link; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7003
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7004
    getIcon:        function() { return this._icon; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7005
    getColor:       function() { return this._color; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7006
    getTextColor:   function() { return this._textColor; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7007
    getClassName:   function() { return this._classname; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7008
    getTapeImage:   function() { return this._tapeImage; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7009
    getTapeRepeat:  function() { return this._tapeRepeat; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7010
    getTrackNum:    function() { return this._trackNum; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7011
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7012
    getProperty:    function(name) { return null; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7013
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7014
    getWikiURL:     function() { return this._wikiURL; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7015
    getWikiSection: function() { return this._wikiSection; },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7016
    setWikiInfo: function(wikiURL, wikiSection) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7017
        this._wikiURL = wikiURL;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7018
        this._wikiSection = wikiSection;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7019
    },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7020
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7021
    fillDescription: function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7022
        elmt.innerHTML = this._description;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7023
    },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7024
    fillWikiInfo: function(elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7025
        // Many bubbles will not support a wiki link.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7026
        //
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7027
        // Strategy: assume no wiki link. If we do have
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7028
        // enough parameters for one, then create it.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7029
        elmt.style.display = "none"; // default
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7030
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7031
        if (this._wikiURL == null || this._wikiSection == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7032
          return; // EARLY RETURN
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7033
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7034
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7035
        // create the wikiID from the property or from the event text (the title)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7036
        var wikiID = this.getProperty("wikiID");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7037
        if (wikiID == null || wikiID.length == 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7038
            wikiID = this.getText(); // use the title as the backup wiki id
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7039
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7040
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7041
        if (wikiID == null || wikiID.length == 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7042
          return; // No wikiID. Thus EARLY RETURN
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7043
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7044
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7045
        // ready to go...
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7046
        elmt.style.display = "inline";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7047
        wikiID = wikiID.replace(/\s/g, "_");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7048
        var url = this._wikiURL + this._wikiSection.replace(/\s/g, "_") + "/" + wikiID;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7049
        var a = document.createElement("a");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7050
        a.href = url;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7051
        a.target = "new";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7052
        a.innerHTML = Timeline.strings[Timeline.clientLocale].wikiLinkLabel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7053
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7054
        elmt.appendChild(document.createTextNode("["));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7055
        elmt.appendChild(a);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7056
        elmt.appendChild(document.createTextNode("]"));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7057
    },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7058
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7059
    fillTime: function(elmt, labeller) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7060
        if (this._instant) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7061
            if (this.isImprecise()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7062
                elmt.appendChild(elmt.ownerDocument.createTextNode(labeller.labelPrecise(this._start)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7063
                elmt.appendChild(elmt.ownerDocument.createElement("br"));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7064
                elmt.appendChild(elmt.ownerDocument.createTextNode(labeller.labelPrecise(this._end)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7065
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7066
                elmt.appendChild(elmt.ownerDocument.createTextNode(labeller.labelPrecise(this._start)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7067
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7068
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7069
            if (this.isImprecise()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7070
                elmt.appendChild(elmt.ownerDocument.createTextNode(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7071
                    labeller.labelPrecise(this._start) + " ~ " + labeller.labelPrecise(this._latestStart)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7072
                elmt.appendChild(elmt.ownerDocument.createElement("br"));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7073
                elmt.appendChild(elmt.ownerDocument.createTextNode(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7074
                    labeller.labelPrecise(this._earliestEnd) + " ~ " + labeller.labelPrecise(this._end)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7075
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7076
                elmt.appendChild(elmt.ownerDocument.createTextNode(labeller.labelPrecise(this._start)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7077
                elmt.appendChild(elmt.ownerDocument.createElement("br"));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7078
                elmt.appendChild(elmt.ownerDocument.createTextNode(labeller.labelPrecise(this._end)));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7079
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7080
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7081
    },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7082
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7083
    fillInfoBubble: function(elmt, theme, labeller) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7084
        var doc = elmt.ownerDocument;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7085
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7086
        var title = this.getText();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7087
        var link = this.getLink();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7088
        var image = this.getImage();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7089
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7090
        if (image != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7091
            var img = doc.createElement("img");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7092
            img.src = image;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7093
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7094
            theme.event.bubble.imageStyler(img);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7095
            elmt.appendChild(img);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7096
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7097
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7098
        var divTitle = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7099
        var textTitle = doc.createTextNode(title);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7100
        if (link != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7101
            var a = doc.createElement("a");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7102
            a.href = link;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7103
            a.appendChild(textTitle);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7104
            divTitle.appendChild(a);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7105
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7106
            divTitle.appendChild(textTitle);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7107
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7108
        theme.event.bubble.titleStyler(divTitle);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7109
        elmt.appendChild(divTitle);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7110
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7111
        var divBody = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7112
        this.fillDescription(divBody);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7113
        theme.event.bubble.bodyStyler(divBody);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7114
        elmt.appendChild(divBody);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7115
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7116
        var divTime = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7117
        this.fillTime(divTime, labeller);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7118
        theme.event.bubble.timeStyler(divTime);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7119
        elmt.appendChild(divTime);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7120
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7121
        var divWiki = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7122
        this.fillWikiInfo(divWiki);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7123
        theme.event.bubble.wikiStyler(divWiki);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7124
        elmt.appendChild(divWiki);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7125
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7126
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7127
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7128
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  7129
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7130
 *  Original Event Painter
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  7131
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7132
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7133
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  7134
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7135
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7136
 * To enable a single event listener to monitor everything
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7137
 * on a Timeline, we need a way to map from an event's icon,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7138
 * label or tape element to the associated timeline, band and
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7139
 * specific event.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7140
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7141
 * Thus a set format is used for the id's of the
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7142
 * events' elements on the Timeline--
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7143
 *
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7144
 * element id format for labels, icons, tapes:
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7145
 *   labels: label-tl-<timelineID>-<band_index>-<evt.id>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7146
 *    icons: icon-tl-<timelineID>-<band_index>-<evt.id>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7147
 *    tapes: tape1-tl-<timelineID>-<band_index>-<evt.id>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7148
 *           tape2-tl-<timelineID>-<band_index>-<evt.id>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7149
 *           // some events have more than one tape
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7150
 *    highlight: highlight1-tl-<timelineID>-<band_index>-<evt.id>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7151
 *               highlight2-tl-<timelineID>-<band_index>-<evt.id>
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7152
 *           // some events have more than one highlight div (future)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7153
 * You can then retrieve the band/timeline objects and event object
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7154
 * by using Timeline.EventUtils.decodeEventElID
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7155
 *
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  7156
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7157
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7158
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7159
/*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7160
 *    eventPaintListener functions receive calls about painting.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7161
 *    function(band, op, evt, els)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7162
 *       context: 'this' will be an OriginalEventPainter object.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7163
 *                It has properties and methods for obtaining
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7164
 *                the relevant band, timeline, etc
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7165
 *       band = the band being painted
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7166
 *       op = 'paintStarting' // the painter is about to remove
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7167
 *            all previously painted events, if any. It will
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7168
 *            then start painting all of the visible events that
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7169
 *            pass the filter.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7170
 *            evt = null, els = null
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7171
 *       op = 'paintEnded' // the painter has finished painting
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7172
 *            all of the visible events that passed the filter
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7173
 *            evt = null, els = null
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7174
 *       op = 'paintedEvent' // the painter just finished painting an event
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7175
 *            evt = event just painted
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7176
 *            els = array of painted elements' divs. Depending on the event,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7177
 *                  the array could be just a tape or icon (if no label).
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7178
 *                  Or could include label, multiple tape divs (imprecise event),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7179
 *                  highlight divs. The array is not ordered. The meaning of
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7180
 *                  each el is available by decoding the el's id
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7181
 *      Note that there may be no paintedEvent calls if no events were visible
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7182
 *      or passed the filter.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7183
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7184
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7185
Timeline.OriginalEventPainter = function(params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7186
    this._params = params;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7187
    this._onSelectListeners = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7188
    this._eventPaintListeners = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7189
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7190
    this._filterMatcher = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7191
    this._highlightMatcher = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7192
    this._frc = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7193
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7194
    this._eventIdToElmt = {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7195
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7196
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7197
Timeline.OriginalEventPainter.prototype.initialize = function(band, timeline) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7198
    this._band = band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7199
    this._timeline = timeline;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7200
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7201
    this._backLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7202
    this._eventLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7203
    this._lineLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7204
    this._highlightLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7205
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7206
    this._eventIdToElmt = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7207
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7208
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7209
Timeline.OriginalEventPainter.prototype.getType = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7210
    return 'original';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7211
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7212
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7213
Timeline.OriginalEventPainter.prototype.addOnSelectListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7214
    this._onSelectListeners.push(listener);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7215
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7216
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7217
Timeline.OriginalEventPainter.prototype.removeOnSelectListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7218
    for (var i = 0; i < this._onSelectListeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7219
        if (this._onSelectListeners[i] == listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7220
            this._onSelectListeners.splice(i, 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7221
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7222
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7223
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7224
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7225
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7226
Timeline.OriginalEventPainter.prototype.addEventPaintListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7227
    this._eventPaintListeners.push(listener);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7228
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7229
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7230
Timeline.OriginalEventPainter.prototype.removeEventPaintListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7231
    for (var i = 0; i < this._eventPaintListeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7232
        if (this._eventPaintListeners[i] == listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7233
            this._eventPaintListeners.splice(i, 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7234
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7235
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7236
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7237
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7238
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7239
Timeline.OriginalEventPainter.prototype.getFilterMatcher = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7240
    return this._filterMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7241
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7242
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7243
Timeline.OriginalEventPainter.prototype.setFilterMatcher = function(filterMatcher) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7244
    this._filterMatcher = filterMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7245
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7246
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7247
Timeline.OriginalEventPainter.prototype.getHighlightMatcher = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7248
    return this._highlightMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7249
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7250
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7251
Timeline.OriginalEventPainter.prototype.setHighlightMatcher = function(highlightMatcher) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7252
    this._highlightMatcher = highlightMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7253
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7254
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7255
Timeline.OriginalEventPainter.prototype.paint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7256
    // Paints the events for a given section of the band--what is
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7257
    // visible on screen and some extra.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7258
    var eventSource = this._band.getEventSource();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7259
    if (eventSource == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7260
        return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7261
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7262
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7263
    this._eventIdToElmt = {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7264
    this._fireEventPaintListeners('paintStarting', null, null);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7265
    this._prepareForPainting();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7266
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7267
    var metrics = this._computeMetrics();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7268
    var minDate = this._band.getMinDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7269
    var maxDate = this._band.getMaxDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7270
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7271
    var filterMatcher = (this._filterMatcher != null) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7272
        this._filterMatcher :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7273
        function(evt) { return true; };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7274
    var highlightMatcher = (this._highlightMatcher != null) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7275
        this._highlightMatcher :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7276
        function(evt) { return -1; };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7277
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7278
    var iterator = eventSource.getEventReverseIterator(minDate, maxDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7279
    while (iterator.hasNext()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7280
        var evt = iterator.next();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7281
        if (filterMatcher(evt)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7282
            this.paintEvent(evt, metrics, this._params.theme, highlightMatcher(evt));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7283
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7284
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7285
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7286
    this._highlightLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7287
    this._lineLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7288
    this._eventLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7289
    // update the band object for max number of tracks in this section of the ether
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7290
    this._band.updateEventTrackInfo(this._tracks.length, metrics.trackIncrement);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7291
    this._fireEventPaintListeners('paintEnded', null, null);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7292
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7293
    this._setOrthogonalOffset(metrics);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7294
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7295
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7296
Timeline.OriginalEventPainter.prototype.softPaint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7297
    this._setOrthogonalOffset(this._computeMetrics());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7298
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7299
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7300
Timeline.OriginalEventPainter.prototype._setOrthogonalOffset = function(metrics) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7301
    var actualViewWidth = 2 * metrics.trackOffset + this._tracks.length * metrics.trackIncrement;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7302
    var minOrthogonalOffset = Math.min(0, this._band.getViewWidth() - actualViewWidth);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7303
    var orthogonalOffset = Math.max(minOrthogonalOffset, this._band.getViewOrthogonalOffset());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7304
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7305
    this._highlightLayer.style.top =
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7306
        this._lineLayer.style.top =
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7307
            this._eventLayer.style.top =
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7308
                orthogonalOffset + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7309
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7310
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7311
Timeline.OriginalEventPainter.prototype._computeMetrics = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7312
     var eventTheme = this._params.theme.event;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7313
     var trackHeight = Math.max(eventTheme.track.height, eventTheme.tape.height +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7314
                         this._frc.getLineHeight());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7315
     var metrics = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7316
            trackOffset: eventTheme.track.offset,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7317
            trackHeight: trackHeight,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7318
               trackGap: eventTheme.track.gap,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7319
         trackIncrement: trackHeight + eventTheme.track.gap,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7320
                   icon: eventTheme.instant.icon,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7321
              iconWidth: eventTheme.instant.iconWidth,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7322
             iconHeight: eventTheme.instant.iconHeight,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7323
             labelWidth: eventTheme.label.width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7324
           maxLabelChar: eventTheme.label.maxLabelChar,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7325
    impreciseIconMargin: eventTheme.instant.impreciseIconMargin
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7326
     };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7327
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7328
     return metrics;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7329
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7330
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7331
Timeline.OriginalEventPainter.prototype._prepareForPainting = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7332
    // Remove everything previously painted: highlight, line and event layers.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7333
    // Prepare blank layers for painting.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7334
    var band = this._band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7335
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7336
    if (this._backLayer == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7337
        this._backLayer = this._band.createLayerDiv(0, "timeline-band-events");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7338
        this._backLayer.style.visibility = "hidden";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7339
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7340
        var eventLabelPrototype = document.createElement("span");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7341
        eventLabelPrototype.className = "timeline-event-label";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7342
        this._backLayer.appendChild(eventLabelPrototype);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7343
        this._frc = SimileAjax.Graphics.getFontRenderingContext(eventLabelPrototype);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7344
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7345
    this._frc.update();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7346
    this._tracks = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7347
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7348
    if (this._highlightLayer != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7349
        band.removeLayerDiv(this._highlightLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7350
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7351
    this._highlightLayer = band.createLayerDiv(105, "timeline-band-highlights");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7352
    this._highlightLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7353
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7354
    if (this._lineLayer != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7355
        band.removeLayerDiv(this._lineLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7356
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7357
    this._lineLayer = band.createLayerDiv(110, "timeline-band-lines");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7358
    this._lineLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7359
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7360
    if (this._eventLayer != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7361
        band.removeLayerDiv(this._eventLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7362
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7363
    this._eventLayer = band.createLayerDiv(115, "timeline-band-events");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7364
    this._eventLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7365
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7366
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7367
Timeline.OriginalEventPainter.prototype.paintEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7368
    if (evt.isInstant()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7369
        this.paintInstantEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7370
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7371
        this.paintDurationEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7372
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7373
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7374
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7375
Timeline.OriginalEventPainter.prototype.paintInstantEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7376
    if (evt.isImprecise()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7377
        this.paintImpreciseInstantEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7378
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7379
        this.paintPreciseInstantEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7380
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7381
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7382
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7383
Timeline.OriginalEventPainter.prototype.paintDurationEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7384
    if (evt.isImprecise()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7385
        this.paintImpreciseDurationEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7386
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7387
        this.paintPreciseDurationEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7388
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7389
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7390
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7391
Timeline.OriginalEventPainter.prototype.paintPreciseInstantEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7392
    var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7393
    var text = evt.getText();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7394
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7395
    var startDate = evt.getStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7396
    var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7397
    var iconRightEdge = Math.round(startPixel + metrics.iconWidth / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7398
    var iconLeftEdge = Math.round(startPixel - metrics.iconWidth / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7399
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7400
    var labelDivClassName = this._getLabelDivClassName(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7401
    var labelSize = this._frc.computeSize(text, labelDivClassName);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7402
    var labelLeft = iconRightEdge + theme.event.label.offsetFromLine;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7403
    var labelRight = labelLeft + labelSize.width;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7404
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7405
    var rightEdge = labelRight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7406
    var track = this._findFreeTrack(evt, rightEdge);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7407
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7408
    var labelTop = Math.round(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7409
        metrics.trackOffset + track * metrics.trackIncrement +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7410
        metrics.trackHeight / 2 - labelSize.height / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7411
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7412
    var iconElmtData = this._paintEventIcon(evt, track, iconLeftEdge, metrics, theme, 0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7413
    var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7414
        labelSize.height, theme, labelDivClassName, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7415
    var els = [iconElmtData.elmt, labelElmtData.elmt];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7416
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7417
    var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7418
    var clickHandler = function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7419
        return self._onClickInstantEvent(iconElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7420
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7421
    SimileAjax.DOM.registerEvent(iconElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7422
    SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7423
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7424
    var hDiv = this._createHighlightDiv(highlightIndex, iconElmtData, theme, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7425
    if (hDiv != null) {els.push(hDiv);}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7426
    this._fireEventPaintListeners('paintedEvent', evt, els);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7427
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7428
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7429
    this._eventIdToElmt[evt.getID()] = iconElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7430
    this._tracks[track] = iconLeftEdge;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7431
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7432
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7433
Timeline.OriginalEventPainter.prototype.paintImpreciseInstantEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7434
    var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7435
    var text = evt.getText();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7436
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7437
    var startDate = evt.getStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7438
    var endDate = evt.getEnd();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7439
    var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7440
    var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7441
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7442
    var iconRightEdge = Math.round(startPixel + metrics.iconWidth / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7443
    var iconLeftEdge = Math.round(startPixel - metrics.iconWidth / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7444
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7445
    var labelDivClassName = this._getLabelDivClassName(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7446
    var labelSize = this._frc.computeSize(text, labelDivClassName);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7447
    var labelLeft = iconRightEdge + theme.event.label.offsetFromLine;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7448
    var labelRight = labelLeft + labelSize.width;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7449
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7450
    var rightEdge = Math.max(labelRight, endPixel);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7451
    var track = this._findFreeTrack(evt, rightEdge);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7452
    var tapeHeight = theme.event.tape.height;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7453
    var labelTop = Math.round(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7454
        metrics.trackOffset + track * metrics.trackIncrement + tapeHeight);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7455
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7456
    var iconElmtData = this._paintEventIcon(evt, track, iconLeftEdge, metrics, theme, tapeHeight);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7457
    var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7458
                        labelSize.height, theme, labelDivClassName, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7459
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7460
    var color = evt.getColor();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7461
    color = color != null ? color : theme.event.instant.impreciseColor;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7462
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7463
    var tapeElmtData = this._paintEventTape(evt, track, startPixel, endPixel,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7464
        color, theme.event.instant.impreciseOpacity, metrics, theme, 0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7465
    var els = [iconElmtData.elmt, labelElmtData.elmt, tapeElmtData.elmt];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7466
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7467
    var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7468
    var clickHandler = function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7469
        return self._onClickInstantEvent(iconElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7470
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7471
    SimileAjax.DOM.registerEvent(iconElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7472
    SimileAjax.DOM.registerEvent(tapeElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7473
    SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7474
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7475
    var hDiv = this._createHighlightDiv(highlightIndex, iconElmtData, theme, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7476
    if (hDiv != null) {els.push(hDiv);}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7477
    this._fireEventPaintListeners('paintedEvent', evt, els);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7478
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7479
    this._eventIdToElmt[evt.getID()] = iconElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7480
    this._tracks[track] = iconLeftEdge;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7481
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7482
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7483
Timeline.OriginalEventPainter.prototype.paintPreciseDurationEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7484
    var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7485
    var text = evt.getText();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7486
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7487
    var startDate = evt.getStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7488
    var endDate = evt.getEnd();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7489
    var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7490
    var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7491
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7492
    var labelDivClassName = this._getLabelDivClassName(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7493
    var labelSize = this._frc.computeSize(text, labelDivClassName);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7494
    var labelLeft = startPixel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7495
    var labelRight = labelLeft + labelSize.width;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7496
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7497
    var rightEdge = Math.max(labelRight, endPixel);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7498
    var track = this._findFreeTrack(evt, rightEdge);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7499
    var labelTop = Math.round(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7500
        metrics.trackOffset + track * metrics.trackIncrement + theme.event.tape.height);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7501
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7502
    var color = evt.getColor();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7503
    color = color != null ? color : theme.event.duration.color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7504
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7505
    var tapeElmtData = this._paintEventTape(evt, track, startPixel, endPixel, color, 100, metrics, theme, 0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7506
    var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7507
      labelSize.height, theme, labelDivClassName, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7508
    var els = [tapeElmtData.elmt, labelElmtData.elmt];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7509
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7510
    var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7511
    var clickHandler = function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7512
        return self._onClickDurationEvent(tapeElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7513
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7514
    SimileAjax.DOM.registerEvent(tapeElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7515
    SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7516
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7517
    var hDiv = this._createHighlightDiv(highlightIndex, tapeElmtData, theme, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7518
    if (hDiv != null) {els.push(hDiv);}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7519
    this._fireEventPaintListeners('paintedEvent', evt, els);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7520
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7521
    this._eventIdToElmt[evt.getID()] = tapeElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7522
    this._tracks[track] = startPixel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7523
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7524
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7525
Timeline.OriginalEventPainter.prototype.paintImpreciseDurationEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7526
    var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7527
    var text = evt.getText();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7528
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7529
    var startDate = evt.getStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7530
    var latestStartDate = evt.getLatestStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7531
    var endDate = evt.getEnd();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7532
    var earliestEndDate = evt.getEarliestEnd();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7533
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7534
    var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7535
    var latestStartPixel = Math.round(this._band.dateToPixelOffset(latestStartDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7536
    var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7537
    var earliestEndPixel = Math.round(this._band.dateToPixelOffset(earliestEndDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7538
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7539
    var labelDivClassName = this._getLabelDivClassName(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7540
    var labelSize = this._frc.computeSize(text, labelDivClassName);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7541
    var labelLeft = latestStartPixel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7542
    var labelRight = labelLeft + labelSize.width;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7543
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7544
    var rightEdge = Math.max(labelRight, endPixel);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7545
    var track = this._findFreeTrack(evt, rightEdge);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7546
    var labelTop = Math.round(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7547
        metrics.trackOffset + track * metrics.trackIncrement + theme.event.tape.height);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7548
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7549
    var color = evt.getColor();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7550
    color = color != null ? color : theme.event.duration.color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7551
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7552
    // Imprecise events can have two event tapes
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7553
    // The imprecise dates tape, uses opacity to be dimmer than precise dates
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7554
    var impreciseTapeElmtData = this._paintEventTape(evt, track, startPixel, endPixel,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7555
        theme.event.duration.impreciseColor,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7556
        theme.event.duration.impreciseOpacity, metrics, theme, 0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7557
    // The precise dates tape, regular (100%) opacity
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7558
    var tapeElmtData = this._paintEventTape(evt, track, latestStartPixel,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7559
        earliestEndPixel, color, 100, metrics, theme, 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7560
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7561
    var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7562
        labelSize.width, labelSize.height, theme, labelDivClassName, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7563
    var els = [impreciseTapeElmtData.elmt, tapeElmtData.elmt, labelElmtData.elmt];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7564
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7565
    var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7566
    var clickHandler = function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7567
        return self._onClickDurationEvent(tapeElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7568
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7569
    SimileAjax.DOM.registerEvent(tapeElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7570
    SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7571
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7572
    var hDiv = this._createHighlightDiv(highlightIndex, tapeElmtData, theme, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7573
    if (hDiv != null) {els.push(hDiv);}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7574
    this._fireEventPaintListeners('paintedEvent', evt, els);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7575
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7576
    this._eventIdToElmt[evt.getID()] = tapeElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7577
    this._tracks[track] = startPixel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7578
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7579
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7580
Timeline.OriginalEventPainter.prototype._encodeEventElID = function(elType, evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7581
    return Timeline.EventUtils.encodeEventElID(this._timeline, this._band, elType, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7582
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7583
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7584
Timeline.OriginalEventPainter.prototype._findFreeTrack = function(event, rightEdge) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7585
    var trackAttribute = event.getTrackNum();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7586
    if (trackAttribute != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7587
        return trackAttribute; // early return since event includes track number
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7588
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7589
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7590
    // normal case: find an open track
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7591
    for (var i = 0; i < this._tracks.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7592
        var t = this._tracks[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7593
        if (t > rightEdge) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7594
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7595
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7596
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7597
    return i;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7598
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7599
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7600
Timeline.OriginalEventPainter.prototype._paintEventIcon = function(evt, iconTrack, left, metrics, theme, tapeHeight) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7601
    // If no tape, then paint the icon in the middle of the track.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7602
    // If there is a tape, paint the icon below the tape + impreciseIconMargin
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7603
    var icon = evt.getIcon();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7604
    icon = icon != null ? icon : metrics.icon;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7605
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7606
    var top; // top of the icon
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7607
    if (tapeHeight > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7608
        top = metrics.trackOffset + iconTrack * metrics.trackIncrement +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7609
              tapeHeight + metrics.impreciseIconMargin;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7610
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7611
        var middle = metrics.trackOffset + iconTrack * metrics.trackIncrement +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7612
                     metrics.trackHeight / 2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7613
        top = Math.round(middle - metrics.iconHeight / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7614
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7615
    var img = SimileAjax.Graphics.createTranslucentImage(icon);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7616
    var iconDiv = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7617
    iconDiv.className = this._getElClassName('timeline-event-icon', evt, 'icon');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7618
    iconDiv.id = this._encodeEventElID('icon', evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7619
    iconDiv.style.left = left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7620
    iconDiv.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7621
    iconDiv.appendChild(img);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7622
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7623
    if(evt._title != null)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7624
        iconDiv.title = evt._title;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7625
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7626
    this._eventLayer.appendChild(iconDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7627
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7628
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7629
        left:   left,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7630
        top:    top,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7631
        width:  metrics.iconWidth,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7632
        height: metrics.iconHeight,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7633
        elmt:   iconDiv
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7634
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7635
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7636
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7637
Timeline.OriginalEventPainter.prototype._paintEventLabel = function(evt, text, left, top, width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7638
    height, theme, labelDivClassName, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7639
    var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7640
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7641
    var labelDiv = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7642
    labelDiv.className = labelDivClassName;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7643
    labelDiv.id = this._encodeEventElID('label', evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7644
    labelDiv.style.left = left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7645
    labelDiv.style.width = width + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7646
    labelDiv.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7647
    labelDiv.innerHTML = text;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7648
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7649
    if(evt._title != null)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7650
        labelDiv.title = evt._title;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7651
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7652
    var color = evt.getTextColor();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7653
    if (color == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7654
        color = evt.getColor();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7655
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7656
    if (color != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7657
        labelDiv.style.color = color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7658
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7659
    if (theme.event.highlightLabelBackground && highlightIndex >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7660
        labelDiv.style.background = this._getHighlightColor(highlightIndex, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7661
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7662
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7663
    this._eventLayer.appendChild(labelDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7664
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7665
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7666
        left:   left,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7667
        top:    top,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7668
        width:  width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7669
        height: height,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7670
        elmt:   labelDiv
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7671
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7672
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7673
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7674
Timeline.OriginalEventPainter.prototype._paintEventTape = function(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7675
    evt, iconTrack, startPixel, endPixel, color, opacity, metrics, theme, tape_index) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7676
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7677
    var tapeWidth = endPixel - startPixel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7678
    var tapeHeight = theme.event.tape.height;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7679
    var top = metrics.trackOffset + iconTrack * metrics.trackIncrement;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7680
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7681
    var tapeDiv = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7682
    tapeDiv.className = this._getElClassName('timeline-event-tape', evt, 'tape');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7683
    tapeDiv.id = this._encodeEventElID('tape' + tape_index, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7684
    tapeDiv.style.left = startPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7685
    tapeDiv.style.width = tapeWidth + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7686
    tapeDiv.style.height = tapeHeight + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7687
    tapeDiv.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7688
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7689
    if(evt._title != null)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7690
        tapeDiv.title = evt._title;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7691
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7692
    if(color != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7693
        tapeDiv.style.backgroundColor = color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7694
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7695
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7696
    var backgroundImage = evt.getTapeImage();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7697
    var backgroundRepeat = evt.getTapeRepeat();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7698
    backgroundRepeat = backgroundRepeat != null ? backgroundRepeat : 'repeat';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7699
    if(backgroundImage != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7700
      tapeDiv.style.backgroundImage = "url(" + backgroundImage + ")";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7701
      tapeDiv.style.backgroundRepeat = backgroundRepeat;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7702
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7703
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7704
    SimileAjax.Graphics.setOpacity(tapeDiv, opacity);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7705
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7706
    this._eventLayer.appendChild(tapeDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7707
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7708
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7709
        left:   startPixel,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7710
        top:    top,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7711
        width:  tapeWidth,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7712
        height: tapeHeight,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7713
        elmt:   tapeDiv
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7714
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7715
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7716
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7717
Timeline.OriginalEventPainter.prototype._getLabelDivClassName = function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7718
    return this._getElClassName('timeline-event-label', evt, 'label');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7719
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7720
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7721
Timeline.OriginalEventPainter.prototype._getElClassName = function(elClassName, evt, prefix) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7722
    // Prefix and '_' is added to the event's classname. Set to null for no prefix
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7723
    var evt_classname = evt.getClassName(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7724
        pieces = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7725
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7726
    if (evt_classname) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7727
      if (prefix) {pieces.push(prefix + '-' + evt_classname + ' ');}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7728
      pieces.push(evt_classname + ' ');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7729
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7730
    pieces.push(elClassName);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7731
    return(pieces.join(''));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7732
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7733
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7734
Timeline.OriginalEventPainter.prototype._getHighlightColor = function(highlightIndex, theme) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7735
    var highlightColors = theme.event.highlightColors;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7736
    return highlightColors[Math.min(highlightIndex, highlightColors.length - 1)];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7737
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7738
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7739
Timeline.OriginalEventPainter.prototype._createHighlightDiv = function(highlightIndex, dimensions, theme, evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7740
    var div = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7741
    if (highlightIndex >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7742
        var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7743
        var color = this._getHighlightColor(highlightIndex, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7744
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7745
        div = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7746
        div.className = this._getElClassName('timeline-event-highlight', evt, 'highlight');
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7747
        div.id = this._encodeEventElID('highlight0', evt); // in future will have other
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7748
                                                           // highlight divs for tapes + icons
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7749
        div.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7750
        div.style.overflow = "hidden";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7751
        div.style.left =    (dimensions.left - 2) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7752
        div.style.width =   (dimensions.width + 4) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7753
        div.style.top =     (dimensions.top - 2) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7754
        div.style.height =  (dimensions.height + 4) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7755
        div.style.background = color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7756
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7757
        this._highlightLayer.appendChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7758
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7759
    return div;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7760
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7761
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7762
Timeline.OriginalEventPainter.prototype._onClickInstantEvent = function(icon, domEvt, evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7763
    var c = SimileAjax.DOM.getPageCoordinates(icon);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7764
    this._showBubble(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7765
        c.left + Math.ceil(icon.offsetWidth / 2),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7766
        c.top + Math.ceil(icon.offsetHeight / 2),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7767
        evt
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7768
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7769
    this._fireOnSelect(evt.getID());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7770
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7771
    domEvt.cancelBubble = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7772
    SimileAjax.DOM.cancelEvent(domEvt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7773
    return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7774
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7775
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7776
Timeline.OriginalEventPainter.prototype._onClickDurationEvent = function(target, domEvt, evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7777
    if ("pageX" in domEvt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7778
        var x = domEvt.pageX;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7779
        var y = domEvt.pageY;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7780
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7781
        var c = SimileAjax.DOM.getPageCoordinates(target);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7782
        var x = domEvt.offsetX + c.left;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7783
        var y = domEvt.offsetY + c.top;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7784
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7785
    this._showBubble(x, y, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7786
    this._fireOnSelect(evt.getID());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7787
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7788
    domEvt.cancelBubble = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7789
    SimileAjax.DOM.cancelEvent(domEvt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7790
    return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7791
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7792
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7793
Timeline.OriginalEventPainter.prototype.showBubble = function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7794
    var elmt = this._eventIdToElmt[evt.getID()];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7795
    if (elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7796
        var c = SimileAjax.DOM.getPageCoordinates(elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7797
        this._showBubble(c.left + elmt.offsetWidth / 2, c.top + elmt.offsetHeight / 2, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7798
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7799
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7800
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7801
Timeline.OriginalEventPainter.prototype._showBubble = function(x, y, evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7802
    var div = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7803
    var themeBubble = this._params.theme.event.bubble;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7804
    evt.fillInfoBubble(div, this._params.theme, this._band.getLabeller());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7805
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7806
    SimileAjax.WindowManager.cancelPopups();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7807
    SimileAjax.Graphics.createBubbleForContentAndPoint(div, x, y,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7808
        themeBubble.width, null, themeBubble.maxHeight);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7809
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7810
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7811
Timeline.OriginalEventPainter.prototype._fireOnSelect = function(eventID) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7812
    for (var i = 0; i < this._onSelectListeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7813
        this._onSelectListeners[i](eventID);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7814
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7815
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7816
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7817
Timeline.OriginalEventPainter.prototype._fireEventPaintListeners = function(op, evt, els) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7818
    for (var i = 0; i < this._eventPaintListeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7819
        this._eventPaintListeners[i](this._band, op, evt, els);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7820
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7821
};
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  7822
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7823
 *  Detailed Event Painter
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  7824
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7825
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7826
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7827
// Note: a number of features from original-painter
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7828
//       are not yet implemented in detailed painter.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7829
//       Eg classname, id attributes for icons, labels, tapes
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7830
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7831
Timeline.DetailedEventPainter = function(params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7832
    this._params = params;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7833
    this._onSelectListeners = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7834
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7835
    this._filterMatcher = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7836
    this._highlightMatcher = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7837
    this._frc = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7838
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7839
    this._eventIdToElmt = {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7840
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7841
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7842
Timeline.DetailedEventPainter.prototype.initialize = function(band, timeline) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7843
    this._band = band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7844
    this._timeline = timeline;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7845
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7846
    this._backLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7847
    this._eventLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7848
    this._lineLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7849
    this._highlightLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7850
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7851
    this._eventIdToElmt = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7852
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7853
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7854
Timeline.DetailedEventPainter.prototype.getType = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7855
    return 'detailed';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7856
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7857
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7858
Timeline.DetailedEventPainter.prototype.addOnSelectListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7859
    this._onSelectListeners.push(listener);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7860
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7861
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7862
Timeline.DetailedEventPainter.prototype.removeOnSelectListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7863
    for (var i = 0; i < this._onSelectListeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7864
        if (this._onSelectListeners[i] == listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7865
            this._onSelectListeners.splice(i, 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7866
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7867
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7868
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7869
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7870
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7871
Timeline.DetailedEventPainter.prototype.getFilterMatcher = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7872
    return this._filterMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7873
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7874
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7875
Timeline.DetailedEventPainter.prototype.setFilterMatcher = function(filterMatcher) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7876
    this._filterMatcher = filterMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7877
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7878
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7879
Timeline.DetailedEventPainter.prototype.getHighlightMatcher = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7880
    return this._highlightMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7881
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7882
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7883
Timeline.DetailedEventPainter.prototype.setHighlightMatcher = function(highlightMatcher) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7884
    this._highlightMatcher = highlightMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7885
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7886
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7887
Timeline.DetailedEventPainter.prototype.paint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7888
    var eventSource = this._band.getEventSource();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7889
    if (eventSource == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7890
        return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7891
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7892
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7893
    this._eventIdToElmt = {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7894
    this._prepareForPainting();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7895
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7896
    var eventTheme = this._params.theme.event;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7897
    var trackHeight = Math.max(eventTheme.track.height, this._frc.getLineHeight());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7898
    var metrics = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7899
        trackOffset:    Math.round(this._band.getViewWidth() / 2 - trackHeight / 2),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7900
        trackHeight:    trackHeight,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7901
        trackGap:       eventTheme.track.gap,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7902
        trackIncrement: trackHeight + eventTheme.track.gap,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7903
        icon:           eventTheme.instant.icon,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7904
        iconWidth:      eventTheme.instant.iconWidth,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7905
        iconHeight:     eventTheme.instant.iconHeight,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7906
        labelWidth:     eventTheme.label.width
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7907
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7908
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7909
    var minDate = this._band.getMinDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7910
    var maxDate = this._band.getMaxDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7911
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7912
    var filterMatcher = (this._filterMatcher != null) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7913
        this._filterMatcher :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7914
        function(evt) { return true; };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7915
    var highlightMatcher = (this._highlightMatcher != null) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7916
        this._highlightMatcher :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7917
        function(evt) { return -1; };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7918
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7919
    var iterator = eventSource.getEventReverseIterator(minDate, maxDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7920
    while (iterator.hasNext()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7921
        var evt = iterator.next();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7922
        if (filterMatcher(evt)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7923
            this.paintEvent(evt, metrics, this._params.theme, highlightMatcher(evt));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7924
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7925
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7926
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7927
    this._highlightLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7928
    this._lineLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7929
    this._eventLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7930
    // update the band object for max number of tracks in this section of the ether
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7931
    this._band.updateEventTrackInfo(this._lowerTracks.length + this._upperTracks.length,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7932
                                 metrics.trackIncrement);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7933
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7934
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7935
Timeline.DetailedEventPainter.prototype.softPaint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7936
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7937
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7938
Timeline.DetailedEventPainter.prototype._prepareForPainting = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7939
    var band = this._band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7940
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7941
    if (this._backLayer == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7942
        this._backLayer = this._band.createLayerDiv(0, "timeline-band-events");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7943
        this._backLayer.style.visibility = "hidden";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7944
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7945
        var eventLabelPrototype = document.createElement("span");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7946
        eventLabelPrototype.className = "timeline-event-label";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7947
        this._backLayer.appendChild(eventLabelPrototype);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7948
        this._frc = SimileAjax.Graphics.getFontRenderingContext(eventLabelPrototype);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7949
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7950
    this._frc.update();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7951
    this._lowerTracks = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7952
    this._upperTracks = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7953
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7954
    if (this._highlightLayer != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7955
        band.removeLayerDiv(this._highlightLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7956
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7957
    this._highlightLayer = band.createLayerDiv(105, "timeline-band-highlights");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7958
    this._highlightLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7959
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7960
    if (this._lineLayer != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7961
        band.removeLayerDiv(this._lineLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7962
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7963
    this._lineLayer = band.createLayerDiv(110, "timeline-band-lines");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7964
    this._lineLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7965
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7966
    if (this._eventLayer != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7967
        band.removeLayerDiv(this._eventLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7968
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7969
    this._eventLayer = band.createLayerDiv(110, "timeline-band-events");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7970
    this._eventLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7971
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7972
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7973
Timeline.DetailedEventPainter.prototype.paintEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7974
    if (evt.isInstant()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7975
        this.paintInstantEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7976
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7977
        this.paintDurationEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7978
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7979
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7980
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7981
Timeline.DetailedEventPainter.prototype.paintInstantEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7982
    if (evt.isImprecise()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7983
        this.paintImpreciseInstantEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7984
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7985
        this.paintPreciseInstantEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7986
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7987
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7988
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7989
Timeline.DetailedEventPainter.prototype.paintDurationEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7990
    if (evt.isImprecise()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7991
        this.paintImpreciseDurationEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7992
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7993
        this.paintPreciseDurationEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7994
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7995
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7996
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7997
Timeline.DetailedEventPainter.prototype.paintPreciseInstantEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7998
    var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  7999
    var text = evt.getText();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8000
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8001
    var startDate = evt.getStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8002
    var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8003
    var iconRightEdge = Math.round(startPixel + metrics.iconWidth / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8004
    var iconLeftEdge = Math.round(startPixel - metrics.iconWidth / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8005
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8006
    var labelSize = this._frc.computeSize(text);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8007
    var iconTrack = this._findFreeTrackForSolid(iconRightEdge, startPixel);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8008
    var iconElmtData = this._paintEventIcon(evt, iconTrack, iconLeftEdge, metrics, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8009
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8010
    var labelLeft = iconRightEdge + theme.event.label.offsetFromLine;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8011
    var labelTrack = iconTrack;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8012
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8013
    var iconTrackData = this._getTrackData(iconTrack);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8014
    if (Math.min(iconTrackData.solid, iconTrackData.text) >= labelLeft + labelSize.width) { // label on the same track, to the right of icon
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8015
        iconTrackData.solid = iconLeftEdge;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8016
        iconTrackData.text = labelLeft;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8017
    } else { // label on a different track, below icon
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8018
        iconTrackData.solid = iconLeftEdge;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8019
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8020
        labelLeft = startPixel + theme.event.label.offsetFromLine;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8021
        labelTrack = this._findFreeTrackForText(iconTrack, labelLeft + labelSize.width, function(t) { t.line = startPixel - 2; });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8022
        this._getTrackData(labelTrack).text = iconLeftEdge;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8023
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8024
        this._paintEventLine(evt, startPixel, iconTrack, labelTrack, metrics, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8025
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8026
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8027
    var labelTop = Math.round(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8028
        metrics.trackOffset + labelTrack * metrics.trackIncrement +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8029
        metrics.trackHeight / 2 - labelSize.height / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8030
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8031
    var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width, labelSize.height, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8032
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8033
    var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8034
    var clickHandler = function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8035
        return self._onClickInstantEvent(iconElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8036
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8037
    SimileAjax.DOM.registerEvent(iconElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8038
    SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8039
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8040
    this._createHighlightDiv(highlightIndex, iconElmtData, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8041
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8042
    this._eventIdToElmt[evt.getID()] = iconElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8043
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8044
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8045
Timeline.DetailedEventPainter.prototype.paintImpreciseInstantEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8046
    var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8047
    var text = evt.getText();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8048
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8049
    var startDate = evt.getStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8050
    var endDate = evt.getEnd();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8051
    var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8052
    var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8053
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8054
    var iconRightEdge = Math.round(startPixel + metrics.iconWidth / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8055
    var iconLeftEdge = Math.round(startPixel - metrics.iconWidth / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8056
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8057
    var labelSize = this._frc.computeSize(text);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8058
    var iconTrack = this._findFreeTrackForSolid(endPixel, startPixel);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8059
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8060
    var tapeElmtData = this._paintEventTape(evt, iconTrack, startPixel, endPixel,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8061
        theme.event.instant.impreciseColor, theme.event.instant.impreciseOpacity, metrics, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8062
    var iconElmtData = this._paintEventIcon(evt, iconTrack, iconLeftEdge, metrics, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8063
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8064
    var iconTrackData = this._getTrackData(iconTrack);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8065
    iconTrackData.solid = iconLeftEdge;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8066
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8067
    var labelLeft = iconRightEdge + theme.event.label.offsetFromLine;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8068
    var labelRight = labelLeft + labelSize.width;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8069
    var labelTrack;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8070
    if (labelRight < endPixel) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8071
        labelTrack = iconTrack;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8072
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8073
        labelLeft = startPixel + theme.event.label.offsetFromLine;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8074
        labelRight = labelLeft + labelSize.width;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8075
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8076
        labelTrack = this._findFreeTrackForText(iconTrack, labelRight, function(t) { t.line = startPixel - 2; });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8077
        this._getTrackData(labelTrack).text = iconLeftEdge;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8078
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8079
        this._paintEventLine(evt, startPixel, iconTrack, labelTrack, metrics, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8080
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8081
    var labelTop = Math.round(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8082
        metrics.trackOffset + labelTrack * metrics.trackIncrement +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8083
        metrics.trackHeight / 2 - labelSize.height / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8084
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8085
    var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width, labelSize.height, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8086
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8087
    var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8088
    var clickHandler = function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8089
        return self._onClickInstantEvent(iconElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8090
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8091
    SimileAjax.DOM.registerEvent(iconElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8092
    SimileAjax.DOM.registerEvent(tapeElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8093
    SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8094
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8095
    this._createHighlightDiv(highlightIndex, iconElmtData, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8096
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8097
    this._eventIdToElmt[evt.getID()] = iconElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8098
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8099
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8100
Timeline.DetailedEventPainter.prototype.paintPreciseDurationEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8101
    var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8102
    var text = evt.getText();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8103
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8104
    var startDate = evt.getStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8105
    var endDate = evt.getEnd();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8106
    var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8107
    var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8108
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8109
    var labelSize = this._frc.computeSize(text);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8110
    var tapeTrack = this._findFreeTrackForSolid(endPixel);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8111
    var color = evt.getColor();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8112
    color = color != null ? color : theme.event.duration.color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8113
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8114
    var tapeElmtData = this._paintEventTape(evt, tapeTrack, startPixel, endPixel, color, 100, metrics, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8115
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8116
    var tapeTrackData = this._getTrackData(tapeTrack);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8117
    tapeTrackData.solid = startPixel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8118
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8119
    var labelLeft = startPixel + theme.event.label.offsetFromLine;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8120
    var labelTrack = this._findFreeTrackForText(tapeTrack, labelLeft + labelSize.width, function(t) { t.line = startPixel - 2; });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8121
    this._getTrackData(labelTrack).text = startPixel - 2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8122
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8123
    this._paintEventLine(evt, startPixel, tapeTrack, labelTrack, metrics, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8124
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8125
    var labelTop = Math.round(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8126
        metrics.trackOffset + labelTrack * metrics.trackIncrement +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8127
        metrics.trackHeight / 2 - labelSize.height / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8128
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8129
    var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width, labelSize.height, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8130
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8131
    var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8132
    var clickHandler = function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8133
        return self._onClickDurationEvent(tapeElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8134
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8135
    SimileAjax.DOM.registerEvent(tapeElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8136
    SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8137
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8138
    this._createHighlightDiv(highlightIndex, tapeElmtData, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8139
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8140
    this._eventIdToElmt[evt.getID()] = tapeElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8141
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8142
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8143
Timeline.DetailedEventPainter.prototype.paintImpreciseDurationEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8144
    var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8145
    var text = evt.getText();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8146
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8147
    var startDate = evt.getStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8148
    var latestStartDate = evt.getLatestStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8149
    var endDate = evt.getEnd();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8150
    var earliestEndDate = evt.getEarliestEnd();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8151
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8152
    var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8153
    var latestStartPixel = Math.round(this._band.dateToPixelOffset(latestStartDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8154
    var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8155
    var earliestEndPixel = Math.round(this._band.dateToPixelOffset(earliestEndDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8157
    var labelSize = this._frc.computeSize(text);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8158
    var tapeTrack = this._findFreeTrackForSolid(endPixel);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8159
    var color = evt.getColor();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8160
    color = color != null ? color : theme.event.duration.color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8161
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8162
    var impreciseTapeElmtData = this._paintEventTape(evt, tapeTrack, startPixel, endPixel,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8163
        theme.event.duration.impreciseColor, theme.event.duration.impreciseOpacity, metrics, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8164
    var tapeElmtData = this._paintEventTape(evt, tapeTrack, latestStartPixel, earliestEndPixel, color, 100, metrics, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8165
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8166
    var tapeTrackData = this._getTrackData(tapeTrack);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8167
    tapeTrackData.solid = startPixel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8168
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8169
    var labelLeft = latestStartPixel + theme.event.label.offsetFromLine;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8170
    var labelTrack = this._findFreeTrackForText(tapeTrack, labelLeft + labelSize.width, function(t) { t.line = latestStartPixel - 2; });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8171
    this._getTrackData(labelTrack).text = latestStartPixel - 2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8172
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8173
    this._paintEventLine(evt, latestStartPixel, tapeTrack, labelTrack, metrics, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8174
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8175
    var labelTop = Math.round(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8176
        metrics.trackOffset + labelTrack * metrics.trackIncrement +
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8177
        metrics.trackHeight / 2 - labelSize.height / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8178
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8179
    var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width, labelSize.height, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8180
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8181
    var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8182
    var clickHandler = function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8183
        return self._onClickDurationEvent(tapeElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8184
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8185
    SimileAjax.DOM.registerEvent(tapeElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8186
    SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8187
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8188
    this._createHighlightDiv(highlightIndex, tapeElmtData, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8189
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8190
    this._eventIdToElmt[evt.getID()] = tapeElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8191
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8192
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8193
Timeline.DetailedEventPainter.prototype._findFreeTrackForSolid = function(solidEdge, softEdge) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8194
    for (var i = 0; true; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8195
        if (i < this._lowerTracks.length) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8196
            var t = this._lowerTracks[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8197
            if (Math.min(t.solid, t.text) > solidEdge && (!(softEdge) || t.line > softEdge)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8198
                return i;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8199
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8200
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8201
            this._lowerTracks.push({
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8202
                solid:  Number.POSITIVE_INFINITY,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8203
                text:   Number.POSITIVE_INFINITY,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8204
                line:   Number.POSITIVE_INFINITY
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8205
            });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8206
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8207
            return i;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8208
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8209
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8210
        if (i < this._upperTracks.length) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8211
            var t = this._upperTracks[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8212
            if (Math.min(t.solid, t.text) > solidEdge && (!(softEdge) || t.line > softEdge)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8213
                return -1 - i;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8214
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8215
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8216
            this._upperTracks.push({
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8217
                solid:  Number.POSITIVE_INFINITY,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8218
                text:   Number.POSITIVE_INFINITY,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8219
                line:   Number.POSITIVE_INFINITY
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8220
            });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8221
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8222
            return -1 - i;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8223
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8224
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8225
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8226
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8227
Timeline.DetailedEventPainter.prototype._findFreeTrackForText = function(fromTrack, edge, occupiedTrackVisitor) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8228
    var extendUp;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8229
    var index;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8230
    var firstIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8231
    var result;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8232
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8233
    if (fromTrack < 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8234
        extendUp = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8235
        firstIndex = -fromTrack;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8236
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8237
        index = this._findFreeUpperTrackForText(firstIndex, edge);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8238
        result = -1 - index;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8239
    } else if (fromTrack > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8240
        extendUp = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8241
        firstIndex = fromTrack + 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8242
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8243
        index = this._findFreeLowerTrackForText(firstIndex, edge);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8244
        result = index;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8245
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8246
        var upIndex = this._findFreeUpperTrackForText(0, edge);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8247
        var downIndex = this._findFreeLowerTrackForText(1, edge);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8248
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8249
        if (downIndex - 1 <= upIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8250
            extendUp = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8251
            firstIndex = 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8252
            index = downIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8253
            result = index;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8254
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8255
            extendUp = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8256
            firstIndex = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8257
            index = upIndex;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8258
            result = -1 - index;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8259
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8260
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8261
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8262
    if (extendUp) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8263
        if (index == this._upperTracks.length) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8264
            this._upperTracks.push({
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8265
                solid:  Number.POSITIVE_INFINITY,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8266
                text:   Number.POSITIVE_INFINITY,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8267
                line:   Number.POSITIVE_INFINITY
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8268
            });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8269
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8270
        for (var i = firstIndex; i < index; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8271
            occupiedTrackVisitor(this._upperTracks[i]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8272
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8273
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8274
        if (index == this._lowerTracks.length) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8275
            this._lowerTracks.push({
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8276
                solid:  Number.POSITIVE_INFINITY,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8277
                text:   Number.POSITIVE_INFINITY,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8278
                line:   Number.POSITIVE_INFINITY
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8279
            });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8280
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8281
        for (var i = firstIndex; i < index; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8282
            occupiedTrackVisitor(this._lowerTracks[i]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8283
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8284
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8285
    return result;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8286
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8287
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8288
Timeline.DetailedEventPainter.prototype._findFreeLowerTrackForText = function(index, edge) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8289
    for (; index < this._lowerTracks.length; index++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8290
        var t = this._lowerTracks[index];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8291
        if (Math.min(t.solid, t.text) >= edge) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8292
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8293
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8294
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8295
    return index;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8296
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8297
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8298
Timeline.DetailedEventPainter.prototype._findFreeUpperTrackForText = function(index, edge) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8299
    for (; index < this._upperTracks.length; index++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8300
        var t = this._upperTracks[index];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8301
        if (Math.min(t.solid, t.text) >= edge) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8302
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8303
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8304
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8305
    return index;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8306
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8307
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8308
Timeline.DetailedEventPainter.prototype._getTrackData = function(index) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8309
    return (index < 0) ? this._upperTracks[-index - 1] : this._lowerTracks[index];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8310
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8311
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8312
Timeline.DetailedEventPainter.prototype._paintEventLine = function(evt, left, startTrack, endTrack, metrics, theme) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8313
    var top = Math.round(metrics.trackOffset + startTrack * metrics.trackIncrement + metrics.trackHeight / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8314
    var height = Math.round(Math.abs(endTrack - startTrack) * metrics.trackIncrement);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8315
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8316
    var lineStyle = "1px solid " + theme.event.label.lineColor;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8317
    var lineDiv = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8318
	lineDiv.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8319
    lineDiv.style.left = left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8320
    lineDiv.style.width = theme.event.label.offsetFromLine + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8321
    lineDiv.style.height = height + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8322
    if (startTrack > endTrack) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8323
        lineDiv.style.top = (top - height) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8324
        lineDiv.style.borderTop = lineStyle;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8325
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8326
        lineDiv.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8327
        lineDiv.style.borderBottom = lineStyle;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8328
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8329
    lineDiv.style.borderLeft = lineStyle;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8330
    this._lineLayer.appendChild(lineDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8331
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8332
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8333
Timeline.DetailedEventPainter.prototype._paintEventIcon = function(evt, iconTrack, left, metrics, theme) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8334
    var icon = evt.getIcon();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8335
    icon = icon != null ? icon : metrics.icon;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8336
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8337
    var middle = metrics.trackOffset + iconTrack * metrics.trackIncrement + metrics.trackHeight / 2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8338
    var top = Math.round(middle - metrics.iconHeight / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8339
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8340
    var img = SimileAjax.Graphics.createTranslucentImage(icon);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8341
    var iconDiv = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8342
    iconDiv.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8343
    iconDiv.style.left = left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8344
    iconDiv.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8345
    iconDiv.appendChild(img);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8346
    iconDiv.style.cursor = "pointer";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8347
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8348
    if(evt._title != null)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8349
        iconDiv.title = evt._title
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8350
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8351
    this._eventLayer.appendChild(iconDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8352
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8353
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8354
        left:   left,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8355
        top:    top,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8356
        width:  metrics.iconWidth,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8357
        height: metrics.iconHeight,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8358
        elmt:   iconDiv
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8359
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8360
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8361
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8362
Timeline.DetailedEventPainter.prototype._paintEventLabel = function(evt, text, left, top, width, height, theme) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8363
    var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8364
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8365
    var labelBackgroundDiv = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8366
    labelBackgroundDiv.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8367
    labelBackgroundDiv.style.left = left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8368
    labelBackgroundDiv.style.width = width + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8369
    labelBackgroundDiv.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8370
    labelBackgroundDiv.style.height = height + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8371
    labelBackgroundDiv.style.backgroundColor = theme.event.label.backgroundColor;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8372
    SimileAjax.Graphics.setOpacity(labelBackgroundDiv, theme.event.label.backgroundOpacity);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8373
    this._eventLayer.appendChild(labelBackgroundDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8374
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8375
    var labelDiv = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8376
    labelDiv.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8377
    labelDiv.style.left = left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8378
    labelDiv.style.width = width + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8379
    labelDiv.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8380
    labelDiv.innerHTML = text;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8381
    labelDiv.style.cursor = "pointer";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8382
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8383
    if(evt._title != null)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8384
        labelDiv.title = evt._title;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8385
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8386
    var color = evt.getTextColor();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8387
    if (color == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8388
        color = evt.getColor();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8389
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8390
    if (color != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8391
        labelDiv.style.color = color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8392
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8393
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8394
    this._eventLayer.appendChild(labelDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8395
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8396
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8397
        left:   left,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8398
        top:    top,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8399
        width:  width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8400
        height: height,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8401
        elmt:   labelDiv
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8402
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8403
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8404
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8405
Timeline.DetailedEventPainter.prototype._paintEventTape = function(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8406
    evt, iconTrack, startPixel, endPixel, color, opacity, metrics, theme) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8407
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8408
    var tapeWidth = endPixel - startPixel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8409
    var tapeHeight = theme.event.tape.height;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8410
    var middle = metrics.trackOffset + iconTrack * metrics.trackIncrement + metrics.trackHeight / 2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8411
    var top = Math.round(middle - tapeHeight / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8412
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8413
    var tapeDiv = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8414
    tapeDiv.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8415
    tapeDiv.style.left = startPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8416
    tapeDiv.style.width = tapeWidth + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8417
    tapeDiv.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8418
    tapeDiv.style.height = tapeHeight + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8419
    tapeDiv.style.backgroundColor = color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8420
    tapeDiv.style.overflow = "hidden";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8421
    tapeDiv.style.cursor = "pointer";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8422
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8423
    if(evt._title != null)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8424
        tapeDiv.title = evt._title;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8425
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8426
    SimileAjax.Graphics.setOpacity(tapeDiv, opacity);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8427
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8428
    this._eventLayer.appendChild(tapeDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8429
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8430
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8431
        left:   startPixel,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8432
        top:    top,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8433
        width:  tapeWidth,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8434
        height: tapeHeight,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8435
        elmt:   tapeDiv
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8436
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8437
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8438
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8439
Timeline.DetailedEventPainter.prototype._createHighlightDiv = function(highlightIndex, dimensions, theme) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8440
    if (highlightIndex >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8441
        var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8442
        var eventTheme = theme.event;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8443
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8444
        var color = eventTheme.highlightColors[Math.min(highlightIndex, eventTheme.highlightColors.length - 1)];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8445
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8446
        var div = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8447
        div.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8448
        div.style.overflow = "hidden";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8449
        div.style.left =    (dimensions.left - 2) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8450
        div.style.width =   (dimensions.width + 4) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8451
        div.style.top =     (dimensions.top - 2) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8452
        div.style.height =  (dimensions.height + 4) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8453
        div.style.background = color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8454
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8455
        this._highlightLayer.appendChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8456
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8457
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8458
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8459
Timeline.DetailedEventPainter.prototype._onClickInstantEvent = function(icon, domEvt, evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8460
    var c = SimileAjax.DOM.getPageCoordinates(icon);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8461
    this._showBubble(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8462
        c.left + Math.ceil(icon.offsetWidth / 2),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8463
        c.top + Math.ceil(icon.offsetHeight / 2),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8464
        evt
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8465
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8466
    this._fireOnSelect(evt.getID());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8467
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8468
    domEvt.cancelBubble = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8469
    SimileAjax.DOM.cancelEvent(domEvt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8470
    return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8471
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8472
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8473
Timeline.DetailedEventPainter.prototype._onClickDurationEvent = function(target, domEvt, evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8474
    if ("pageX" in domEvt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8475
        var x = domEvt.pageX;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8476
        var y = domEvt.pageY;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8477
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8478
        var c = SimileAjax.DOM.getPageCoordinates(target);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8479
        var x = domEvt.offsetX + c.left;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8480
        var y = domEvt.offsetY + c.top;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8481
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8482
    this._showBubble(x, y, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8483
    this._fireOnSelect(evt.getID());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8484
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8485
    domEvt.cancelBubble = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8486
    SimileAjax.DOM.cancelEvent(domEvt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8487
    return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8488
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8489
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8490
Timeline.DetailedEventPainter.prototype.showBubble = function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8491
    var elmt = this._eventIdToElmt[evt.getID()];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8492
    if (elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8493
        var c = SimileAjax.DOM.getPageCoordinates(elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8494
        this._showBubble(c.left + elmt.offsetWidth / 2, c.top + elmt.offsetHeight / 2, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8495
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8496
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8497
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8498
Timeline.DetailedEventPainter.prototype._showBubble = function(x, y, evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8499
    var div = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8500
    var themeBubble = this._params.theme.event.bubble;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8501
    evt.fillInfoBubble(div, this._params.theme, this._band.getLabeller());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8502
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8503
    SimileAjax.WindowManager.cancelPopups();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8504
    SimileAjax.Graphics.createBubbleForContentAndPoint(div, x, y,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8505
       themeBubble.width, null, themeBubble.maxHeight);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8506
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8507
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8508
Timeline.DetailedEventPainter.prototype._fireOnSelect = function(eventID) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8509
    for (var i = 0; i < this._onSelectListeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8510
        this._onSelectListeners[i](eventID);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8511
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8512
};
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  8513
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8514
 *  Overview Event Painter
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  8515
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8516
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8517
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8518
Timeline.OverviewEventPainter = function(params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8519
    this._params = params;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8520
    this._onSelectListeners = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8521
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8522
    this._filterMatcher = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8523
    this._highlightMatcher = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8524
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8525
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8526
Timeline.OverviewEventPainter.prototype.initialize = function(band, timeline) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8527
    this._band = band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8528
    this._timeline = timeline;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8529
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8530
    this._eventLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8531
    this._highlightLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8532
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8533
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8534
Timeline.OverviewEventPainter.prototype.getType = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8535
    return 'overview';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8536
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8537
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8538
Timeline.OverviewEventPainter.prototype.addOnSelectListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8539
    this._onSelectListeners.push(listener);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8540
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8541
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8542
Timeline.OverviewEventPainter.prototype.removeOnSelectListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8543
    for (var i = 0; i < this._onSelectListeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8544
        if (this._onSelectListeners[i] == listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8545
            this._onSelectListeners.splice(i, 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8546
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8547
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8548
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8549
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8550
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8551
Timeline.OverviewEventPainter.prototype.getFilterMatcher = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8552
    return this._filterMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8553
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8554
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8555
Timeline.OverviewEventPainter.prototype.setFilterMatcher = function(filterMatcher) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8556
    this._filterMatcher = filterMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8557
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8558
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8559
Timeline.OverviewEventPainter.prototype.getHighlightMatcher = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8560
    return this._highlightMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8561
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8562
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8563
Timeline.OverviewEventPainter.prototype.setHighlightMatcher = function(highlightMatcher) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8564
    this._highlightMatcher = highlightMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8565
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8566
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8567
Timeline.OverviewEventPainter.prototype.paint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8568
    var eventSource = this._band.getEventSource();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8569
    if (eventSource == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8570
        return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8571
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8572
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8573
    this._prepareForPainting();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8574
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8575
    var eventTheme = this._params.theme.event;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8576
    var metrics = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8577
        trackOffset:    eventTheme.overviewTrack.offset,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8578
        trackHeight:    eventTheme.overviewTrack.height,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8579
        trackGap:       eventTheme.overviewTrack.gap,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8580
        trackIncrement: eventTheme.overviewTrack.height + eventTheme.overviewTrack.gap
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8581
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8582
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8583
    var minDate = this._band.getMinDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8584
    var maxDate = this._band.getMaxDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8585
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8586
    var filterMatcher = (this._filterMatcher != null) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8587
        this._filterMatcher :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8588
        function(evt) { return true; };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8589
    var highlightMatcher = (this._highlightMatcher != null) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8590
        this._highlightMatcher :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8591
        function(evt) { return -1; };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8592
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8593
    var iterator = eventSource.getEventReverseIterator(minDate, maxDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8594
    while (iterator.hasNext()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8595
        var evt = iterator.next();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8596
        if (filterMatcher(evt)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8597
            this.paintEvent(evt, metrics, this._params.theme, highlightMatcher(evt));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8598
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8599
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8600
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8601
    this._highlightLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8602
    this._eventLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8603
    // update the band object for max number of tracks in this section of the ether
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8604
    this._band.updateEventTrackInfo(this._tracks.length, metrics.trackIncrement);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8605
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8606
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8607
Timeline.OverviewEventPainter.prototype.softPaint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8608
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8609
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8610
Timeline.OverviewEventPainter.prototype._prepareForPainting = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8611
    var band = this._band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8612
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8613
    this._tracks = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8614
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8615
    if (this._highlightLayer != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8616
        band.removeLayerDiv(this._highlightLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8617
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8618
    this._highlightLayer = band.createLayerDiv(105, "timeline-band-highlights");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8619
    this._highlightLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8620
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8621
    if (this._eventLayer != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8622
        band.removeLayerDiv(this._eventLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8623
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8624
    this._eventLayer = band.createLayerDiv(110, "timeline-band-events");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8625
    this._eventLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8626
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8627
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8628
Timeline.OverviewEventPainter.prototype.paintEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8629
    if (evt.isInstant()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8630
        this.paintInstantEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8631
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8632
        this.paintDurationEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8633
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8634
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8635
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8636
Timeline.OverviewEventPainter.prototype.paintInstantEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8637
    var startDate = evt.getStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8638
    var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8639
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8640
    var color = evt.getColor(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8641
        klassName = evt.getClassName();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8642
    if (klassName) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8643
      color = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8644
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8645
      color = color != null ? color : theme.event.duration.color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8646
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8647
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8648
    var tickElmtData = this._paintEventTick(evt, startPixel, color, 100, metrics, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8649
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8650
    this._createHighlightDiv(highlightIndex, tickElmtData, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8651
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8652
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8653
Timeline.OverviewEventPainter.prototype.paintDurationEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8654
    var latestStartDate = evt.getLatestStart();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8655
    var earliestEndDate = evt.getEarliestEnd();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8656
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8657
    var latestStartPixel = Math.round(this._band.dateToPixelOffset(latestStartDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8658
    var earliestEndPixel = Math.round(this._band.dateToPixelOffset(earliestEndDate));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8659
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8660
    var tapeTrack = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8661
    for (; tapeTrack < this._tracks.length; tapeTrack++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8662
        if (earliestEndPixel < this._tracks[tapeTrack]) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8663
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8664
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8665
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8666
    this._tracks[tapeTrack] = earliestEndPixel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8667
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8668
    var color = evt.getColor(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8669
        klassName = evt.getClassName();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8670
    if (klassName) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8671
      color = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8672
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8673
      color = color != null ? color : theme.event.duration.color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8674
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8675
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8676
    var tapeElmtData = this._paintEventTape(evt, tapeTrack, latestStartPixel, earliestEndPixel,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8677
      color, 100, metrics, theme, klassName);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8678
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8679
    this._createHighlightDiv(highlightIndex, tapeElmtData, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8680
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8681
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8682
Timeline.OverviewEventPainter.prototype._paintEventTape = function(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8683
    evt, track, left, right, color, opacity, metrics, theme, klassName) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8684
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8685
    var top = metrics.trackOffset + track * metrics.trackIncrement;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8686
    var width = right - left;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8687
    var height = metrics.trackHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8688
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8689
    var tapeDiv = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8690
    tapeDiv.className = 'timeline-small-event-tape'
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8691
    if (klassName) {tapeDiv.className += ' small-' + klassName;}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8692
    tapeDiv.style.left = left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8693
    tapeDiv.style.width = width + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8694
    tapeDiv.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8695
    tapeDiv.style.height = height + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8696
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8697
    if (color) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8698
      tapeDiv.style.backgroundColor = color; // set color here if defined by event. Else use css
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8699
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8700
 //   tapeDiv.style.overflow = "hidden";   // now set in css
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8701
 //   tapeDiv.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8702
    if(opacity<100) SimileAjax.Graphics.setOpacity(tapeDiv, opacity);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8703
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8704
    this._eventLayer.appendChild(tapeDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8705
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8706
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8707
        left:   left,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8708
        top:    top,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8709
        width:  width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8710
        height: height,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8711
        elmt:   tapeDiv
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8712
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8713
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8714
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8715
Timeline.OverviewEventPainter.prototype._paintEventTick = function(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8716
    evt, left, color, opacity, metrics, theme) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8717
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8718
    var height = theme.event.overviewTrack.tickHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8719
    var top = metrics.trackOffset - height;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8720
    var width = 1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8721
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8722
    var tickDiv = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8723
	  tickDiv.className = 'timeline-small-event-icon'
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8724
    tickDiv.style.left = left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8725
    tickDiv.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8726
  //  tickDiv.style.width = width + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8727
  //  tickDiv.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8728
  //  tickDiv.style.height = height + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8729
  //  tickDiv.style.backgroundColor = color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8730
  //  tickDiv.style.overflow = "hidden";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8731
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8732
    var klassName = evt.getClassName()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8733
    if (klassName) {tickDiv.className +=' small-' + klassName};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8734
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8735
    if(opacity<100) {SimileAjax.Graphics.setOpacity(tickDiv, opacity)};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8736
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8737
    this._eventLayer.appendChild(tickDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8738
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8739
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8740
        left:   left,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8741
        top:    top,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8742
        width:  width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8743
        height: height,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8744
        elmt:   tickDiv
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8745
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8746
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8747
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8748
Timeline.OverviewEventPainter.prototype._createHighlightDiv = function(highlightIndex, dimensions, theme) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8749
    if (highlightIndex >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8750
        var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8751
        var eventTheme = theme.event;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8752
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8753
        var color = eventTheme.highlightColors[Math.min(highlightIndex, eventTheme.highlightColors.length - 1)];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8754
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8755
        var div = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8756
        div.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8757
        div.style.overflow = "hidden";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8758
        div.style.left =    (dimensions.left - 1) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8759
        div.style.width =   (dimensions.width + 2) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8760
        div.style.top =     (dimensions.top - 1) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8761
        div.style.height =  (dimensions.height + 2) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8762
        div.style.background = color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8763
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8764
        this._highlightLayer.appendChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8765
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8766
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8767
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8768
Timeline.OverviewEventPainter.prototype.showBubble = function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8769
    // not implemented
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8770
};
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  8771
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8772
 *  Compact Event Painter
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  8773
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8774
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8775
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8776
Timeline.CompactEventPainter = function(params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8777
    this._params = params;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8778
    this._onSelectListeners = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8779
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8780
    this._filterMatcher = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8781
    this._highlightMatcher = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8782
    this._frc = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8783
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8784
    this._eventIdToElmt = {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8785
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8786
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8787
Timeline.CompactEventPainter.prototype.getType = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8788
    return 'compact';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8789
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8790
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8791
Timeline.CompactEventPainter.prototype.initialize = function(band, timeline) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8792
    this._band = band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8793
    this._timeline = timeline;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8794
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8795
    this._backLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8796
    this._eventLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8797
    this._lineLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8798
    this._highlightLayer = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8799
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8800
    this._eventIdToElmt = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8801
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8802
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8803
Timeline.CompactEventPainter.prototype.addOnSelectListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8804
    this._onSelectListeners.push(listener);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8805
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8806
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8807
Timeline.CompactEventPainter.prototype.removeOnSelectListener = function(listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8808
    for (var i = 0; i < this._onSelectListeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8809
        if (this._onSelectListeners[i] == listener) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8810
            this._onSelectListeners.splice(i, 1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8811
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8812
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8813
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8814
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8815
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8816
Timeline.CompactEventPainter.prototype.getFilterMatcher = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8817
    return this._filterMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8818
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8819
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8820
Timeline.CompactEventPainter.prototype.setFilterMatcher = function(filterMatcher) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8821
    this._filterMatcher = filterMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8822
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8823
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8824
Timeline.CompactEventPainter.prototype.getHighlightMatcher = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8825
    return this._highlightMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8826
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8827
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8828
Timeline.CompactEventPainter.prototype.setHighlightMatcher = function(highlightMatcher) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8829
    this._highlightMatcher = highlightMatcher;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8830
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8831
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8832
Timeline.CompactEventPainter.prototype.paint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8833
    var eventSource = this._band.getEventSource();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8834
    if (eventSource == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8835
        return;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8836
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8837
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8838
    this._eventIdToElmt = {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8839
    this._prepareForPainting();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8840
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8841
    var metrics = this._computeMetrics();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8842
    var minDate = this._band.getMinDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8843
    var maxDate = this._band.getMaxDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8844
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8845
    var filterMatcher = (this._filterMatcher != null) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8846
        this._filterMatcher :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8847
        function(evt) { return true; };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8848
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8849
    var highlightMatcher = (this._highlightMatcher != null) ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8850
        this._highlightMatcher :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8851
        function(evt) { return -1; };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8852
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8853
    var iterator = eventSource.getEventIterator(minDate, maxDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8854
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8855
    var stackConcurrentPreciseInstantEvents = "stackConcurrentPreciseInstantEvents" in this._params && typeof this._params.stackConcurrentPreciseInstantEvents == "object";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8856
    var collapseConcurrentPreciseInstantEvents = "collapseConcurrentPreciseInstantEvents" in this._params && this._params.collapseConcurrentPreciseInstantEvents;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8857
    if (collapseConcurrentPreciseInstantEvents || stackConcurrentPreciseInstantEvents) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8858
        var bufferedEvents = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8859
        var previousInstantEvent = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8860
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8861
        while (iterator.hasNext()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8862
            var evt = iterator.next();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8863
            if (filterMatcher(evt)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8864
                if (!evt.isInstant() || evt.isImprecise()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8865
                    this.paintEvent(evt, metrics, this._params.theme, highlightMatcher(evt));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8866
                } else if (previousInstantEvent != null &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8867
                        previousInstantEvent.getStart().getTime() == evt.getStart().getTime()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8868
                    bufferedEvents[bufferedEvents.length - 1].push(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8869
                } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8870
                    bufferedEvents.push([ evt ]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8871
                    previousInstantEvent = evt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8872
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8873
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8874
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8875
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8876
        for (var i = 0; i < bufferedEvents.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8877
            var compositeEvents = bufferedEvents[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8878
            if (compositeEvents.length == 1) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8879
                this.paintEvent(compositeEvents[0], metrics, this._params.theme, highlightMatcher(evt));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8880
            } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8881
                var match = -1;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8882
                for (var j = 0; match < 0 && j < compositeEvents.length; j++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8883
                    match = highlightMatcher(compositeEvents[j]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8884
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8885
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8886
                if (stackConcurrentPreciseInstantEvents) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8887
                    this.paintStackedPreciseInstantEvents(compositeEvents, metrics, this._params.theme, match);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8888
                } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8889
                    this.paintCompositePreciseInstantEvents(compositeEvents, metrics, this._params.theme, match);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8890
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8891
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8892
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8893
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8894
        while (iterator.hasNext()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8895
            var evt = iterator.next();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8896
            if (filterMatcher(evt)) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8897
                this.paintEvent(evt, metrics, this._params.theme, highlightMatcher(evt));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8898
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8899
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8900
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8901
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8902
    this._highlightLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8903
    this._lineLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8904
    this._eventLayer.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8905
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8906
    this._setOrthogonalOffset(metrics);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8907
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8908
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8909
Timeline.CompactEventPainter.prototype.softPaint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8910
    this._setOrthogonalOffset(this._computeMetrics());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8911
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8912
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8913
Timeline.CompactEventPainter.prototype._setOrthogonalOffset = function(metrics) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8914
    var actualViewWidth = 2 * metrics.trackOffset + this._tracks.length * metrics.trackHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8915
    var minOrthogonalOffset = Math.min(0, this._band.getViewWidth() - actualViewWidth);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8916
    var orthogonalOffset = Math.max(minOrthogonalOffset, this._band.getViewOrthogonalOffset());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8917
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8918
    this._highlightLayer.style.top =
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8919
        this._lineLayer.style.top =
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8920
            this._eventLayer.style.top =
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8921
                orthogonalOffset + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8922
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8923
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8924
Timeline.CompactEventPainter.prototype._computeMetrics = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8925
    var theme = this._params.theme;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8926
    var eventTheme = theme.event;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8927
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8928
    var metrics = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8929
        trackOffset:            "trackOffset" in this._params ? this._params.trackOffset : 10,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8930
        trackHeight:            "trackHeight" in this._params ? this._params.trackHeight : 10,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8931
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8932
        tapeHeight:             theme.event.tape.height,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8933
        tapeBottomMargin:       "tapeBottomMargin" in this._params ? this._params.tapeBottomMargin : 2,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8934
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8935
        labelBottomMargin:      "labelBottomMargin" in this._params ? this._params.labelBottomMargin : 5,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8936
        labelRightMargin:       "labelRightMargin" in this._params ? this._params.labelRightMargin : 5,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8937
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8938
        defaultIcon:            eventTheme.instant.icon,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8939
        defaultIconWidth:       eventTheme.instant.iconWidth,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8940
        defaultIconHeight:      eventTheme.instant.iconHeight,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8941
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8942
        customIconWidth:        "iconWidth" in this._params ? this._params.iconWidth : eventTheme.instant.iconWidth,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8943
        customIconHeight:       "iconHeight" in this._params ? this._params.iconHeight : eventTheme.instant.iconHeight,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8944
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8945
        iconLabelGap:           "iconLabelGap" in this._params ? this._params.iconLabelGap : 2,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8946
        iconBottomMargin:       "iconBottomMargin" in this._params ? this._params.iconBottomMargin : 2
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8947
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8948
    if ("compositeIcon" in this._params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8949
        metrics.compositeIcon = this._params.compositeIcon;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8950
        metrics.compositeIconWidth = this._params.compositeIconWidth || metrics.customIconWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8951
        metrics.compositeIconHeight = this._params.compositeIconHeight || metrics.customIconHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8952
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8953
        metrics.compositeIcon = metrics.defaultIcon;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8954
        metrics.compositeIconWidth = metrics.defaultIconWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8955
        metrics.compositeIconHeight = metrics.defaultIconHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8956
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8957
    metrics.defaultStackIcon = "icon" in this._params.stackConcurrentPreciseInstantEvents ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8958
        this._params.stackConcurrentPreciseInstantEvents.icon : metrics.defaultIcon;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8959
    metrics.defaultStackIconWidth = "iconWidth" in this._params.stackConcurrentPreciseInstantEvents ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8960
        this._params.stackConcurrentPreciseInstantEvents.iconWidth : metrics.defaultIconWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8961
    metrics.defaultStackIconHeight = "iconHeight" in this._params.stackConcurrentPreciseInstantEvents ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8962
        this._params.stackConcurrentPreciseInstantEvents.iconHeight : metrics.defaultIconHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8963
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8964
    return metrics;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8965
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8966
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8967
Timeline.CompactEventPainter.prototype._prepareForPainting = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8968
    var band = this._band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8969
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8970
    if (this._backLayer == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8971
        this._backLayer = this._band.createLayerDiv(0, "timeline-band-events");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8972
        this._backLayer.style.visibility = "hidden";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8973
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8974
        var eventLabelPrototype = document.createElement("span");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8975
        eventLabelPrototype.className = "timeline-event-label";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8976
        this._backLayer.appendChild(eventLabelPrototype);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8977
        this._frc = SimileAjax.Graphics.getFontRenderingContext(eventLabelPrototype);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8978
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8979
    this._frc.update();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8980
    this._tracks = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8981
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8982
    if (this._highlightLayer != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8983
        band.removeLayerDiv(this._highlightLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8984
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8985
    this._highlightLayer = band.createLayerDiv(105, "timeline-band-highlights");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8986
    this._highlightLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8987
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8988
    if (this._lineLayer != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8989
        band.removeLayerDiv(this._lineLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8990
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8991
    this._lineLayer = band.createLayerDiv(110, "timeline-band-lines");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8992
    this._lineLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8993
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8994
    if (this._eventLayer != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8995
        band.removeLayerDiv(this._eventLayer);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8996
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8997
    this._eventLayer = band.createLayerDiv(115, "timeline-band-events");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8998
    this._eventLayer.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  8999
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9000
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9001
Timeline.CompactEventPainter.prototype.paintEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9002
    if (evt.isInstant()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9003
        this.paintInstantEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9004
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9005
        this.paintDurationEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9006
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9007
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9008
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9009
Timeline.CompactEventPainter.prototype.paintInstantEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9010
    if (evt.isImprecise()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9011
        this.paintImpreciseInstantEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9012
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9013
        this.paintPreciseInstantEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9014
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9015
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9016
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9017
Timeline.CompactEventPainter.prototype.paintDurationEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9018
    if (evt.isImprecise()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9019
        this.paintImpreciseDurationEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9020
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9021
        this.paintPreciseDurationEvent(evt, metrics, theme, highlightIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9022
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9023
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9024
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9025
Timeline.CompactEventPainter.prototype.paintPreciseInstantEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9026
    var commonData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9027
        tooltip: evt.getProperty("tooltip") || evt.getText()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9028
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9029
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9030
    var iconData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9031
        url: evt.getIcon()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9032
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9033
    if (iconData.url == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9034
        iconData.url = metrics.defaultIcon;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9035
        iconData.width = metrics.defaultIconWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9036
        iconData.height = metrics.defaultIconHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9037
        iconData.className = "timeline-event-icon-default";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9038
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9039
        iconData.width = evt.getProperty("iconWidth") || metrics.customIconWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9040
        iconData.height = evt.getProperty("iconHeight") || metrics.customIconHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9041
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9042
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9043
    var labelData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9044
        text:       evt.getText(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9045
        color:      evt.getTextColor() || evt.getColor(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9046
        className:  evt.getClassName()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9047
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9048
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9049
    var result = this.paintTapeIconLabel(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9050
        evt.getStart(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9051
        commonData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9052
        null, // no tape data
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9053
        iconData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9054
        labelData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9055
        metrics,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9056
        theme,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9057
        highlightIndex
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9058
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9059
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9060
    var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9061
    var clickHandler = function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9062
        return self._onClickInstantEvent(result.iconElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9063
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9064
    SimileAjax.DOM.registerEvent(result.iconElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9065
    SimileAjax.DOM.registerEvent(result.labelElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9066
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9067
    this._eventIdToElmt[evt.getID()] = result.iconElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9068
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9069
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9070
Timeline.CompactEventPainter.prototype.paintCompositePreciseInstantEvents = function(events, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9071
    var evt = events[0];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9072
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9073
    var tooltips = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9074
    for (var i = 0; i < events.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9075
        tooltips.push(events[i].getProperty("tooltip") || events[i].getText());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9076
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9077
    var commonData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9078
        tooltip: tooltips.join("; ")
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9079
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9080
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9081
    var iconData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9082
        url: metrics.compositeIcon,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9083
        width: metrics.compositeIconWidth,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9084
        height: metrics.compositeIconHeight,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9085
        className: "timeline-event-icon-composite"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9086
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9087
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9088
    var labelData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9089
        text: String.substitute(this._params.compositeEventLabelTemplate, [ events.length ])
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9090
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9091
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9092
    var result = this.paintTapeIconLabel(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9093
        evt.getStart(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9094
        commonData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9095
        null, // no tape data
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9096
        iconData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9097
        labelData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9098
        metrics,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9099
        theme,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9100
        highlightIndex
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9101
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9102
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9103
    var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9104
    var clickHandler = function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9105
        return self._onClickMultiplePreciseInstantEvent(result.iconElmtData.elmt, domEvt, events);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9106
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9107
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9108
    SimileAjax.DOM.registerEvent(result.iconElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9109
    SimileAjax.DOM.registerEvent(result.labelElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9110
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9111
    for (var i = 0; i < events.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9112
        this._eventIdToElmt[events[i].getID()] = result.iconElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9113
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9114
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9115
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9116
Timeline.CompactEventPainter.prototype.paintStackedPreciseInstantEvents = function(events, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9117
    var limit = "limit" in this._params.stackConcurrentPreciseInstantEvents ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9118
        this._params.stackConcurrentPreciseInstantEvents.limit : 10;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9119
    var moreMessageTemplate = "moreMessageTemplate" in this._params.stackConcurrentPreciseInstantEvents ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9120
        this._params.stackConcurrentPreciseInstantEvents.moreMessageTemplate : "%0 More Events";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9121
    var showMoreMessage = limit <= events.length - 2; // We want at least 2 more events above the limit.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9122
                                                      // Otherwise we'd need the singular case of "1 More Event"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9123
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9124
    var band = this._band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9125
    var getPixelOffset = function(date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9126
        return Math.round(band.dateToPixelOffset(date));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9127
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9128
    var getIconData = function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9129
        var iconData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9130
            url: evt.getIcon()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9131
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9132
        if (iconData.url == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9133
            iconData.url = metrics.defaultStackIcon;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9134
            iconData.width = metrics.defaultStackIconWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9135
            iconData.height = metrics.defaultStackIconHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9136
            iconData.className = "timeline-event-icon-stack timeline-event-icon-default";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9137
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9138
            iconData.width = evt.getProperty("iconWidth") || metrics.customIconWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9139
            iconData.height = evt.getProperty("iconHeight") || metrics.customIconHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9140
            iconData.className = "timeline-event-icon-stack";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9141
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9142
        return iconData;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9143
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9144
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9145
    var firstIconData = getIconData(events[0]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9146
    var horizontalIncrement = 5;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9147
    var leftIconEdge = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9148
    var totalLabelWidth = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9149
    var totalLabelHeight = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9150
    var totalIconHeight = 0;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9151
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9152
    var records = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9153
    for (var i = 0; i < events.length && (!showMoreMessage || i < limit); i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9154
        var evt = events[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9155
        var text = evt.getText();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9156
        var iconData = getIconData(evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9157
        var labelSize = this._frc.computeSize(text);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9158
        var record = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9159
            text:       text,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9160
            iconData:   iconData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9161
            labelSize:  labelSize,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9162
            iconLeft:   firstIconData.width + i * horizontalIncrement - iconData.width
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9163
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9164
        record.labelLeft = firstIconData.width + i * horizontalIncrement + metrics.iconLabelGap;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9165
        record.top = totalLabelHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9166
        records.push(record);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9167
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9168
        leftIconEdge = Math.min(leftIconEdge, record.iconLeft);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9169
        totalLabelHeight += labelSize.height;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9170
        totalLabelWidth = Math.max(totalLabelWidth, record.labelLeft + labelSize.width);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9171
        totalIconHeight = Math.max(totalIconHeight, record.top + iconData.height);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9172
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9173
    if (showMoreMessage) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9174
        var moreMessage = String.substitute(moreMessageTemplate, [ events.length - limit ]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9175
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9176
        var moreMessageLabelSize = this._frc.computeSize(moreMessage);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9177
        var moreMessageLabelLeft = firstIconData.width + (limit - 1) * horizontalIncrement + metrics.iconLabelGap;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9178
        var moreMessageLabelTop = totalLabelHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9179
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9180
        totalLabelHeight += moreMessageLabelSize.height;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9181
        totalLabelWidth = Math.max(totalLabelWidth, moreMessageLabelLeft + moreMessageLabelSize.width);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9182
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9183
    totalLabelWidth += metrics.labelRightMargin;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9184
    totalLabelHeight += metrics.labelBottomMargin;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9185
    totalIconHeight += metrics.iconBottomMargin;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9186
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9187
    var anchorPixel = getPixelOffset(events[0].getStart());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9188
    var newTracks = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9189
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9190
    var trackCount = Math.ceil(Math.max(totalIconHeight, totalLabelHeight) / metrics.trackHeight);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9191
    var rightIconEdge = firstIconData.width + (events.length - 1) * horizontalIncrement;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9192
    for (var i = 0; i < trackCount; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9193
        newTracks.push({ start: leftIconEdge, end: rightIconEdge });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9194
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9195
    var labelTrackCount = Math.ceil(totalLabelHeight / metrics.trackHeight);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9196
    for (var i = 0; i < labelTrackCount; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9197
        var track = newTracks[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9198
        track.end = Math.max(track.end, totalLabelWidth);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9199
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9200
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9201
    var firstTrack = this._fitTracks(anchorPixel, newTracks);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9202
    var verticalPixelOffset = firstTrack * metrics.trackHeight + metrics.trackOffset;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9203
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9204
    var iconStackDiv = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9205
    iconStackDiv.className = 'timeline-event-icon-stack';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9206
    iconStackDiv.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9207
    iconStackDiv.style.overflow = "visible";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9208
    iconStackDiv.style.left = anchorPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9209
    iconStackDiv.style.top = verticalPixelOffset + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9210
    iconStackDiv.style.width = rightIconEdge + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9211
    iconStackDiv.style.height = totalIconHeight + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9212
    iconStackDiv.innerHTML = "<div style='position: relative'></div>";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9213
    this._eventLayer.appendChild(iconStackDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9214
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9215
    var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9216
    var onMouseOver = function(domEvt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9217
        try {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9218
            var n = parseInt(this.getAttribute("index"));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9219
            var childNodes = iconStackDiv.firstChild.childNodes;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9220
            for (var i = 0; i < childNodes.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9221
                var child = childNodes[i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9222
                if (i == n) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9223
                    child.style.zIndex = childNodes.length;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9224
                } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9225
                    child.style.zIndex = childNodes.length - i;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9226
                }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9227
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9228
        } catch (e) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9229
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9230
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9231
    var paintEvent = function(index) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9232
        var record = records[index];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9233
        var evt = events[index];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9234
        var tooltip = evt.getProperty("tooltip") || evt.getText();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9235
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9236
        var labelElmtData = self._paintEventLabel(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9237
            { tooltip: tooltip },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9238
            { text: record.text },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9239
            anchorPixel + record.labelLeft,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9240
            verticalPixelOffset + record.top,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9241
            record.labelSize.width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9242
            record.labelSize.height,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9243
            theme
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9244
        );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9245
        labelElmtData.elmt.setAttribute("index", index);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9246
        labelElmtData.elmt.onmouseover = onMouseOver;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9247
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9248
        var img = SimileAjax.Graphics.createTranslucentImage(record.iconData.url);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9249
        var iconDiv = self._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9250
        iconDiv.className = 'timeline-event-icon' + ("className" in record.iconData ? (" " + record.iconData.className) : "");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9251
        iconDiv.style.left = record.iconLeft + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9252
        iconDiv.style.top = record.top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9253
        iconDiv.style.zIndex = (records.length - index);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9254
        iconDiv.appendChild(img);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9255
        iconDiv.setAttribute("index", index);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9256
        iconDiv.onmouseover = onMouseOver;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9257
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9258
        iconStackDiv.firstChild.appendChild(iconDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9259
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9260
        var clickHandler = function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9261
            return self._onClickInstantEvent(labelElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9262
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9263
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9264
        SimileAjax.DOM.registerEvent(iconDiv, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9265
        SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9266
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9267
        self._eventIdToElmt[evt.getID()] = iconDiv;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9268
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9269
    for (var i = 0; i < records.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9270
        paintEvent(i);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9271
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9272
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9273
    if (showMoreMessage) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9274
        var moreEvents = events.slice(limit);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9275
        var moreMessageLabelElmtData = this._paintEventLabel(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9276
            { tooltip: moreMessage },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9277
            { text: moreMessage },
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9278
            anchorPixel + moreMessageLabelLeft,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9279
            verticalPixelOffset + moreMessageLabelTop,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9280
            moreMessageLabelSize.width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9281
            moreMessageLabelSize.height,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9282
            theme
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9283
        );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9284
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9285
        var moreMessageClickHandler = function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9286
            return self._onClickMultiplePreciseInstantEvent(moreMessageLabelElmtData.elmt, domEvt, moreEvents);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9287
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9288
        SimileAjax.DOM.registerEvent(moreMessageLabelElmtData.elmt, "mousedown", moreMessageClickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9289
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9290
        for (var i = 0; i < moreEvents.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9291
            this._eventIdToElmt[moreEvents[i].getID()] = moreMessageLabelElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9292
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9293
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9294
    //this._createHighlightDiv(highlightIndex, iconElmtData, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9295
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9296
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9297
Timeline.CompactEventPainter.prototype.paintImpreciseInstantEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9298
    var commonData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9299
        tooltip: evt.getProperty("tooltip") || evt.getText()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9300
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9301
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9302
    var tapeData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9303
        start:          evt.getStart(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9304
        end:            evt.getEnd(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9305
        latestStart:    evt.getLatestStart(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9306
        earliestEnd:    evt.getEarliestEnd(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9307
        isInstant:      true
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9308
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9309
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9310
    var iconData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9311
        url: evt.getIcon()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9312
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9313
    if (iconData.url == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9314
        iconData = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9315
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9316
        iconData.width = evt.getProperty("iconWidth") || metrics.customIconWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9317
        iconData.height = evt.getProperty("iconHeight") || metrics.customIconHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9318
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9319
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9320
    var labelData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9321
        text:       evt.getText(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9322
        color:      evt.getTextColor() || evt.getColor(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9323
        className:  evt.getClassName()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9324
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9325
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9326
    var result = this.paintTapeIconLabel(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9327
        evt.getStart(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9328
        commonData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9329
        tapeData, // no tape data
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9330
        iconData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9331
        labelData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9332
        metrics,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9333
        theme,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9334
        highlightIndex
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9335
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9336
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9337
    var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9338
    var clickHandler = iconData != null ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9339
        function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9340
            return self._onClickInstantEvent(result.iconElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9341
        } :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9342
        function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9343
            return self._onClickInstantEvent(result.labelElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9344
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9345
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9346
    SimileAjax.DOM.registerEvent(result.labelElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9347
    SimileAjax.DOM.registerEvent(result.impreciseTapeElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9348
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9349
    if (iconData != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9350
        SimileAjax.DOM.registerEvent(result.iconElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9351
        this._eventIdToElmt[evt.getID()] = result.iconElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9352
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9353
        this._eventIdToElmt[evt.getID()] = result.labelElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9354
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9355
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9356
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9357
Timeline.CompactEventPainter.prototype.paintPreciseDurationEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9358
    var commonData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9359
        tooltip: evt.getProperty("tooltip") || evt.getText()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9360
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9361
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9362
    var tapeData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9363
        start:          evt.getStart(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9364
        end:            evt.getEnd(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9365
        isInstant:      false
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9366
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9367
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9368
    var iconData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9369
        url: evt.getIcon()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9370
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9371
    if (iconData.url == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9372
        iconData = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9373
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9374
        iconData.width = evt.getProperty("iconWidth") || metrics.customIconWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9375
        iconData.height = evt.getProperty("iconHeight") || metrics.customIconHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9376
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9377
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9378
    var labelData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9379
        text:       evt.getText(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9380
        color:      evt.getTextColor() || evt.getColor(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9381
        className:  evt.getClassName()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9382
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9383
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9384
    var result = this.paintTapeIconLabel(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9385
        evt.getLatestStart(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9386
        commonData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9387
        tapeData, // no tape data
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9388
        iconData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9389
        labelData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9390
        metrics,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9391
        theme,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9392
        highlightIndex
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9393
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9394
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9395
    var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9396
    var clickHandler = iconData != null ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9397
        function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9398
            return self._onClickInstantEvent(result.iconElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9399
        } :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9400
        function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9401
            return self._onClickInstantEvent(result.labelElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9402
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9403
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9404
    SimileAjax.DOM.registerEvent(result.labelElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9405
    SimileAjax.DOM.registerEvent(result.tapeElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9406
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9407
    if (iconData != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9408
        SimileAjax.DOM.registerEvent(result.iconElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9409
        this._eventIdToElmt[evt.getID()] = result.iconElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9410
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9411
        this._eventIdToElmt[evt.getID()] = result.labelElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9412
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9413
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9414
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9415
Timeline.CompactEventPainter.prototype.paintImpreciseDurationEvent = function(evt, metrics, theme, highlightIndex) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9416
    var commonData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9417
        tooltip: evt.getProperty("tooltip") || evt.getText()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9418
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9419
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9420
    var tapeData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9421
        start:          evt.getStart(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9422
        end:            evt.getEnd(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9423
        latestStart:    evt.getLatestStart(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9424
        earliestEnd:    evt.getEarliestEnd(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9425
        isInstant:      false
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9426
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9427
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9428
    var iconData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9429
        url: evt.getIcon()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9430
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9431
    if (iconData.url == null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9432
        iconData = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9433
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9434
        iconData.width = evt.getProperty("iconWidth") || metrics.customIconWidth;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9435
        iconData.height = evt.getProperty("iconHeight") || metrics.customIconHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9436
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9437
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9438
    var labelData = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9439
        text:       evt.getText(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9440
        color:      evt.getTextColor() || evt.getColor(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9441
        className:  evt.getClassName()
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9442
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9443
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9444
    var result = this.paintTapeIconLabel(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9445
        evt.getLatestStart(),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9446
        commonData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9447
        tapeData, // no tape data
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9448
        iconData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9449
        labelData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9450
        metrics,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9451
        theme,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9452
        highlightIndex
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9453
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9454
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9455
    var self = this;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9456
    var clickHandler = iconData != null ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9457
        function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9458
            return self._onClickInstantEvent(result.iconElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9459
        } :
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9460
        function(elmt, domEvt, target) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9461
            return self._onClickInstantEvent(result.labelElmtData.elmt, domEvt, evt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9462
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9463
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9464
    SimileAjax.DOM.registerEvent(result.labelElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9465
    SimileAjax.DOM.registerEvent(result.tapeElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9466
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9467
    if (iconData != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9468
        SimileAjax.DOM.registerEvent(result.iconElmtData.elmt, "mousedown", clickHandler);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9469
        this._eventIdToElmt[evt.getID()] = result.iconElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9470
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9471
        this._eventIdToElmt[evt.getID()] = result.labelElmtData.elmt;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9472
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9473
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9474
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9475
Timeline.CompactEventPainter.prototype.paintTapeIconLabel = function(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9476
    anchorDate,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9477
    commonData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9478
    tapeData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9479
    iconData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9480
    labelData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9481
    metrics,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9482
    theme,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9483
    highlightIndex
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9484
) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9485
    var band = this._band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9486
    var getPixelOffset = function(date) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9487
        return Math.round(band.dateToPixelOffset(date));
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9488
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9489
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9490
    var anchorPixel = getPixelOffset(anchorDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9491
    var newTracks = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9492
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9493
    var tapeHeightOccupied = 0;         // how many pixels (vertically) the tape occupies, including bottom margin
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9494
    var tapeTrackCount = 0;             // how many tracks the tape takes up, usually just 1
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9495
    var tapeLastTrackExtraSpace = 0;    // on the last track that the tape occupies, how many pixels are left (for icon and label to occupy as well)
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9496
    if (tapeData != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9497
        tapeHeightOccupied = metrics.tapeHeight + metrics.tapeBottomMargin;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9498
        tapeTrackCount = Math.ceil(metrics.tapeHeight / metrics.trackHeight);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9499
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9500
        var tapeEndPixelOffset = getPixelOffset(tapeData.end) - anchorPixel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9501
        var tapeStartPixelOffset = getPixelOffset(tapeData.start) - anchorPixel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9502
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9503
        for (var t = 0; t < tapeTrackCount; t++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9504
            newTracks.push({ start: tapeStartPixelOffset, end: tapeEndPixelOffset });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9505
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9506
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9507
        tapeLastTrackExtraSpace = metrics.trackHeight - (tapeHeightOccupied % metrics.tapeHeight);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9508
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9509
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9510
    var iconStartPixelOffset = 0;        // where the icon starts compared to the anchor pixel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9511
                                         // this can be negative if the icon is center-aligned around the anchor
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9512
    var iconHorizontalSpaceOccupied = 0; // how many pixels the icon take up from the anchor pixel,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9513
                                         // including the gap between the icon and the label
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9514
    if (iconData != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9515
        if ("iconAlign" in iconData && iconData.iconAlign == "center") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9516
            iconStartPixelOffset = -Math.floor(iconData.width / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9517
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9518
        iconHorizontalSpaceOccupied = iconStartPixelOffset + iconData.width + metrics.iconLabelGap;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9519
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9520
        if (tapeTrackCount > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9521
            newTracks[tapeTrackCount - 1].end = Math.max(newTracks[tapeTrackCount - 1].end, iconHorizontalSpaceOccupied);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9522
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9523
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9524
        var iconHeight = iconData.height + metrics.iconBottomMargin + tapeLastTrackExtraSpace;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9525
        while (iconHeight > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9526
            newTracks.push({ start: iconStartPixelOffset, end: iconHorizontalSpaceOccupied });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9527
            iconHeight -= metrics.trackHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9528
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9529
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9530
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9531
    var text = labelData.text;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9532
    var labelSize = this._frc.computeSize(text);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9533
    var labelHeight = labelSize.height + metrics.labelBottomMargin + tapeLastTrackExtraSpace;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9534
    var labelEndPixelOffset = iconHorizontalSpaceOccupied + labelSize.width + metrics.labelRightMargin;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9535
    if (tapeTrackCount > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9536
        newTracks[tapeTrackCount - 1].end = Math.max(newTracks[tapeTrackCount - 1].end, labelEndPixelOffset);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9537
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9538
    for (var i = 0; labelHeight > 0; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9539
        if (tapeTrackCount + i < newTracks.length) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9540
            var track = newTracks[tapeTrackCount + i];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9541
            track.end = labelEndPixelOffset;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9542
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9543
            newTracks.push({ start: 0, end: labelEndPixelOffset });
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9544
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9545
        labelHeight -= metrics.trackHeight;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9546
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9547
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9548
    /*
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9549
     *  Try to fit the new track on top of the existing tracks, then
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9550
     *  render the various elements.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9551
     */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9552
    var firstTrack = this._fitTracks(anchorPixel, newTracks);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9553
    var verticalPixelOffset = firstTrack * metrics.trackHeight + metrics.trackOffset;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9554
    var result = {};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9555
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9556
    result.labelElmtData = this._paintEventLabel(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9557
        commonData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9558
        labelData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9559
        anchorPixel + iconHorizontalSpaceOccupied,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9560
        verticalPixelOffset + tapeHeightOccupied,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9561
        labelSize.width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9562
        labelSize.height,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9563
        theme
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9564
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9565
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9566
    if (tapeData != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9567
        if ("latestStart" in tapeData || "earliestEnd" in tapeData) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9568
            result.impreciseTapeElmtData = this._paintEventTape(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9569
                commonData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9570
                tapeData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9571
                metrics.tapeHeight,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9572
                verticalPixelOffset,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9573
                getPixelOffset(tapeData.start),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9574
                getPixelOffset(tapeData.end),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9575
                theme.event.duration.impreciseColor,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9576
                theme.event.duration.impreciseOpacity,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9577
                metrics,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9578
                theme
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9579
            );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9580
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9581
        if (!tapeData.isInstant && "start" in tapeData && "end" in tapeData) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9582
            result.tapeElmtData = this._paintEventTape(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9583
                commonData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9584
                tapeData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9585
                metrics.tapeHeight,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9586
                verticalPixelOffset,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9587
                anchorPixel,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9588
                getPixelOffset("earliestEnd" in tapeData ? tapeData.earliestEnd : tapeData.end),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9589
                tapeData.color,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9590
                100,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9591
                metrics,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9592
                theme
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9593
            );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9594
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9595
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9596
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9597
    if (iconData != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9598
        result.iconElmtData = this._paintEventIcon(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9599
            commonData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9600
            iconData,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9601
            verticalPixelOffset + tapeHeightOccupied,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9602
            anchorPixel + iconStartPixelOffset,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9603
            metrics,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9604
            theme
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9605
        );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9606
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9607
    //this._createHighlightDiv(highlightIndex, iconElmtData, theme);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9608
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9609
    return result;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9610
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9611
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9612
Timeline.CompactEventPainter.prototype._fitTracks = function(anchorPixel, newTracks) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9613
    var firstTrack;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9614
    for (firstTrack = 0; firstTrack < this._tracks.length; firstTrack++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9615
        var fit = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9616
        for (var j = 0; j < newTracks.length && (firstTrack + j) < this._tracks.length; j++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9617
            var existingTrack = this._tracks[firstTrack + j];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9618
            var newTrack = newTracks[j];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9619
            if (anchorPixel + newTrack.start < existingTrack) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9620
                fit = false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9621
                break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9622
            }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9623
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9624
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9625
        if (fit) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9626
            break;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9627
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9628
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9629
    for (var i = 0; i < newTracks.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9630
        this._tracks[firstTrack + i] = anchorPixel + newTracks[i].end;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9631
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9632
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9633
    return firstTrack;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9634
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9635
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9636
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9637
Timeline.CompactEventPainter.prototype._paintEventIcon = function(commonData, iconData, top, left, metrics, theme) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9638
    var img = SimileAjax.Graphics.createTranslucentImage(iconData.url);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9639
    var iconDiv = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9640
    iconDiv.className = 'timeline-event-icon' + ("className" in iconData ? (" " + iconData.className) : "");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9641
    iconDiv.style.left = left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9642
    iconDiv.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9643
    iconDiv.appendChild(img);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9644
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9645
    if ("tooltip" in commonData && typeof commonData.tooltip == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9646
        iconDiv.title = commonData.tooltip;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9647
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9648
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9649
    this._eventLayer.appendChild(iconDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9650
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9651
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9652
        left:   left,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9653
        top:    top,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9654
        width:  metrics.iconWidth,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9655
        height: metrics.iconHeight,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9656
        elmt:   iconDiv
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9657
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9658
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9659
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9660
Timeline.CompactEventPainter.prototype._paintEventLabel = function(commonData, labelData, left, top, width, height, theme) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9661
    var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9662
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9663
    var labelDiv = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9664
    labelDiv.className = 'timeline-event-label';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9665
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9666
    labelDiv.style.left = left + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9667
    labelDiv.style.width = (width + 1) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9668
    labelDiv.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9669
    labelDiv.innerHTML = labelData.text;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9670
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9671
    if ("tooltip" in commonData && typeof commonData.tooltip == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9672
        labelDiv.title = commonData.tooltip;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9673
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9674
    if ("color" in labelData && typeof labelData.color == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9675
        labelDiv.style.color = labelData.color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9676
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9677
    if ("className" in labelData && typeof labelData.className == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9678
        labelDiv.className += ' ' + labelData.className;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9679
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9680
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9681
    this._eventLayer.appendChild(labelDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9682
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9683
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9684
        left:   left,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9685
        top:    top,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9686
        width:  width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9687
        height: height,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9688
        elmt:   labelDiv
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9689
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9690
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9691
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9692
Timeline.CompactEventPainter.prototype._paintEventTape = function(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9693
    commonData, tapeData, height, top, startPixel, endPixel, color, opacity, metrics, theme) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9694
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9695
    var width = endPixel - startPixel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9696
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9697
    var tapeDiv = this._timeline.getDocument().createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9698
    tapeDiv.className = "timeline-event-tape"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9699
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9700
    tapeDiv.style.left = startPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9701
    tapeDiv.style.top = top + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9702
    tapeDiv.style.width = width + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9703
    tapeDiv.style.height = height + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9704
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9705
    if ("tooltip" in commonData && typeof commonData.tooltip == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9706
        tapeDiv.title = commonData.tooltip;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9707
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9708
    if (color != null && typeof tapeData.color == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9709
        tapeDiv.style.backgroundColor = color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9710
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9711
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9712
    if ("backgroundImage" in tapeData && typeof tapeData.backgroundImage == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9713
        tapeDiv.style.backgroundImage = "url(" + backgroundImage + ")";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9714
        tapeDiv.style.backgroundRepeat =
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9715
            ("backgroundRepeat" in tapeData && typeof tapeData.backgroundRepeat == "string")
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9716
                ? tapeData.backgroundRepeat : 'repeat';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9717
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9718
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9719
    SimileAjax.Graphics.setOpacity(tapeDiv, opacity);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9720
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9721
    if ("className" in tapeData && typeof tapeData.className == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9722
        tapeDiv.className += ' ' + tapeData.className;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9723
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9724
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9725
    this._eventLayer.appendChild(tapeDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9726
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9727
    return {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9728
        left:   startPixel,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9729
        top:    top,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9730
        width:  width,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9731
        height: height,
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9732
        elmt:   tapeDiv
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9733
    };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9734
}
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9735
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9736
Timeline.CompactEventPainter.prototype._createHighlightDiv = function(highlightIndex, dimensions, theme) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9737
    if (highlightIndex >= 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9738
        var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9739
        var eventTheme = theme.event;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9740
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9741
        var color = eventTheme.highlightColors[Math.min(highlightIndex, eventTheme.highlightColors.length - 1)];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9742
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9743
        var div = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9744
        div.style.position = "absolute";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9745
        div.style.overflow = "hidden";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9746
        div.style.left =    (dimensions.left - 2) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9747
        div.style.width =   (dimensions.width + 4) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9748
        div.style.top =     (dimensions.top - 2) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9749
        div.style.height =  (dimensions.height + 4) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9750
//        div.style.background = color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9751
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9752
        this._highlightLayer.appendChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9753
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9754
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9755
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9756
Timeline.CompactEventPainter.prototype._onClickMultiplePreciseInstantEvent = function(icon, domEvt, events) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9757
    var c = SimileAjax.DOM.getPageCoordinates(icon);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9758
    this._showBubble(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9759
        c.left + Math.ceil(icon.offsetWidth / 2),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9760
        c.top + Math.ceil(icon.offsetHeight / 2),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9761
        events
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9762
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9763
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9764
    var ids = [];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9765
    for (var i = 0; i < events.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9766
        ids.push(events[i].getID());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9767
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9768
    this._fireOnSelect(ids);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9769
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9770
    domEvt.cancelBubble = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9771
    SimileAjax.DOM.cancelEvent(domEvt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9772
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9773
    return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9774
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9775
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9776
Timeline.CompactEventPainter.prototype._onClickInstantEvent = function(icon, domEvt, evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9777
    var c = SimileAjax.DOM.getPageCoordinates(icon);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9778
    this._showBubble(
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9779
        c.left + Math.ceil(icon.offsetWidth / 2),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9780
        c.top + Math.ceil(icon.offsetHeight / 2),
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9781
        [evt]
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9782
    );
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9783
    this._fireOnSelect([evt.getID()]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9784
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9785
    domEvt.cancelBubble = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9786
    SimileAjax.DOM.cancelEvent(domEvt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9787
    return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9788
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9789
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9790
Timeline.CompactEventPainter.prototype._onClickDurationEvent = function(target, domEvt, evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9791
    if ("pageX" in domEvt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9792
        var x = domEvt.pageX;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9793
        var y = domEvt.pageY;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9794
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9795
        var c = SimileAjax.DOM.getPageCoordinates(target);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9796
        var x = domEvt.offsetX + c.left;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9797
        var y = domEvt.offsetY + c.top;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9798
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9799
    this._showBubble(x, y, [evt]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9800
    this._fireOnSelect([evt.getID()]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9801
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9802
    domEvt.cancelBubble = true;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9803
    SimileAjax.DOM.cancelEvent(domEvt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9804
    return false;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9805
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9806
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9807
Timeline.CompactEventPainter.prototype.showBubble = function(evt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9808
    var elmt = this._eventIdToElmt[evt.getID()];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9809
    if (elmt) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9810
        var c = SimileAjax.DOM.getPageCoordinates(elmt);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9811
        this._showBubble(c.left + elmt.offsetWidth / 2, c.top + elmt.offsetHeight / 2, [evt]);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9812
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9813
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9814
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9815
Timeline.CompactEventPainter.prototype._showBubble = function(x, y, evts) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9816
    var div = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9817
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9818
    evts = ("fillInfoBubble" in evts) ? [evts] : evts;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9819
    for (var i = 0; i < evts.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9820
        var div2 = document.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9821
        div.appendChild(div2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9822
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9823
        evts[i].fillInfoBubble(div2, this._params.theme, this._band.getLabeller());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9824
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9825
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9826
    SimileAjax.WindowManager.cancelPopups();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9827
    SimileAjax.Graphics.createBubbleForContentAndPoint(div, x, y, this._params.theme.event.bubble.width);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9828
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9829
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9830
Timeline.CompactEventPainter.prototype._fireOnSelect = function(eventIDs) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9831
    for (var i = 0; i < this._onSelectListeners.length; i++) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9832
        this._onSelectListeners[i](eventIDs);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9833
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9834
};
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  9835
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9836
 *  Span Highlight Decorator
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  9837
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9838
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9839
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9840
Timeline.SpanHighlightDecorator = function(params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9841
    // When evaluating params, test against null. Not "p in params". Testing against
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9842
    // null enables caller to explicitly request the default. Testing against "in" means
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9843
    // that the param has to be ommitted to get the default.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9844
    this._unit = params.unit != null ? params.unit : SimileAjax.NativeDateUnit;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9845
    this._startDate = (typeof params.startDate == "string") ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9846
        this._unit.parseFromObject(params.startDate) : params.startDate;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9847
    this._endDate = (typeof params.endDate == "string") ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9848
        this._unit.parseFromObject(params.endDate) : params.endDate;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9849
    this._startLabel = params.startLabel != null ? params.startLabel : ""; // not null!
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9850
    this._endLabel   = params.endLabel   != null ? params.endLabel   : ""; // not null!
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9851
    this._color = params.color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9852
    this._cssClass = params.cssClass != null ? params.cssClass : null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9853
    this._opacity = params.opacity != null ? params.opacity : 100;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9854
         // Default z is 10, behind everything but background grid.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9855
         // If inFront, then place just behind events, in front of everything else
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9856
    this._zIndex = (params.inFront != null && params.inFront) ? 113 : 10;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9857
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9858
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9859
Timeline.SpanHighlightDecorator.prototype.initialize = function(band, timeline) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9860
    this._band = band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9861
    this._timeline = timeline;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9862
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9863
    this._layerDiv = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9864
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9865
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9866
Timeline.SpanHighlightDecorator.prototype.paint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9867
    if (this._layerDiv != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9868
        this._band.removeLayerDiv(this._layerDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9869
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9870
    this._layerDiv = this._band.createLayerDiv(this._zIndex);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9871
    this._layerDiv.setAttribute("name", "span-highlight-decorator"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9872
    this._layerDiv.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9873
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9874
    var minDate = this._band.getMinDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9875
    var maxDate = this._band.getMaxDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9876
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9877
    if (this._unit.compare(this._startDate, maxDate) < 0 &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9878
        this._unit.compare(this._endDate, minDate) > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9879
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9880
        minDate = this._unit.later(minDate, this._startDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9881
        maxDate = this._unit.earlier(maxDate, this._endDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9882
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9883
        var minPixel = this._band.dateToPixelOffset(minDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9884
        var maxPixel = this._band.dateToPixelOffset(maxDate);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9885
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9886
        var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9887
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9888
        var createTable = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9889
            var table = doc.createElement("table");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9890
            table.insertRow(0).insertCell(0);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9891
            return table;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9892
        };
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9893
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9894
        var div = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9895
        div.className='timeline-highlight-decorator'
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9896
        if(this._cssClass) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9897
        	  div.className += ' ' + this._cssClass;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9898
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9899
        if(this._color != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9900
        	  div.style.backgroundColor = this._color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9901
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9902
        if (this._opacity < 100) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9903
            SimileAjax.Graphics.setOpacity(div, this._opacity);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9904
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9905
        this._layerDiv.appendChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9906
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9907
        var tableStartLabel = createTable();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9908
        tableStartLabel.className = 'timeline-highlight-label timeline-highlight-label-start'
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9909
        var tdStart =  tableStartLabel.rows[0].cells[0]
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9910
        tdStart.innerHTML = this._startLabel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9911
        if (this._cssClass) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9912
        	  tdStart.className = 'label_' + this._cssClass;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9913
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9914
        this._layerDiv.appendChild(tableStartLabel);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9915
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9916
        var tableEndLabel = createTable();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9917
        tableEndLabel.className = 'timeline-highlight-label timeline-highlight-label-end'
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9918
        var tdEnd = tableEndLabel.rows[0].cells[0]
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9919
        tdEnd.innerHTML = this._endLabel;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9920
        if (this._cssClass) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9921
        	   tdEnd.className = 'label_' + this._cssClass;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9922
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9923
        this._layerDiv.appendChild(tableEndLabel);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9924
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9925
        if (this._timeline.isHorizontal()){
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9926
            div.style.left = minPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9927
            div.style.width = (maxPixel - minPixel) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9928
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9929
            tableStartLabel.style.right = (this._band.getTotalViewLength() - minPixel) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9930
            tableStartLabel.style.width = (this._startLabel.length) + "em";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9931
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9932
            tableEndLabel.style.left = maxPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9933
            tableEndLabel.style.width = (this._endLabel.length) + "em";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9934
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9935
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9936
            div.style.top = minPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9937
            div.style.height = (maxPixel - minPixel) + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9938
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9939
            tableStartLabel.style.bottom = minPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9940
            tableStartLabel.style.height = "1.5px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9941
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9942
            tableEndLabel.style.top = maxPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9943
            tableEndLabel.style.height = "1.5px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9944
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9945
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9946
    this._layerDiv.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9947
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9948
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9949
Timeline.SpanHighlightDecorator.prototype.softPaint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9950
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9951
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  9952
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9953
 *  Point Highlight Decorator
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
  9954
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9955
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9956
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9957
Timeline.PointHighlightDecorator = function(params) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9958
    this._unit = params.unit != null ? params.unit : SimileAjax.NativeDateUnit;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9959
    this._date = (typeof params.date == "string") ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9960
        this._unit.parseFromObject(params.date) : params.date;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9961
    this._width = params.width != null ? params.width : 10;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9962
      // Since the width is used to calculate placements (see minPixel, below), we
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9963
      // specify width here, not in css.
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9964
    this._color = params.color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9965
    this._cssClass = params.cssClass != null ? params.cssClass : '';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9966
    this._opacity = params.opacity != null ? params.opacity : 100;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9967
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9968
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9969
Timeline.PointHighlightDecorator.prototype.initialize = function(band, timeline) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9970
    this._band = band;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9971
    this._timeline = timeline;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9972
    this._layerDiv = null;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9973
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9974
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9975
Timeline.PointHighlightDecorator.prototype.paint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9976
    if (this._layerDiv != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9977
        this._band.removeLayerDiv(this._layerDiv);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9978
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9979
    this._layerDiv = this._band.createLayerDiv(10);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9980
    this._layerDiv.setAttribute("name", "span-highlight-decorator"); // for debugging
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9981
    this._layerDiv.style.display = "none";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9982
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9983
    var minDate = this._band.getMinDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9984
    var maxDate = this._band.getMaxDate();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9985
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9986
    if (this._unit.compare(this._date, maxDate) < 0 &&
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9987
        this._unit.compare(this._date, minDate) > 0) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9988
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9989
        var pixel = this._band.dateToPixelOffset(this._date);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9990
        var minPixel = pixel - Math.round(this._width / 2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9991
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9992
        var doc = this._timeline.getDocument();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9993
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9994
        var div = doc.createElement("div");
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9995
        div.className='timeline-highlight-point-decorator';
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9996
        div.className += ' ' + this._cssClass;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9997
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9998
        if(this._color != null) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
  9999
        	  div.style.backgroundColor = this._color;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10000
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10001
        if (this._opacity < 100) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10002
            SimileAjax.Graphics.setOpacity(div, this._opacity);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10003
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10004
        this._layerDiv.appendChild(div);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10005
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10006
        if (this._timeline.isHorizontal()) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10007
            div.style.left = minPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10008
            div.style.width = this._width;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10009
        } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10010
            div.style.top = minPixel + "px";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10011
            div.style.height = this._width;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10012
        }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10013
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10014
    this._layerDiv.style.display = "block";
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10015
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10016
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10017
Timeline.PointHighlightDecorator.prototype.softPaint = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10018
};
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
 10019
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10020
 *  Default Unit
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
 10021
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10022
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10023
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10024
Timeline.NativeDateUnit = new Object();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10025
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10026
Timeline.NativeDateUnit.createLabeller = function(locale, timeZone) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10027
    return new Timeline.GregorianDateLabeller(locale, timeZone);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10028
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10029
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10030
Timeline.NativeDateUnit.makeDefaultValue = function() {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10031
    return new Date();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10032
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10033
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10034
Timeline.NativeDateUnit.cloneValue = function(v) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10035
    return new Date(v.getTime());
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10036
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10037
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10038
Timeline.NativeDateUnit.getParser = function(format) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10039
    if (typeof format == "string") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10040
        format = format.toLowerCase();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10041
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10042
    return (format == "iso8601" || format == "iso 8601") ?
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10043
        Timeline.DateTime.parseIso8601DateTime : 
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10044
        Timeline.DateTime.parseGregorianDateTime;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10045
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10046
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10047
Timeline.NativeDateUnit.parseFromObject = function(o) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10048
    return Timeline.DateTime.parseGregorianDateTime(o);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10049
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10050
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10051
Timeline.NativeDateUnit.toNumber = function(v) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10052
    return v.getTime();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10053
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10054
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10055
Timeline.NativeDateUnit.fromNumber = function(n) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10056
    return new Date(n);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10057
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10058
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10059
Timeline.NativeDateUnit.compare = function(v1, v2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10060
    var n1, n2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10061
    if (typeof v1 == "object") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10062
        n1 = v1.getTime();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10063
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10064
        n1 = Number(v1);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10065
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10066
    if (typeof v2 == "object") {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10067
        n2 = v2.getTime();
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10068
    } else {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10069
        n2 = Number(v2);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10070
    }
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10071
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10072
    return n1 - n2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10073
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10074
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10075
Timeline.NativeDateUnit.earlier = function(v1, v2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10076
    return Timeline.NativeDateUnit.compare(v1, v2) < 0 ? v1 : v2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10077
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10078
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10079
Timeline.NativeDateUnit.later = function(v1, v2) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10080
    return Timeline.NativeDateUnit.compare(v1, v2) > 0 ? v1 : v2;
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10081
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10082
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10083
Timeline.NativeDateUnit.change = function(v, n) {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10084
    return new Date(v.getTime() + n);
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10085
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10086
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
 10087
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10088
 *  Common localization strings
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
 10089
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10090
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10091
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10092
Timeline.strings["fr"] = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10093
    wikiLinkLabel:  "Discute"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10094
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10095
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
 10096
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10097
 *  Localization of labellers.js
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
 10098
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10099
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10100
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10101
Timeline.GregorianDateLabeller.monthNames["fr"] = [
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10102
    "jan", "fev", "mar", "avr", "mai", "jui", "jui", "aou", "sep", "oct", "nov", "dec"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10103
];
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
 10104
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10105
 *  Common localization strings
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
 10106
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10107
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10108
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10109
Timeline.strings["en"] = {
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10110
    wikiLinkLabel:  "Discuss"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10111
};
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10112
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
 10113
/*
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10114
 *  Localization of labellers.js
5470
fb004819cab4 [book] add generated js documentation to cw book
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 2097
diff changeset
 10115
 *
1156
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10116
 */
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10117
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10118
Timeline.GregorianDateLabeller.monthNames["en"] = [
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10119
    "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10120
];
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10121
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10122
Timeline.GregorianDateLabeller.dayNames["en"] = [
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10123
    "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
4b920f836567 [javascript] new timeline bundle
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 68
diff changeset
 10124
];