1function toggle (elt) 2{ 3 if (elt == null) 4 return; 5 6 var eltLink = elt.firstChild; 7 if (eltLink != null && eltLink.className == 't') // toggle 8 { 9 var ich = elt.className.indexOf ('_'); 10 if (ich < 0) 11 { 12 eltLink.src = 'tp.gif'; 13 elt.className += '_'; 14 } 15 else 16 { 17 eltLink.src = 'tm.gif'; 18 elt.className = elt.className.slice (0, ich); 19 } 20 } 21} 22 23function setView (elt, fView) 24{ 25 var eltLink = elt.firstChild; 26 if (eltLink != null && eltLink.className == 't') // toggle 27 { 28 var ich = elt.className.indexOf ('_'); 29 if (ich < 0 && !fView) 30 { 31 eltLink.src = 'tp.gif'; 32 elt.className += '_'; 33 } 34 else if (ich >= 0 && fView) 35 { 36 eltLink.src = 'tm.gif'; 37 elt.className = elt.className.slice (0, ich); 38 } 39 } 40} 41 42function trimSrc (strSrc) 43{ 44 return strSrc.slice (strSrc.lastIndexOf ('/') + 1, strSrc.lastIndexOf ('.')); 45} 46 47function getChildrenByTagName (elt, strTag) 48{ 49 strTag = strTag.toLowerCase (); 50 var rgChildren = new Array (); 51 var eltChild = elt.firstChild; 52 while (eltChild) 53 { 54 if (eltChild.tagName && eltChild.tagName.toLowerCase () == strTag) 55 rgChildren.push (eltChild); 56 eltChild = eltChild.nextSibling; 57 } 58 return rgChildren; 59} 60 61function viewAll (elt, dictTypes) 62{ 63 var fView = false; 64 var rgImages = getChildrenByTagName (elt, 'IMG'); 65 var cImages = rgImages.length; 66 for (var iImage = 0; iImage < cImages; iImage++) 67 { 68 var strImage = trimSrc (rgImages [iImage].src); 69 if (dictTypes [strImage]) 70 { 71 fView = true; 72 break; 73 } 74 } 75 var rgElts = getChildrenByTagName (elt, 'DIV'); 76 var cElts = rgElts.length; 77 if (cElts != 0) 78 { 79 var iElt; 80 for (iElt = 0; iElt < cElts; iElt ++) 81 fView |= viewAll (rgElts [iElt], dictTypes); 82 } 83 elt.style.display = fView ? '' : 'none'; 84 return fView; 85} 86 87function getView (elt) 88{ 89 var eltLink = elt.firstChild; 90 if (eltLink != null && eltLink.className == 't') // toggle 91 { 92 var ich = elt.className.indexOf ('_'); 93 if (ich < 0) 94 return true; 95 } 96 return false; 97} 98 99function getParentDiv (elt) 100{ 101 if (elt) 102 { 103 do 104 { 105 elt = elt.parentNode; 106 } 107 while (elt && elt.tagName != 'DIV'); 108 } 109 110 return elt; 111} 112 113function getName (elt) 114{ 115 var rgSpans = getChildrenByTagName (elt, 'SPAN'); 116 for (var iSpan = 0; iSpan < rgSpans.length; iSpan ++) 117 { 118 var span = rgSpans [iSpan]; 119 if (span.className == 'l') // label 120 { 121 if (span.innerText) 122 return span.innerText; 123 else 124 return span.firstChild.nodeValue; 125 } 126 } 127 return null; 128} 129 130function clickHandler (evt) 131{ 132 var elt; 133 if (document.layers) 134 elt = evt.taget; 135 else if (window.event && window.event.srcElement) 136 { 137 elt = window.event.srcElement; 138 evt = window.event; 139 } 140 else if (evt && evt.stopPropagation) 141 elt = evt.target; 142 143 if (!elt.className && elt.parentNode) 144 elt = elt.parentNode; 145 146 if (elt.className == 'l') // label 147 { 148 var strName; 149 150 eltDiv = getParentDiv (elt); 151 var strEltClass = eltDiv.className; 152 if (strEltClass.charAt (strEltClass.length - 1) == '_') 153 strEltClass = strEltClass.slice (0, strEltClass.length - 1); 154 strName = getName (eltDiv); 155 156 if (strEltClass == 'f') // Function 157 { 158 var strFilename = elt.nextSibling; 159 if (strFilename && strFilename.innerText) 160 { 161 var strRoot = 'http://svn.reactos.org/svn/reactos/trunk/reactos/'; 162 var strExtra = '?view=markup'; 163 window.open (strRoot + strFilename.innerText + strExtra, 'SVN'); 164 } 165 } 166 } 167 else 168 { 169 if (elt.parentNode && elt.parentNode.className == 't') // toggle 170 elt = elt.parentNode; 171 else if (elt.className != 't') // toggle 172 return; 173 174 while (elt != null && elt.tagName != 'DIV') 175 elt = elt.parentNode; 176 177 if (evt.shiftKey) 178 { 179 var rgElts = getChildrenByTagName (elt, 'DIV'); 180 var cElts = rgElts.length; 181 if (cElts != 0) 182 { 183 var fView = false; 184 var iElt; 185 for (iElt = 0; iElt < cElts; iElt ++) 186 { 187 if (getView (rgElts [iElt])) 188 { 189 fView = true; 190 break; 191 } 192 } 193 for (iElt = 0; iElt < cElts; iElt ++) 194 { 195 setView (rgElts [iElt], !fView); 196 } 197 } 198 } 199 else if (evt.ctrlKey) 200 { 201 setView (elt, true); 202 var eltParent = getParentDiv (elt); 203 while (eltParent) 204 { 205 var rgSiblings = getChildrenByTagName (eltParent, 'DIV'); 206 var cSiblings = rgSiblings.length; 207 for (var iSibling = 0; iSibling < cSiblings; iSibling++) 208 { 209 var eltSibling = rgSiblings [iSibling]; 210 if (eltSibling != elt) 211 { 212 setView (eltSibling, false); 213 } 214 } 215 elt = eltParent; 216 eltParent = getParentDiv (elt); 217 } 218 } 219 else 220 toggle (elt); 221 } 222 223 return false; 224} 225 226function filterTree () 227{ 228 var eltImplemented = document.getElementById ('implemented'); 229 var eltUnimplemented = document.getElementById ('unimplemented'); 230 231 var dictTypes = new Object (); 232 if (eltImplemented.checked) 233 dictTypes ['i'] = true; 234 if (eltUnimplemented.checked) 235 dictTypes ['u'] = true; 236 237 viewAll (document.getElementById ('ROOT'), dictTypes); 238} 239 240function selectImplemented () 241{ 242 toggleFilter ('implemented'); 243} 244 245function selectUnimplemented () 246{ 247 toggleFilter ('unimplemented'); 248} 249 250function toggleFilter (strFilter) 251{ 252 var eltImplemented = document.getElementById ('implemented'); 253 var eltUnimplemented = document.getElementById ('unimplemented'); 254 255 var eltToggle = document.getElementById (strFilter); 256 if (window && window.event && window.event.shiftKey) 257 { 258 eltImplemented.checked = eltUnimplemented.checked; 259 eltUnimplemented.checked = true; 260 } 261 else 262 if (!eltUnimplemented.checked && !eltImplemented.checked) 263 { 264 eltImplemented.checked = eltUnimplemented.checked = true; 265 eltToggle.checked = false; 266 } 267 filterTree (); 268} 269 270function onLoad () 271{ 272 var eltImplemented = document.getElementById ('implemented'); 273 var eltUnimplemented = document.getElementById ('unimplemented'); 274 eltImplemented.checked = eltUnimplemented.checked = true; 275} 276 277if (document.layers) 278{ 279 document.captureEvents (Event.MOUSEUP); 280 document.onmouseup = clickHandler; 281} 282else if (document.attachEvent) 283{ 284 document.attachEvent('onclick', clickHandler); 285} 286else if (document.addEventListener) 287{ 288 document.addEventListener('click', clickHandler, false); 289} 290else 291 document.onclick = clickHandler; 292