Sync API with GLib GDir head
[gnome.introspection-doc-generator] / docs / resources / page.js
1 //<script type="text/javascript">
2 /* -- IE kludge as usual! */
3 if (!Array.prototype.indexOf)
4 {
5   Array.prototype.indexOf = function(elt /*, from*/)
6   {
7     var len = this.length;
8
9     var from = Number(arguments[1]) || 0;
10     from = (from < 0)
11          ? Math.ceil(from)
12          : Math.floor(from);
13     if (from < 0)
14       from += len;
15
16     for (; from < len; from++)
17     {
18       if (from in this &&
19           this[from] === elt)
20         return from;
21     }
22     return -1;
23   };
24 }
25
26
27
28 RooDocsPage = {
29     
30     isIE: function() {
31         var ua = navigator.userAgent.toLowerCase();
32         return ua.indexOf("msie") > -1;
33         
34     },
35     
36     
37     onload : function()
38     {
39         //console.log("loading");
40         
41         this.addEvent(document,'click', function(e) {
42             var ev = e || window.event;
43             var t = ev.target || ev.srcElement;
44             //console.log(t);
45             return RooDocsPage.clicked(t);
46             
47         });
48         
49         
50         
51     },
52     addEvent: function(el, eventName, fn)
53     {
54         
55         if (window.addEventListener) {
56             capture = false;
57             el.addEventListener(eventName, fn, (capture));
58             return;
59         } 
60         if (window.attachEvent) {
61             el.attachEvent("on" + eventName, fn);
62             return;
63          
64         }
65     },
66     clicked : function(t)
67     {
68         
69         
70         var classAr = t.className.split(' ');
71         //console.log(classAr)
72         if ((t.nodeName == 'a') && (classAr.indexOf('exi') < 0) && (classAr.indexOf('micon') < 0)) {
73             // link clicked...
74             return false;
75            
76         }
77             
78            
79         
80         
81         if (classAr.indexOf('exi') > -1 || classAr.indexOf('micon') > -1) {
82             
83             var tr = t;
84             //console.log(tr.parentNode);
85             while (tr.parentNode) {
86                 ///console.log(tr.nodeName);
87                 if (tr.nodeName.toUpperCase() =='TR') {
88                     break;
89                 }
90                 tr = tr.parentNode;
91             }
92             if (tr.nodeName.toUpperCase() != 'TR') { // no tr!
93                 return false;
94             }
95             //console.log(tr.className)
96             if (tr.className.match(/expandable/)) {
97                 
98                 if (!/expanded/.test(tr.className)) {
99                     
100                     tr.className += " expanded";
101                     
102                     //this.loadComments(tr);
103                     
104                   //  console.log("ADDED:"+ tr.className);
105                 } else {
106                     tr.className = tr.className.replace(/ expanded/,'');
107                     //console.log("REMOVED:"+ tr.className);
108                 }
109             }
110             return true;
111             
112             
113             
114         }
115         return false;
116     },
117     
118     getAttributeNS : function(d,ns,name) {
119         if (this.isIE()) {
120             // ie uses attribute stuff...
121             var type = typeof d[ns+":"+name];
122             if(type != 'undefined' && type != 'unknown'){
123                 return d[ns+":"+name];
124             }
125             return d[name];
126             
127         } 
128         return d.getAttributeNS(ns, name) || d.getAttribute(ns+":"+name) || d.getAttribute(name) || d[name];
129     }
130     
131 }
132
133
134  /*
135 this.preview.getEl().on('click', function(e, target)
136         {
137             //console.log("click pressed?");
138             
139             if(target = e.getTarget('a:not(.exi)', 3)) {
140                 var cls = Ext.fly(target).getAttributeNS('roo', 'cls');
141                 e.stopEvent();
142                 if(cls){
143                     var member = Ext.fly(target).getAttributeNS('roo', 'member');
144                     //this.loadClass(target.href, cls, member);
145                     
146                     if (/^src\//.test(cls)) {
147                         cls = cls.replace(/.js$/, ''); // get rid of .js for source links..
148                     }
149                     
150                     
151                     MainBody.loadPage("symbols/"+ cls +".html");
152                     return;
153                 }
154                 if(target.className == 'inner-link'){ // go to #
155                     this.getActiveTab().scrollToSection(target.href.split('#')[1]);
156                     return;
157                 }
158                 window.open(target.href);
159                 
160                 return; // no more...
161             }
162             if(target = e.getTarget('.micon', 2)){
163                 
164                 e.stopEvent();
165                 var tr = Ext.fly(target.parentNode);
166                 if(tr.hasClass('expandable')){
167                     tr.toggleClass('expanded');
168                 }
169             }
170           
171         });
172 */