6 var eltLink = elt.firstChild;
7 if (eltLink != null && eltLink.className == 't') // toggle
9 var ich = elt.className.indexOf ('_');
12 eltLink.src = 'cm/tp.gif';
17 eltLink.src = 'cm/tm.gif';
18 elt.className = elt.className.slice (0, ich);
23 function setView (elt, fView)
25 var eltLink = elt.firstChild;
26 if (eltLink != null && eltLink.className == 't') // toggle
28 var ich = elt.className.indexOf ('_');
29 if (ich < 0 && !fView)
31 eltLink.src = 'cm/tp.gif';
34 else if (ich >= 0 && fView)
36 eltLink.src = 'cm/tm.gif';
37 elt.className = elt.className.slice (0, ich);
42 function trimSrc (strSrc)
44 return strSrc.slice (strSrc.lastIndexOf ('/') + 1, strSrc.lastIndexOf ('.'));
47 function getChildrenByTagName (elt, strTag)
49 strTag = strTag.toLowerCase ();
50 var rgChildren = new Array ();
51 var eltChild = elt.firstChild;
54 if (eltChild.tagName && eltChild.tagName.toLowerCase () == strTag)
55 rgChildren.push (eltChild);
56 eltChild = eltChild.nextSibling;
61 function viewAll (elt, dictTypes)
64 var rgElts = getChildrenByTagName (elt, 'DIV');
65 var cElts = rgElts.length;
68 var rgImages = getChildrenByTagName (elt, 'IMG');
69 var cImages = rgImages.length;
70 for (var iImage = 0; iImage < cImages; iImage++)
72 var image = rgImages [iImage];
73 var strImage = trimSrc (rgImages [iImage].src);
74 if (dictTypes [strImage])
84 for (iElt = 0; iElt < cElts; iElt ++)
85 fView |= viewAll (rgElts [iElt], dictTypes);
87 elt.style.display = fView ? '' : 'none';
91 function getView (elt)
93 var eltLink = elt.firstChild;
94 if (eltLink != null && eltLink.className == 't') // toggle
96 var ich = elt.className.indexOf ('_');
103 function getParentDiv (elt)
109 elt = elt.parentNode;
111 while (elt && elt.tagName != 'DIV');
117 function getName (elt)
119 var rgSpans = getChildrenByTagName (elt, 'SPAN');
120 for (var iSpan = 0; iSpan < rgSpans.length; iSpan ++)
122 var span = rgSpans [iSpan];
123 if (span.className == 'l') // label
126 return span.innerText;
128 return span.firstChild.nodeValue;
134 function clickHandler (evt)
139 else if (window.event && window.event.srcElement)
141 elt = window.event.srcElement;
144 else if (evt && evt.stopPropagation)
147 if (!elt.className && elt.parentNode)
148 elt = elt.parentNode;
150 if (elt.className == 'l') // label
155 elt = getParentDiv (elt);
156 if (elt.className == 'm' || // method
157 elt.className == 'p' || // property
158 elt.className == 'e' || // event
159 elt.className == 'x' || // constructor
160 elt.className == 'f') // field
162 strField = getName (elt).toLowerCase ();
163 var match = strField.match ( /[A-Z0-9_]*/i );
165 strField = match [0];
166 elt = getParentDiv (elt);
167 elt = getParentDiv (elt);
169 if (elt.className == 'c' || // class
170 elt.className == 's' || // struct
171 elt.className == 'en') // enum
173 strClass = getName (elt).toLowerCase () + 'class';
174 elt = getParentDiv (elt);
176 else if (elt.className == 'd') // delegate
178 strClass = getName (elt).toLowerCase () + 'eventhandler';
179 elt = getParentDiv (elt);
181 if (elt.className == 'n') // namespace
183 var strNamespace = getName (elt).toLowerCase ().replace ('.', '');
185 strNamespace += strClass;
187 strNamespace += strField;
188 if (strClass || strField)
189 strNamespace += 'topic';
191 window.open ('http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrf' + strNamespace + '.asp', 'MSDN');
196 if (elt.parentNode && elt.parentNode.className == 't') // toggle
197 elt = elt.parentNode;
198 else if (elt.className != 't') // toggle
201 while (elt != null && elt.tagName != 'DIV')
202 elt = elt.parentNode;
206 var rgElts = getChildrenByTagName (elt, 'DIV');
207 var cElts = rgElts.length;
212 for (iElt = 0; iElt < cElts; iElt ++)
214 if (getView (rgElts [iElt]))
220 for (iElt = 0; iElt < cElts; iElt ++)
222 setView (rgElts [iElt], !fView);
226 else if (evt.ctrlKey)
229 var eltParent = getParentDiv (elt);
232 var rgSiblings = getChildrenByTagName (eltParent, 'DIV');
233 var cSiblings = rgSiblings.length;
234 for (var iSibling = 0; iSibling < cSiblings; iSibling++)
236 var eltSibling = rgSiblings [iSibling];
237 if (eltSibling != elt)
239 setView (eltSibling, false);
243 eltParent = getParentDiv (elt);
253 function filterTree ()
255 var eltMissing = document.getElementById ('missing');
256 var eltTodo = document.getElementById ('todo');
258 var dictTypes = new Object ();
259 if (eltMissing.checked)
260 dictTypes ['sm'] = true;
262 dictTypes ['st'] = true;
263 dictTypes ['sc'] = true;
265 viewAll (document.getElementById ('ROOT'), dictTypes);
268 function selectMissing ()
270 var eltMissing = document.getElementById ('missing');
271 var eltTodo = document.getElementById ('todo');
272 if (!eltTodo.checked && !eltMissing.checked)
273 eltTodo.checked = true;
277 function selectTodo ()
279 var eltMissing = document.getElementById ('missing');
280 var eltTodo = document.getElementById ('todo');
281 if (!eltTodo.checked && !eltMissing.checked)
282 eltMissing.checked = true;
288 var eltMissing = document.getElementById ('missing');
289 var eltTodo = document.getElementById ('todo');
290 eltMissing.checked = true;
291 eltTodo.checked = true;
296 document.captureEvents (Event.MOUSEUP);
297 document.onmouseup = clickHandler;
299 else if (document.attachEvent)
301 document.attachEvent('onclick', clickHandler);
303 else if (document.addEventListener)
305 document.addEventListener('click', clickHandler, false);
308 document.onclick = clickHandler;