src/cm/media/js/lib/yui/yui3.0.0/assets/syntax.js
author raph
Mon, 23 Nov 2009 15:14:29 +0100
changeset 0 40c8f766c9b8
permissions -rw-r--r--
import from internal svn r 4007
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
if (YUI && yuiConfig) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
    YUI(yuiConfig).use('node', 'event-mouseenter', 'later', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
        var items = Y.all('.yui-syntax-highlight'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
            openWindow = function(node, print) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
                var n = Y.one('#' + node.get('id') + '-plain'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
                    code = n.get('value'), win = null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
                    h = n.get('offsetHeight');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
                code = code.replace(/</g, '&lt;').replace(/>/g, '&gt;');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
                win = window.open('', "codeview", "status=0,scrollbars=1,width=600,height=400,menubar=0,toolbar=0,directories=0"); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
                win.document.body.innerHTML = '<pre>' + code + '</pre>';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
                if (print) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
                    Y.later(1000, win, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
                        win.focus();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
                        win.print();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
                        win.focus();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
                    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
            handleClick = function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
                if (e.target.get('tagName').toLowerCase() == 'a') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
                    var type = e.target.get('innerHTML').replace(/ /g, '');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
                    switch (type) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
                        case 'print':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
                            openWindow(e.target.get('parentNode.parentNode'), true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
                        case 'viewplain':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
                            openWindow(e.target.get('parentNode.parentNode'));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
                        case 'togglelinenumbers':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
                            e.target.get('parentNode.parentNode').toggleClass('yui-syntax-highlight-linenumbers');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
                        case 'copy':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
                e.halt();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
        items.each(function(i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
            //var header = Y.Node.create('<div class="syn-header hidden"><a href="#">view plain</a> | <a href="#">print</a> | <a href="#">copy</a></div>');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
            var header = Y.Node.create('<div class="syn-header hidden"><a href="#">view plain</a> | <a href="#">print</a> | <a href="#">toggle line numbers</a></div>');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
            header.on('click', handleClick);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
            i.insertBefore(header, i.get('firstChild'));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
            i.on('mouseenter', function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
                header.removeClass('hidden');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
            });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
            i.on('mouseleave', function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
                header.addClass('hidden');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
            });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
        });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
}