add4bd3184415e1a0b2102a25889491050cd97b5
[exim-website.git] / templates / web / doc / chapter.js
1 // Warnings about reading old version of documentation
2 (function ($) {
3     if( $.grep( document.cookie.split(/\s*;\s*/), function(a){return a === 'old_version_warning_removed=true' ? true : false }).length === 0 ){
4         $('#old_version_warning')
5             .show()
6             .find('span.closebar a')
7                 .click(function(e){
8                     $('#old_version_warning').remove();
9                     document.cookie="old_version_warning_removed=true";
10                     e.preventDefault();
11                 });
12     }
13 })(jQuery);
14
15 // Sidebar table of contents
16 (function ($) {
17
18     var click_func = function (e) {
19         e.stopPropagation();
20         if ($('#toc').data('opened')) {
21             $('#toc > *').animate({
22                 left: '-=' + $('#toc > ul').width() + 'px'
23             }, 'fast');
24             $('#toc').removeData('opened');
25         } else {
26             $('#toc > *').animate({
27                 left: '+=' + $('#toc > ul').width() + 'px'
28             }, 'fast');
29             $('#toc').data('opened', 1);
30         }
31     };
32
33     $('body').click(function () {
34         if( $('#toc').data('opened') ) $('#toc > img').mousedown();
35     });
36
37     var type = document.location.pathname.match(/\/doc\/html\/spec_html\/filter/) ? 'filter' : 'spec';
38
39     // Get the relevant table of contents
40     $.get(type === 'spec' ? 'index_toc.xml' : 'filter_toc.xml', function (xml) {
41
42         // Remove the main list from the DOM for performance
43         var $ul = $('#toc > ul').remove();
44
45         // Traverse chapters
46         var chapter_id = 0;
47         $(xml).find('c').each(function () {
48             ++chapter_id;
49             var chapter_title = $(this).children('t').text();
50             var chapter_url = $(this).children('u').text();
51
52             var chapter_li = $('<li/>').append(
53             $('<a/>').attr({
54                 href: chapter_url,
55                 title: chapter_title
56             }).text(chapter_id + '. ' + chapter_title), $('<ul/>').hide()).appendTo($ul);
57         });
58
59         $('#toc img').fadeIn('slow', function () {
60             // Add the main list back to the DOM
61             $ul.removeClass('hidden').css('visibility', 'hidden').appendTo('#toc').css('left', '-' + $ul.width() + 'px').css('visibility', 'visible');
62             $('#toc > img').mousedown(click_func);
63             $('#toc > ul').click(click_func);
64             $('#toc, #toc a').click(function (e) {
65                 e.stopPropagation()
66             });
67         });
68     });
69 })(jQuery);