1 | window.onload=LoadPage;
|
---|
2 | window.onunload=Window_Unload;
|
---|
3 | //window.onresize=ResizeWindow;
|
---|
4 | window.onbeforeprint = set_to_print;
|
---|
5 | window.onafterprint = reset_form;
|
---|
6 |
|
---|
7 | var scrollPos = 0;
|
---|
8 |
|
---|
9 | var inheritedMembers;
|
---|
10 | var protectedMembers;
|
---|
11 | var netcfMembersOnly;
|
---|
12 | var netXnaMembersOnly;
|
---|
13 |
|
---|
14 | // Initialize array of section states
|
---|
15 |
|
---|
16 | var sectionStates = new Array();
|
---|
17 | var sectionStatesInitialized = false;
|
---|
18 |
|
---|
19 | //Hide sample source in select element
|
---|
20 | function HideSelect()
|
---|
21 | {
|
---|
22 | var selectTags = document.getElementsByTagName("SELECT");
|
---|
23 | var spanEles = document.getElementsByTagName("span");
|
---|
24 | var i = 10;
|
---|
25 | var m;
|
---|
26 |
|
---|
27 | if (selectTags.length != null || selectTags.length >0)
|
---|
28 | {
|
---|
29 | for (n=0; n<selectTags.length; n++)
|
---|
30 | {
|
---|
31 | var lan = selectTags(n).getAttribute("id").substr("10");
|
---|
32 | //hide the first select that is on
|
---|
33 | switch (lan.toLowerCase())
|
---|
34 | {
|
---|
35 | case "visualbasic":
|
---|
36 | //alert(lan);
|
---|
37 | for (m=0; m<spanEles.length; m++)
|
---|
38 | {
|
---|
39 | if (spanEles[m].getAttribute("codeLanguage") == "VisualBasic" && spanEles[m].style.display != "none" && n <i)
|
---|
40 | i = n;
|
---|
41 | }
|
---|
42 | break;
|
---|
43 | case "visualbasicdeclaration":
|
---|
44 | for (m=0; m<spanEles.length; m++)
|
---|
45 | {
|
---|
46 | if (spanEles[m].getAttribute("codeLanguage") == "VisualBasicDeclaration" && spanEles[m].style.display != "none" && n < i)
|
---|
47 | i = n;
|
---|
48 | }
|
---|
49 | break;
|
---|
50 | case "visualbasicusage":
|
---|
51 | //alert(lan);
|
---|
52 | for (m=0; m<spanEles.length; m++)
|
---|
53 | {
|
---|
54 | if (spanEles[m].getAttribute("codeLanguage") == "VisualBasicUsage" && spanEles[m].style.display != "none" && n <i)
|
---|
55 | i = n;
|
---|
56 | }
|
---|
57 | break;
|
---|
58 | case "csharp":
|
---|
59 | for (m=0; m<spanEles.length; m++)
|
---|
60 | {
|
---|
61 | if (spanEles[m].getAttribute("codeLanguage") == "CSharp" && spanEles[m].style.display != "none" && n < i)
|
---|
62 | i = n;
|
---|
63 | }
|
---|
64 | break;
|
---|
65 | case "managedcplusplus":
|
---|
66 | for (m=0; m<spanEles.length; m++)
|
---|
67 | {
|
---|
68 | if (spanEles[m].getAttribute("codeLanguage") == "ManagedCPlusPlus" && spanEles[m].style.display != "none" && n < i)
|
---|
69 | i = n;
|
---|
70 | }
|
---|
71 | break;
|
---|
72 | case "jsharp":
|
---|
73 | for (m=0; m<spanEles.length; m++)
|
---|
74 | {
|
---|
75 | if (spanEles[m].getAttribute("codeLanguage") == "JSharp" && spanEles[m].style.display != "none" && n < i)
|
---|
76 | i = n;
|
---|
77 | }
|
---|
78 | break;
|
---|
79 | case "jscript":
|
---|
80 | for (m=0; m<spanEles.length; m++)
|
---|
81 | {
|
---|
82 | if (spanEles[m].getAttribute("codeLanguage") == "JScript" && spanEles[m].style.display != "none" && n < i)
|
---|
83 | i = n;
|
---|
84 | }
|
---|
85 | break;
|
---|
86 | case "xaml":
|
---|
87 | //alert(lan);
|
---|
88 | for (m=0; m<spanEles.length; m++)
|
---|
89 | {
|
---|
90 | if (spanEles[m].getAttribute("codeLanguage") == "XAML" && spanEles[m].style.display != "none" && n <i)
|
---|
91 | i = n;
|
---|
92 | }
|
---|
93 | break;
|
---|
94 | case "javascript":
|
---|
95 | //alert(lan);
|
---|
96 | for (m=0; m<spanEles.length; m++)
|
---|
97 | {
|
---|
98 | if (spanEles[m].getAttribute("codeLanguage") == "JavaScript" && spanEles[m].style.display != "none" && n <i)
|
---|
99 | i = n;
|
---|
100 | }
|
---|
101 | break;
|
---|
102 | }
|
---|
103 | }
|
---|
104 | if (i != 10)
|
---|
105 | selectTags(i).style.visibility = "hidden";
|
---|
106 | }
|
---|
107 | else{ alert("Not found!");}
|
---|
108 | }
|
---|
109 |
|
---|
110 | function UnHideSelect()
|
---|
111 | {
|
---|
112 | var selectTags = document.getElementsByTagName("SELECT");
|
---|
113 | var n;
|
---|
114 |
|
---|
115 | //un-hide all the select sections
|
---|
116 | if (selectTags.length != null || selectTags.length >0)
|
---|
117 | {
|
---|
118 | for (n=0; n<selectTags.length; n++)
|
---|
119 | selectTags(n).style.visibility = "visible";
|
---|
120 | }
|
---|
121 | }
|
---|
122 |
|
---|
123 | function InitSectionStates()
|
---|
124 | {
|
---|
125 | sectionStatesInitialized = true;
|
---|
126 | if (globals == null) globals = GetGlobals();
|
---|
127 | // SectionStates has the format:
|
---|
128 | //
|
---|
129 | // firstSectionId:state;secondSectionId:state;thirdSectionId:state; ... ;lastSectionId:state
|
---|
130 | //
|
---|
131 | // where state is either "e" (expanded) or "c" (collapsed)
|
---|
132 |
|
---|
133 | // get the SectionStates from the previous topics
|
---|
134 | var states = Load("SectionStates");
|
---|
135 |
|
---|
136 | var start = 0;
|
---|
137 | var end;
|
---|
138 | var section;
|
---|
139 | var state;
|
---|
140 | var allCollapsed = false;
|
---|
141 | // copy the previous section states to the sectionStates array for the current page
|
---|
142 | if (states != null && states != "")
|
---|
143 | {
|
---|
144 | allCollapsed = true;
|
---|
145 | while (start < states.length)
|
---|
146 | {
|
---|
147 | end = states.indexOf(":", start);
|
---|
148 |
|
---|
149 | section = states.substring(start, end);
|
---|
150 |
|
---|
151 | start = end + 1;
|
---|
152 | end = states.indexOf(";", start);
|
---|
153 | if (end == -1) end = states.length;
|
---|
154 | state = states.substring(start, end);
|
---|
155 | sectionStates[section] = state;
|
---|
156 | allCollapsed = allCollapsed && (state == "c");
|
---|
157 | start = end + 1;
|
---|
158 | }
|
---|
159 | }
|
---|
160 |
|
---|
161 | // now set the state for any section ids in the current document that weren't in previous
|
---|
162 | var imgElements = document.getElementsByName("toggleSwitch");
|
---|
163 | var i;
|
---|
164 | for (i = 0; i < imgElements.length; ++i)
|
---|
165 | sectionStates[imgElements[i].id] = GetInitialSectionState(imgElements[i].id, allCollapsed);
|
---|
166 | }
|
---|
167 |
|
---|
168 | function GetInitialSectionState(itemId, allCollapsed)
|
---|
169 | {
|
---|
170 | // if the global state is "allCollapsed", set all section states to collapsed
|
---|
171 | if (allCollapsed) return "c";
|
---|
172 |
|
---|
173 | // generic <section> node ids begin with "sectionToggle", so the same id can refer to different sections in different topics
|
---|
174 | // we don't want to persist their state; set it to expanded
|
---|
175 | if (itemId.indexOf("sectionToggle", 0) == 0) return "e";
|
---|
176 |
|
---|
177 | // the default state for new section ids is expanded
|
---|
178 | if (sectionStates[itemId] == null) return "e";
|
---|
179 |
|
---|
180 | // otherwise, persist the passed in state
|
---|
181 | return sectionStates[itemId];
|
---|
182 | }
|
---|
183 |
|
---|
184 | var noReentry = false;
|
---|
185 |
|
---|
186 | function OnLoadImage(eventObj)
|
---|
187 | {
|
---|
188 | if (noReentry) return;
|
---|
189 |
|
---|
190 | if (!sectionStatesInitialized)
|
---|
191 | InitSectionStates();
|
---|
192 |
|
---|
193 | var elem;
|
---|
194 | if(document.all) elem = eventObj.srcElement;
|
---|
195 | else elem = eventObj.target;
|
---|
196 |
|
---|
197 | if ((sectionStates[elem.id] == "e"))
|
---|
198 | ExpandSection(elem);
|
---|
199 | else
|
---|
200 | CollapseSection(elem);
|
---|
201 | }
|
---|
202 |
|
---|
203 | /*
|
---|
204 | **********
|
---|
205 | ********** Begin
|
---|
206 | **********
|
---|
207 | */
|
---|
208 |
|
---|
209 | var docSettings;
|
---|
210 |
|
---|
211 | function LoadPage()
|
---|
212 | {
|
---|
213 | // If not initialized, grab the DTE.Globals object
|
---|
214 | if (globals == null)
|
---|
215 | globals = GetGlobals();
|
---|
216 |
|
---|
217 | // docSettings has settings for the current document,
|
---|
218 | // which include persistent and non-persistent keys for checkbox filters and expand/collapse section states
|
---|
219 | // persistKeys is an array of the checkbox ids to persist
|
---|
220 | if (docSettings == null)
|
---|
221 | {
|
---|
222 | docSettings = new Array();
|
---|
223 | persistKeys = new Array();
|
---|
224 | }
|
---|
225 |
|
---|
226 | if (!sectionStatesInitialized)
|
---|
227 | InitSectionStates();
|
---|
228 |
|
---|
229 | var imgElements = document.getElementsByName("toggleSwitch");
|
---|
230 |
|
---|
231 | for (i = 0; i < imgElements.length; i++)
|
---|
232 | {
|
---|
233 | if ((sectionStates[imgElements[i].id] == "e"))
|
---|
234 | ExpandSection(imgElements[i]);
|
---|
235 | else
|
---|
236 | CollapseSection(imgElements[i]);
|
---|
237 | }
|
---|
238 |
|
---|
239 | SetCollapseAll();
|
---|
240 |
|
---|
241 | // split screen
|
---|
242 | var screen = new SplitScreen('header', 'mainSection');
|
---|
243 |
|
---|
244 | // init devlang filter checkboxes
|
---|
245 | SetupDevlangsFilter();
|
---|
246 |
|
---|
247 | // init memberlist filter checkboxes for protected, inherited, etc
|
---|
248 | SetupMemberOptionsFilter();
|
---|
249 |
|
---|
250 | // init memberlist platforms filter checkboxes, e.g. .Net Framework, CompactFramework, XNA, Silverlight, etc.
|
---|
251 | SetupMemberFrameworksFilter();
|
---|
252 |
|
---|
253 | var mainSection = document.getElementById("mainSection");
|
---|
254 |
|
---|
255 | // vs70.js did this to allow up/down arrow scrolling, I think
|
---|
256 | try { mainSection.setActive(); } catch(e) { }
|
---|
257 |
|
---|
258 | //set the scroll position
|
---|
259 | try{mainSection.scrollTop = scrollPos;}
|
---|
260 | catch(e){}
|
---|
261 | }
|
---|
262 |
|
---|
263 | function Window_Unload()
|
---|
264 | {
|
---|
265 | // for each key in persistArray, write the key/value pair to globals
|
---|
266 | for (var i = 0; i < persistKeys.length; i++)
|
---|
267 | Save(persistKeys[i],docSettings[persistKeys[i]]);
|
---|
268 |
|
---|
269 | // save the expand/collapse section states
|
---|
270 | SaveSections();
|
---|
271 | }
|
---|
272 |
|
---|
273 | function set_to_print()
|
---|
274 | {
|
---|
275 | //breaks out of divs to print
|
---|
276 | var i;
|
---|
277 |
|
---|
278 | if (window.text)document.all.text.style.height = "auto";
|
---|
279 |
|
---|
280 | for (i=0; i < document.all.length; i++)
|
---|
281 | {
|
---|
282 | if (document.all[i].tagName == "body")
|
---|
283 | {
|
---|
284 | document.all[i].scroll = "yes";
|
---|
285 | }
|
---|
286 | if (document.all[i].id == "header")
|
---|
287 | {
|
---|
288 | document.all[i].style.margin = "0px 0px 0px 0px";
|
---|
289 | document.all[i].style.width = "100%";
|
---|
290 | }
|
---|
291 | if (document.all[i].id == "mainSection")
|
---|
292 | {
|
---|
293 | document.all[i].style.overflow = "visible";
|
---|
294 | document.all[i].style.top = "5px";
|
---|
295 | document.all[i].style.width = "100%";
|
---|
296 | document.all[i].style.padding = "0px 10px 0px 30px";
|
---|
297 | }
|
---|
298 | }
|
---|
299 | }
|
---|
300 |
|
---|
301 | function reset_form()
|
---|
302 | {
|
---|
303 | //returns to the div nonscrolling region after print
|
---|
304 | document.location.reload();
|
---|
305 | }
|
---|
306 |
|
---|
307 | /*
|
---|
308 | **********
|
---|
309 | ********** End
|
---|
310 | **********
|
---|
311 | */
|
---|
312 |
|
---|
313 |
|
---|
314 | /*
|
---|
315 | **********
|
---|
316 | ********** Begin Language Filtering
|
---|
317 | **********
|
---|
318 | */
|
---|
319 |
|
---|
320 | var devlangsMenu;
|
---|
321 | var devlangsDropdown;
|
---|
322 | var memberOptionsMenu;
|
---|
323 | var memberOptionsDropdown;
|
---|
324 | var memberFrameworksMenu;
|
---|
325 | var memberFrameworksDropdown;
|
---|
326 | var dropdowns = new Array();
|
---|
327 |
|
---|
328 | // initialize the devlang filter dropdown menu
|
---|
329 | function SetupDevlangsFilter()
|
---|
330 | {
|
---|
331 | var divNode = document.getElementById('devlangsMenu');
|
---|
332 | if (divNode == null)
|
---|
333 | return;
|
---|
334 |
|
---|
335 | var checkboxNodes = divNode.getElementsByTagName("input");
|
---|
336 |
|
---|
337 | if (checkboxNodes.length == 1)
|
---|
338 | {
|
---|
339 | // only one checkbox, so we don't need a menu
|
---|
340 | // get the devlang and use it to display the correct devlang spans
|
---|
341 | // a one-checkbox setting like this is NOT persisted, nor is it set from the persisted globals
|
---|
342 | var checkboxData = checkboxNodes[0].getAttribute('data');
|
---|
343 | var dataSplits = checkboxData.split(',');
|
---|
344 | var devlang = "";
|
---|
345 | if (dataSplits.length > 1)
|
---|
346 | devlang = dataSplits[1];
|
---|
347 | styleSheetHandler(devlang);
|
---|
348 | }
|
---|
349 | else
|
---|
350 | {
|
---|
351 | // setup the dropdown menu
|
---|
352 | devlangsMenu = new CheckboxMenu("devlangsMenu", docSettings, persistKeys, globals);
|
---|
353 | devlangsDropdown = new Dropdown('devlangsDropdown', 'devlangsMenu');
|
---|
354 | dropdowns.push(devlangsDropdown);
|
---|
355 |
|
---|
356 | // update the label of the dropdown menu
|
---|
357 | SetDropdownMenuLabel(devlangsMenu, devlangsDropdown);
|
---|
358 |
|
---|
359 | // toggle the document's display docSettings
|
---|
360 | codeBlockHandler();
|
---|
361 | styleSheetHandler("");
|
---|
362 | }
|
---|
363 | }
|
---|
364 |
|
---|
365 |
|
---|
366 | // called onclick in a devlang filter checkbox
|
---|
367 | // tasks to perform at this event are:
|
---|
368 | // toggle the check state of the checkbox that was clicked
|
---|
369 | // update the user's devlang preference, based on devlang checkbox states
|
---|
370 | // update stylesheet based on user's devlang preference
|
---|
371 | // show/hide snippets/syntax based on user's devlang preference
|
---|
372 | //
|
---|
373 | function SetLanguage(checkbox)
|
---|
374 | {
|
---|
375 | // toggle the check state of the checkbox that was clicked
|
---|
376 | devlangsMenu.ToggleCheckState(checkbox.id);
|
---|
377 |
|
---|
378 | // update the label of the dropdown menu
|
---|
379 | SetDropdownMenuLabel(devlangsMenu, devlangsDropdown);
|
---|
380 |
|
---|
381 | // update the display of the document's items that are dependent on the devlang setting
|
---|
382 | codeBlockHandler();
|
---|
383 | styleSheetHandler("");
|
---|
384 |
|
---|
385 | }
|
---|
386 | /*
|
---|
387 | **********
|
---|
388 | ********** End Language Filtering
|
---|
389 | **********
|
---|
390 | */
|
---|
391 |
|
---|
392 |
|
---|
393 | /*
|
---|
394 | **********
|
---|
395 | ********** Begin Members Options Filtering
|
---|
396 | **********
|
---|
397 | */
|
---|
398 |
|
---|
399 | // initialize the memberlist dropdown menu for protected, inherited, etc
|
---|
400 | function SetupMemberOptionsFilter()
|
---|
401 | {
|
---|
402 | if (document.getElementById('memberOptionsMenu') != null) {
|
---|
403 | memberOptionsMenu = new CheckboxMenu("memberOptionsMenu", docSettings, persistKeys, globals);
|
---|
404 | memberOptionsDropdown = new Dropdown('memberOptionsDropdown', 'memberOptionsMenu');
|
---|
405 | dropdowns.push(memberOptionsDropdown);
|
---|
406 |
|
---|
407 | // update the label of the dropdown menu
|
---|
408 | SetDropdownMenuLabel(memberOptionsMenu, memberOptionsDropdown);
|
---|
409 |
|
---|
410 | // show/hide memberlist rows based on the current docSettings
|
---|
411 | memberlistHandler();
|
---|
412 | }
|
---|
413 | }
|
---|
414 |
|
---|
415 | function SetupMemberFrameworksFilter()
|
---|
416 | {
|
---|
417 | if (document.getElementById('memberFrameworksMenu') != null)
|
---|
418 | {
|
---|
419 | memberFrameworksMenu = new CheckboxMenu("memberFrameworksMenu", docSettings, persistKeys, globals);
|
---|
420 | memberFrameworksDropdown = new Dropdown('memberFrameworksDropdown', 'memberFrameworksMenu');
|
---|
421 | dropdowns.push(memberFrameworksDropdown);
|
---|
422 |
|
---|
423 | // update the label of the dropdown menu
|
---|
424 | SetDropdownMenuLabel(memberFrameworksMenu, memberFrameworksDropdown);
|
---|
425 |
|
---|
426 | // show/hide memberlist rows based on the current docSettings
|
---|
427 | memberlistHandler();
|
---|
428 | }
|
---|
429 | }
|
---|
430 |
|
---|
431 | function SetMemberOptions(checkbox, groupName)
|
---|
432 | {
|
---|
433 | var checkboxGroup = new Array();
|
---|
434 | if (groupName == "vis")
|
---|
435 | {
|
---|
436 | if (document.getElementById('PublicCheckbox') != null)
|
---|
437 | checkboxGroup.push('PublicCheckbox');
|
---|
438 | if (document.getElementById('ProtectedCheckbox') != null)
|
---|
439 | checkboxGroup.push('ProtectedCheckbox');
|
---|
440 | }
|
---|
441 | else if (groupName == "decl")
|
---|
442 | {
|
---|
443 | if (document.getElementById('DeclaredCheckbox') != null)
|
---|
444 | checkboxGroup.push('DeclaredCheckbox');
|
---|
445 | if (document.getElementById('InheritedCheckbox') != null)
|
---|
446 | checkboxGroup.push('InheritedCheckbox');
|
---|
447 | }
|
---|
448 |
|
---|
449 | // toggle the check state of the checkbox that was clicked
|
---|
450 | memberOptionsMenu.ToggleGroupCheckState(checkbox.id, checkboxGroup);
|
---|
451 |
|
---|
452 | // update the label of the dropdown menu
|
---|
453 | SetDropdownMenuLabel(memberOptionsMenu, memberOptionsDropdown);
|
---|
454 |
|
---|
455 | // update the display of the document's items that are dependent on the member options settings
|
---|
456 | memberlistHandler();
|
---|
457 | }
|
---|
458 |
|
---|
459 | function SetMemberFrameworks(checkbox)
|
---|
460 | {
|
---|
461 | // toggle the check state of the checkbox that was clicked
|
---|
462 | memberFrameworksMenu.ToggleCheckState(checkbox.id);
|
---|
463 |
|
---|
464 | // update the label of the dropdown menu
|
---|
465 | SetDropdownMenuLabel(memberFrameworksMenu, memberFrameworksDropdown);
|
---|
466 |
|
---|
467 | // update the display of the document's items that are dependent on the member platforms settings
|
---|
468 | memberlistHandler();
|
---|
469 | }
|
---|
470 |
|
---|
471 | function DisplayFilteredMembers()
|
---|
472 | {
|
---|
473 | var iAllMembers = document.getElementsByTagName("tr");
|
---|
474 | var i;
|
---|
475 |
|
---|
476 | for(i = 0; i < iAllMembers.length; ++i)
|
---|
477 | {
|
---|
478 | if (((iAllMembers[i].notSupportedOnXna == "true") && (netXnaMembersOnly == "on")) ||
|
---|
479 | ((iAllMembers[i].getAttribute("name") == "inheritedMember") && (inheritedMembers == "off")) ||
|
---|
480 | ((iAllMembers[i].getAttribute("notSupportedOn") == "netcf") && (netcfMembersOnly == "on")))
|
---|
481 | iAllMembers[i].style.display = "none";
|
---|
482 | else
|
---|
483 | iAllMembers[i].style.display = "";
|
---|
484 | }
|
---|
485 |
|
---|
486 | // protected members are in separate collapseable sections in vs2005, so expand or collapse the sections
|
---|
487 | ExpandCollapseProtectedMemberSections();
|
---|
488 | }
|
---|
489 |
|
---|
490 | function ExpandCollapseProtectedMemberSections()
|
---|
491 | {
|
---|
492 | var imgElements = document.getElementsByName("toggleSwitch");
|
---|
493 | var i;
|
---|
494 | // Family
|
---|
495 | for(i = 0; i < imgElements.length; ++i)
|
---|
496 | {
|
---|
497 | if(imgElements[i].id.indexOf("protected", 0) == 0)
|
---|
498 | {
|
---|
499 | if ((sectionStates[imgElements[i].id] == "e" && protectedMembers == "off") ||
|
---|
500 | (sectionStates[imgElements[i].id] == "c" && protectedMembers == "on"))
|
---|
501 | {
|
---|
502 | ExpandCollapse(imgElements[i]);
|
---|
503 | }
|
---|
504 | }
|
---|
505 | }
|
---|
506 | }
|
---|
507 |
|
---|
508 | /*
|
---|
509 | **********
|
---|
510 | ********** End Members Options Filtering
|
---|
511 | **********
|
---|
512 | */
|
---|
513 |
|
---|
514 |
|
---|
515 | /*
|
---|
516 | **********
|
---|
517 | ********** Begin Expand/Collapse
|
---|
518 | **********
|
---|
519 | */
|
---|
520 |
|
---|
521 | // expand or collapse a section
|
---|
522 | function ExpandCollapse(imageItem)
|
---|
523 | {
|
---|
524 | if (sectionStates[imageItem.id] == "e")
|
---|
525 | CollapseSection(imageItem);
|
---|
526 | else
|
---|
527 | ExpandSection(imageItem);
|
---|
528 |
|
---|
529 | SetCollapseAll();
|
---|
530 | }
|
---|
531 |
|
---|
532 | // expand or collapse all sections
|
---|
533 | function ExpandCollapseAll(imageItem)
|
---|
534 | {
|
---|
535 | var collapseAllImage = document.getElementById("collapseAllImage");
|
---|
536 | var expandAllImage = document.getElementById("expandAllImage");
|
---|
537 | if (imageItem == null || collapseAllImage == null || expandAllImage == null) return;
|
---|
538 | noReentry = true; // Prevent entry to OnLoadImage
|
---|
539 |
|
---|
540 | var imgElements = document.getElementsByName("toggleSwitch");
|
---|
541 | var i;
|
---|
542 | var collapseAll = (imageItem.src == collapseAllImage.src);
|
---|
543 | if (collapseAll)
|
---|
544 | {
|
---|
545 | imageItem.src = expandAllImage.src;
|
---|
546 | imageItem.alt = expandAllImage.alt;
|
---|
547 |
|
---|
548 | for (i = 0; i < imgElements.length; ++i)
|
---|
549 | {
|
---|
550 | CollapseSection(imgElements[i]);
|
---|
551 | }
|
---|
552 | }
|
---|
553 | else
|
---|
554 | {
|
---|
555 | imageItem.src = collapseAllImage.src;
|
---|
556 | imageItem.alt = collapseAllImage.alt;
|
---|
557 |
|
---|
558 | for (i = 0; i < imgElements.length; ++i)
|
---|
559 | {
|
---|
560 | ExpandSection(imgElements[i]);
|
---|
561 | }
|
---|
562 | }
|
---|
563 | SetAllSectionStates(collapseAll);
|
---|
564 | SetToggleAllLabel(collapseAll);
|
---|
565 |
|
---|
566 | noReentry = false;
|
---|
567 | }
|
---|
568 |
|
---|
569 | function ExpandCollapse_CheckKey(imageItem, eventObj)
|
---|
570 | {
|
---|
571 | if(eventObj.keyCode == 13)
|
---|
572 | ExpandCollapse(imageItem);
|
---|
573 | }
|
---|
574 |
|
---|
575 | function ExpandCollapseAll_CheckKey(imageItem, eventObj)
|
---|
576 | {
|
---|
577 | if(eventObj.keyCode == 13)
|
---|
578 | ExpandCollapseAll(imageItem);
|
---|
579 | }
|
---|
580 |
|
---|
581 | function SetAllSectionStates(collapsed)
|
---|
582 | {
|
---|
583 | for (var sectionId in sectionStates)
|
---|
584 | sectionStates[sectionId] = (collapsed) ? "c" : "e";
|
---|
585 | }
|
---|
586 |
|
---|
587 | function ExpandSection(imageItem)
|
---|
588 | {
|
---|
589 | noReentry = true; // Prevent re-entry to OnLoadImage
|
---|
590 | try
|
---|
591 | {
|
---|
592 | var collapseImage = document.getElementById("collapseImage");
|
---|
593 | imageItem.src = collapseImage.src;
|
---|
594 | imageItem.alt = collapseImage.alt;
|
---|
595 |
|
---|
596 | imageItem.parentNode.parentNode.nextSibling.style.display = "";
|
---|
597 | sectionStates[imageItem.id] = "e";
|
---|
598 | }
|
---|
599 | catch (e)
|
---|
600 | {
|
---|
601 | }
|
---|
602 | noReentry = false;
|
---|
603 | }
|
---|
604 |
|
---|
605 | function CollapseSection(imageItem)
|
---|
606 | {
|
---|
607 | noReentry = true; // Prevent re-entry to OnLoadImage
|
---|
608 | var expandImage = document.getElementById("expandImage");
|
---|
609 | imageItem.src = expandImage.src;
|
---|
610 | imageItem.alt = expandImage.alt;
|
---|
611 | imageItem.parentNode.parentNode.nextSibling.style.display = "none";
|
---|
612 | sectionStates[imageItem.id] = "c";
|
---|
613 | noReentry = false;
|
---|
614 | }
|
---|
615 |
|
---|
616 | function AllCollapsed()
|
---|
617 | {
|
---|
618 | var imgElements = document.getElementsByName("toggleSwitch");
|
---|
619 | var allCollapsed = true;
|
---|
620 | var i;
|
---|
621 |
|
---|
622 | for (i = 0; i < imgElements.length; i++) allCollapsed = allCollapsed && (sectionStates[imgElements[i].id] == "c");
|
---|
623 |
|
---|
624 | return allCollapsed;
|
---|
625 | }
|
---|
626 |
|
---|
627 | function SetCollapseAll()
|
---|
628 | {
|
---|
629 | var imageElement = document.getElementById("toggleAllImage");
|
---|
630 | if (imageElement == null) return;
|
---|
631 |
|
---|
632 | var allCollapsed = AllCollapsed();
|
---|
633 | if (allCollapsed)
|
---|
634 | {
|
---|
635 | var expandAllImage = document.getElementById("expandAllImage");
|
---|
636 | if (expandAllImage == null) return;
|
---|
637 | imageElement.src = expandAllImage.src;
|
---|
638 | imageElement.alt = expandAllImage.alt;
|
---|
639 | }
|
---|
640 | else
|
---|
641 | {
|
---|
642 | var collapseAllImage = document.getElementById("collapseAllImage");
|
---|
643 | if (collapseAllImage == null) return;
|
---|
644 | imageElement.src = collapseAllImage.src;
|
---|
645 | imageElement.alt = collapseAllImage.alt;
|
---|
646 | }
|
---|
647 |
|
---|
648 | SetToggleAllLabel(allCollapsed);
|
---|
649 | }
|
---|
650 |
|
---|
651 | function SetToggleAllLabel(allCollapsed)
|
---|
652 | {
|
---|
653 | var collapseLabelElement = document.getElementById("collapseAllLabel");
|
---|
654 | var expandLabelElement = document.getElementById("expandAllLabel");
|
---|
655 |
|
---|
656 | if (collapseLabelElement == null || expandLabelElement == null) return;
|
---|
657 |
|
---|
658 | if (allCollapsed)
|
---|
659 | {
|
---|
660 | collapseLabelElement.style.display = "none";
|
---|
661 | expandLabelElement.style.display = "inline";
|
---|
662 | }
|
---|
663 | else
|
---|
664 | {
|
---|
665 | collapseLabelElement.style.display = "inline";
|
---|
666 | expandLabelElement.style.display = "none";
|
---|
667 | }
|
---|
668 | }
|
---|
669 |
|
---|
670 | function SaveSections()
|
---|
671 | {
|
---|
672 | try
|
---|
673 | {
|
---|
674 | var states = "";
|
---|
675 |
|
---|
676 | for (var sectionId in sectionStates) states += sectionId + ":" + sectionStates[sectionId] + ";";
|
---|
677 |
|
---|
678 | Save("SectionStates", states.substring(0, states.length - 1));
|
---|
679 | }
|
---|
680 | catch (e)
|
---|
681 | {
|
---|
682 | }
|
---|
683 |
|
---|
684 | }
|
---|
685 |
|
---|
686 | function OpenSection(imageItem)
|
---|
687 | {
|
---|
688 | if (sectionStates[imageItem.id] == "c") ExpandCollapse(imageItem);
|
---|
689 | }
|
---|
690 |
|
---|
691 | /*
|
---|
692 | **********
|
---|
693 | ********** End Expand/Collapse
|
---|
694 | **********
|
---|
695 | */
|
---|
696 |
|
---|
697 |
|
---|
698 |
|
---|
699 | /*
|
---|
700 | **********
|
---|
701 | ********** Begin Copy Code
|
---|
702 | **********
|
---|
703 | */
|
---|
704 |
|
---|
705 | function CopyCode(key)
|
---|
706 | {
|
---|
707 | var trElements = document.getElementsByTagName("tr");
|
---|
708 | var i;
|
---|
709 | for(i = 0; i < trElements.length; ++i)
|
---|
710 | {
|
---|
711 | if(key.parentNode.parentNode.parentNode == trElements[i].parentNode)
|
---|
712 | {
|
---|
713 | if (window.clipboardData)
|
---|
714 | {
|
---|
715 | // the IE-manner
|
---|
716 | window.clipboardData.setData("Text", trElements[i].innerText);
|
---|
717 | }
|
---|
718 | else if (window.netscape)
|
---|
719 | {
|
---|
720 | // Gives unrestricted access to browser APIs using XPConnect
|
---|
721 | try
|
---|
722 | {
|
---|
723 | netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
---|
724 | }
|
---|
725 | catch(e)
|
---|
726 | {
|
---|
727 | alert("Universal Connect was refused, cannot copy to " +
|
---|
728 | "clipboard. Go to about:config and set " +
|
---|
729 | "signed.applets.codebase_principal_support to true to " +
|
---|
730 | "enable clipboard support.");
|
---|
731 | return;
|
---|
732 | }
|
---|
733 |
|
---|
734 | // Creates an instance of nsIClipboard
|
---|
735 | var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
|
---|
736 | if (!clip) return;
|
---|
737 |
|
---|
738 | // Creates an instance of nsITransferable
|
---|
739 | var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
|
---|
740 | if (!trans) return;
|
---|
741 |
|
---|
742 | // register the data flavor
|
---|
743 | trans.addDataFlavor('text/unicode');
|
---|
744 |
|
---|
745 | // Create object to hold the data
|
---|
746 | var str = new Object();
|
---|
747 |
|
---|
748 | // Creates an instance of nsISupportsString
|
---|
749 | var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
|
---|
750 |
|
---|
751 | //Assigns the data to be copied
|
---|
752 | var copytext = trElements[i].textContent;
|
---|
753 | str.data = copytext;
|
---|
754 |
|
---|
755 | // Add data objects to transferable
|
---|
756 | trans.setTransferData("text/unicode",str,copytext.length*2);
|
---|
757 | var clipid = Components.interfaces.nsIClipboard;
|
---|
758 | if (!clip) return false;
|
---|
759 |
|
---|
760 | // Transfer the data to clipboard
|
---|
761 | clip.setData(trans,null,clipid.kGlobalClipboard);
|
---|
762 | }
|
---|
763 | }
|
---|
764 | }
|
---|
765 | }
|
---|
766 |
|
---|
767 | function ChangeCopyCodeIcon(key)
|
---|
768 | {
|
---|
769 | var i;
|
---|
770 | var imageElements = document.getElementsByName("ccImage")
|
---|
771 | for(i=0; i<imageElements.length; ++i)
|
---|
772 | {
|
---|
773 | if(imageElements[i].parentNode == key)
|
---|
774 | {
|
---|
775 | if(imageElements[i].src == copyImage.src)
|
---|
776 | {
|
---|
777 | imageElements[i].src = copyHoverImage.src;
|
---|
778 | imageElements[i].alt = copyHoverImage.alt;
|
---|
779 | key.className = 'copyCodeOnHover';
|
---|
780 | }
|
---|
781 | else
|
---|
782 | {
|
---|
783 | imageElements[i].src = copyImage.src;
|
---|
784 | imageElements[i].alt = copyImage.alt;
|
---|
785 | key.className = 'copyCode';
|
---|
786 | }
|
---|
787 | }
|
---|
788 | }
|
---|
789 | }
|
---|
790 |
|
---|
791 | function CopyCode_CheckKey(key, eventObj)
|
---|
792 | {
|
---|
793 | if(eventObj.keyCode == 13)
|
---|
794 | CopyCode(key);
|
---|
795 | }
|
---|
796 |
|
---|
797 | /*
|
---|
798 | **********
|
---|
799 | ********** End Copy Code
|
---|
800 | **********
|
---|
801 | */
|
---|
802 |
|
---|
803 |
|
---|
804 | /*
|
---|
805 | **********
|
---|
806 | ********** Begin Maintain Scroll Position
|
---|
807 | **********
|
---|
808 | */
|
---|
809 |
|
---|
810 | function loadAll(){
|
---|
811 | try
|
---|
812 | {
|
---|
813 | scrollPos = allHistory.getAttribute("Scroll");
|
---|
814 | }
|
---|
815 | catch(e){}
|
---|
816 | }
|
---|
817 |
|
---|
818 | function saveAll(){
|
---|
819 | try
|
---|
820 | {
|
---|
821 | allHistory.setAttribute("Scroll", mainSection.scrollTop);
|
---|
822 | }
|
---|
823 | catch(e){}
|
---|
824 | }
|
---|
825 |
|
---|
826 | /*
|
---|
827 | **********
|
---|
828 | ********** End Maintain Scroll Position
|
---|
829 | **********
|
---|
830 | */
|
---|
831 |
|
---|
832 |
|
---|
833 | /*
|
---|
834 | **********
|
---|
835 | ********** Begin Send Mail
|
---|
836 | **********
|
---|
837 | */
|
---|
838 |
|
---|
839 | function formatMailToLink(anchor)
|
---|
840 | {
|
---|
841 | var release = "Release: " + anchor.doc_Release;
|
---|
842 | var topicId = "Topic ID: " + anchor.doc_TopicID;
|
---|
843 | var topicTitle = "Topic Title: " + anchor.doc_TopicTitle;
|
---|
844 | var url = "URL: " + document.URL;
|
---|
845 | var browser = "Browser: " + window.navigator.userAgent;
|
---|
846 |
|
---|
847 | var crlf = "%0d%0a";
|
---|
848 | var body = release + crlf + topicId + crlf + topicTitle + crlf + url + crlf + browser + crlf + crlf + "Comments:" + crlf + crlf;
|
---|
849 |
|
---|
850 | anchor.href = anchor.href + "&body=" + body;
|
---|
851 | }
|
---|
852 |
|
---|
853 | /*
|
---|
854 | **********
|
---|
855 | ********** End Send Mail
|
---|
856 | **********
|
---|
857 | */
|
---|
858 |
|
---|
859 |
|
---|
860 | /*
|
---|
861 | **********
|
---|
862 | ********** Begin Persistence
|
---|
863 | **********
|
---|
864 | */
|
---|
865 |
|
---|
866 | var globals;
|
---|
867 |
|
---|
868 | // get global vars from persistent store
|
---|
869 | function GetGlobals()
|
---|
870 | {
|
---|
871 | var tmp;
|
---|
872 |
|
---|
873 | // Try to get VS implementation
|
---|
874 | try { tmp = window.external.Globals; }
|
---|
875 | catch (e) { tmp = null; }
|
---|
876 |
|
---|
877 | // Try to get DExplore implementation
|
---|
878 | try { if (tmp == null) tmp = window.external.GetObject("DTE", "").Globals; }
|
---|
879 | catch (e) { tmp = null; }
|
---|
880 |
|
---|
881 | return tmp;
|
---|
882 | }
|
---|
883 |
|
---|
884 | function Load(key)
|
---|
885 | {
|
---|
886 | try
|
---|
887 | {
|
---|
888 | return globals.VariableExists(key) ? globals.VariableValue(key) : null;
|
---|
889 | }
|
---|
890 | catch (e)
|
---|
891 | {
|
---|
892 | return null;
|
---|
893 | }
|
---|
894 | }
|
---|
895 |
|
---|
896 | function Save(key, value)
|
---|
897 | {
|
---|
898 | try
|
---|
899 | {
|
---|
900 | globals.VariableValue(key) = value;
|
---|
901 | globals.VariablePersists(key) = true;
|
---|
902 | }
|
---|
903 | catch (e)
|
---|
904 | {
|
---|
905 | }
|
---|
906 | }
|
---|
907 |
|
---|
908 | /*
|
---|
909 | **********
|
---|
910 | ********** End Persistence
|
---|
911 | **********
|
---|
912 | */
|
---|
913 |
|
---|
914 | /* This is the part for Glossary popups */
|
---|
915 | // The method is called when the user positions the mouse cursor over a glossary term in a document.
|
---|
916 | // Current implementation assumes the existence of an associative array (g_glossary).
|
---|
917 | // The keys of the array correspond to the argument passed to this function.
|
---|
918 |
|
---|
919 | var bGlossary=true;
|
---|
920 | var oDialog;
|
---|
921 | var oTimeout="";
|
---|
922 | var oTimein="";
|
---|
923 | var iTimein=.5;
|
---|
924 | var iTimeout=30;
|
---|
925 | var oLastNode;
|
---|
926 | var oNode;
|
---|
927 | var bInit=false;
|
---|
928 | var aTerms=new Array();
|
---|
929 |
|
---|
930 | // Called from mouseover and when the contextmenu behavior fires oncontextopen.
|
---|
931 | function clearDef(eventObj){
|
---|
932 | if(eventObj){
|
---|
933 | var elem;
|
---|
934 | if(document.all) elem = eventObj.toElement;
|
---|
935 | else elem = eventObj.relatedTarget;
|
---|
936 | if(elem!=null || elem!="undefined"){
|
---|
937 | if(typeof(oTimein)=="number"){
|
---|
938 | window.clearTimeout(oTimein);
|
---|
939 | }
|
---|
940 | if(oDialog.dlg_status==true){
|
---|
941 | hideDef();
|
---|
942 | }
|
---|
943 | }
|
---|
944 | }
|
---|
945 | }
|
---|
946 | function hideDef(eventObj){
|
---|
947 | window.clearTimeout(oTimeout);
|
---|
948 | oTimeout="";
|
---|
949 | oDialog.style.display="none";
|
---|
950 | oDialog.dlg_status=false;
|
---|
951 | }
|
---|
952 | function showDef(oSource){
|
---|
953 | if(bInit==false){
|
---|
954 | glossaryInit();
|
---|
955 | bInit=true;
|
---|
956 | }
|
---|
957 | if(bGlossary==true){
|
---|
958 | if(typeof(arguments[0])=="object"){
|
---|
959 | oNode=oSource;
|
---|
960 | }
|
---|
961 | else{
|
---|
962 | if(document.all) oNode = eventObj.srcElement;
|
---|
963 | else oNode = eventObj.target;
|
---|
964 | }
|
---|
965 | var bStatus=oDialog.dlg_status; // BUGBUG: oDialog is null.
|
---|
966 | if((oLastNode!=oNode)||(bStatus==false)){
|
---|
967 | if((typeof(oTimein)=="number")&& eventObj){
|
---|
968 |
|
---|
969 | var elem;
|
---|
970 | if(document.all) elem = eventObj.fromElement;
|
---|
971 | else elem = eventObj.relatedTarget;
|
---|
972 |
|
---|
973 | if( elem != null || elem != "undefined")
|
---|
974 | window.clearTimeout(oTimein);
|
---|
975 | }
|
---|
976 | oTimein=window.setTimeout("openDialog(oNode)",iTimein*1000);
|
---|
977 | }
|
---|
978 | }
|
---|
979 | }
|
---|
980 |
|
---|
981 |
|
---|
982 |
|
---|
983 | function glossaryInit(){
|
---|
984 | oDialog=fnCreateDialog(150,50);
|
---|
985 | }
|
---|
986 |
|
---|
987 | function navigateTerm(eventObj){
|
---|
988 | var oNode;
|
---|
989 | if(document.all) oNode = eventObj.srcElement;
|
---|
990 | else oNode = eventObj.target;
|
---|
991 |
|
---|
992 | var iTermID=oNode.termID;
|
---|
993 | if(oNode!=aTerms[iTermID]){
|
---|
994 | var iAbsTop=getAbsoluteTop(aTerms[iTermID]);
|
---|
995 | if(iAbsTop<document.body.scrollTop){
|
---|
996 | window.scrollTo(document.body.scrollLeft,getAbsoluteTop(aTerms[iTermID]));
|
---|
997 | }
|
---|
998 | openDialog(aTerms[iTermID]);
|
---|
999 | }
|
---|
1000 | }
|
---|
1001 | function disableGlossary(eventObj){
|
---|
1002 | if(bGlossary==true){
|
---|
1003 | if(document.all) eventObj.srcElement.innerText="Enable Automatic Glossary";
|
---|
1004 | else eventObj.target.innerText="Enable Automatic Glossary";
|
---|
1005 | bGlossary=false;
|
---|
1006 | hideDef();
|
---|
1007 | }
|
---|
1008 | else{
|
---|
1009 | if(document.all) eventObj.srcElement.innerText="Disable Automatic Glossary";
|
---|
1010 | else eventObj.target.innerText="Disable Automatic Glossary";
|
---|
1011 | bGlossary=true;
|
---|
1012 | }
|
---|
1013 | }
|
---|
1014 | function openGlossary(){
|
---|
1015 |
|
---|
1016 | }
|
---|
1017 | function fnSetMenus(eventObj){
|
---|
1018 | var oNode;
|
---|
1019 | if(document.all) oNode = eventObj.srcElement;
|
---|
1020 | else oNode = eventObj.target;
|
---|
1021 |
|
---|
1022 | var oMenu=oNode.createMenu("SPAN","G_RID");
|
---|
1023 | var oSubItem1=oNode.createMenuItem("Glossary",fnStub,oMenu,true);
|
---|
1024 | document.body.createMenuItem("Open External Glossary",openGlossary,oSubItem1.subMenu);
|
---|
1025 | document.body.createMenuItem("Disable Automatic Glossary",disableGlossary,oSubItem1.subMenu);
|
---|
1026 | for(var i=0;i<aTerms.length;i++){
|
---|
1027 | var oItem=document.body.createMenuItem(aTerms[i].innerText,navigateTerm,oMenu);
|
---|
1028 | oItem.termID=i;
|
---|
1029 | }
|
---|
1030 | }
|
---|
1031 | // This is a bogus stub. It should be sniffed out rather than added in.
|
---|
1032 | function fnStub(){
|
---|
1033 |
|
---|
1034 | }
|
---|
1035 | function fnAttachMenus(aTips){
|
---|
1036 | // This walk is only necessary for the context menu.
|
---|
1037 | var aTips=document.getElementsByTagName("SPAN");
|
---|
1038 | for(var i=0;i<aTips.length;i++){
|
---|
1039 | var oNode=aTips[i];
|
---|
1040 | if(oNode.getAttribute("G_RID")){
|
---|
1041 | var sTerm=oNode.getAttribute("G_RID");
|
---|
1042 | if(typeof(g_glossary[sTerm])=="string"){
|
---|
1043 | // Removed client-side scripting to add events. This entire process should be singled out for IE 5 and later .. and, its only for the context menu.
|
---|
1044 | aTerms[aTerms.length]=oNode;
|
---|
1045 | }
|
---|
1046 | }
|
---|
1047 | }
|
---|
1048 | if(oBD.majorVer>=5){
|
---|
1049 | document.body.addBehavior(gsContextMenuPath);
|
---|
1050 | document.body.onbehaviorready="fnSetMenus()";
|
---|
1051 | document.body.oncontextopen="clearDef()";
|
---|
1052 | }
|
---|
1053 |
|
---|
1054 | }
|
---|
1055 | // Called by showDef. The showDef function sniffs for initialization.
|
---|
1056 | function openDialog(oNode,x,y){
|
---|
1057 | var bStatus=oDialog.dlg_status; // BUGBUG: This code assumes that oDialog has been initialized
|
---|
1058 | if(bStatus==false){
|
---|
1059 | oDialog.dlg_status=true;
|
---|
1060 | oDialog.style.display="block";
|
---|
1061 | }
|
---|
1062 | else{
|
---|
1063 | if(typeof(oTimeout)=="number"){
|
---|
1064 | window.clearTimeout(oTimeout);
|
---|
1065 | }
|
---|
1066 | }
|
---|
1067 |
|
---|
1068 | var sTerm=oNode.getAttribute("G_RID");
|
---|
1069 | var oDef=oNode.children(0);
|
---|
1070 | var sDef=oDef.text;
|
---|
1071 | sDef=sDef.substr(4,sDef.length-7); //Strips the html comment markers from the definition.
|
---|
1072 | oDialog.innerHTML=sDef
|
---|
1073 |
|
---|
1074 |
|
---|
1075 | //oDialog.innerHTML=g_glossary[sTerm];
|
---|
1076 |
|
---|
1077 | var iScrollLeft=document.body.scrollLeft;
|
---|
1078 | var iScrollTop=document.body.scrollTop;
|
---|
1079 | var iOffsetLeft=getAbsoluteLeft(oNode)// - iScrollLeft;
|
---|
1080 | var iOffsetWidth=oNode.offsetWidth;
|
---|
1081 | var oParent=oNode.parentNode;
|
---|
1082 | var iOffsetParentLeft=getAbsoluteLeft(oParent);
|
---|
1083 | var iOffsetTop=getAbsoluteTop(oNode); //- iScrollTop;
|
---|
1084 | var iOffsetDialogWidth=oDialog.offsetWidth;
|
---|
1085 |
|
---|
1086 |
|
---|
1087 | if((iOffsetLeft + iOffsetWidth) > (iOffsetParentLeft + oParent.offsetWidth)){
|
---|
1088 | iOffsetLeft=iOffsetParentLeft;
|
---|
1089 | if(iOffsetLeft - iOffsetDialogWidth>0){
|
---|
1090 | iOffsetTop+=oNode.offsetHeight;
|
---|
1091 | }
|
---|
1092 | }
|
---|
1093 | var iLeft=0;
|
---|
1094 | var iTop=0;
|
---|
1095 | if((iOffsetLeft + iOffsetWidth - iScrollLeft + iOffsetDialogWidth) < document.body.offsetWidth ){
|
---|
1096 | iLeft=iOffsetLeft + iOffsetWidth;
|
---|
1097 | }
|
---|
1098 | else{
|
---|
1099 | if(iOffsetLeft - iOffsetDialogWidth>0){
|
---|
1100 | iLeft=iOffsetLeft - iOffsetDialogWidth;
|
---|
1101 | }
|
---|
1102 | else{
|
---|
1103 | iLeft=iOffsetParentLeft;
|
---|
1104 | }
|
---|
1105 | }
|
---|
1106 | if(iOffsetTop - iScrollTop<oDialog.offsetHeight){
|
---|
1107 | iTop=iOffsetTop + oNode.offsetHeight;
|
---|
1108 | }
|
---|
1109 | else{
|
---|
1110 | iTop=iOffsetTop - oDialog.offsetHeight;
|
---|
1111 | }
|
---|
1112 | oDialog.style.top=iTop;
|
---|
1113 | oDialog.style.left=iLeft;
|
---|
1114 | oTimeout=window.setTimeout("hideDef()",iTimeout*1000);
|
---|
1115 | }
|
---|
1116 | function getAbsoluteTop(oNode){
|
---|
1117 | var oCurrentNode=oNode;
|
---|
1118 | var iTop=0;
|
---|
1119 | while(oCurrentNode.tagName!="BODY"){
|
---|
1120 | iTop+=oCurrentNode.offsetTop;
|
---|
1121 | oCurrentNode=oCurrentNode.offsetParent;
|
---|
1122 | }
|
---|
1123 | return iTop;
|
---|
1124 | }
|
---|
1125 | function getAbsoluteLeft(oNode){
|
---|
1126 | var oCurrentNode=oNode;
|
---|
1127 | var iLeft=0;
|
---|
1128 | while(oCurrentNode.tagName!="BODY"){
|
---|
1129 | iLeft+=oCurrentNode.offsetLeft;
|
---|
1130 | oCurrentNode=oCurrentNode.offsetParent;
|
---|
1131 | }
|
---|
1132 | return iLeft;
|
---|
1133 | }
|
---|
1134 | function fnCreateDialog(iWidth,iHeight){
|
---|
1135 | document.body.insertAdjacentHTML("BeforeEnd","<DIV></DIV>");
|
---|
1136 | oNewDialog=document.body.children(document.body.children.length-1);
|
---|
1137 | oNewDialog.className="clsTooltip";
|
---|
1138 | oNewDialog.style.width=iWidth;
|
---|
1139 | oNewDialog.dlg_status=false;
|
---|
1140 | return oNewDialog;
|
---|
1141 | }
|
---|
1142 |
|
---|
1143 | function sendfeedback(subject, id,alias){
|
---|
1144 | var rExp = /\"/gi;
|
---|
1145 | var url = location.href;
|
---|
1146 | // Need to replace the double quotes with single quotes for the mailto to work.
|
---|
1147 | var rExpSingleQuotes = /\'\'"/gi;
|
---|
1148 | var title = document.getElementsByTagName("TITLE")[0].innerText.replace(rExp, "''");
|
---|
1149 | location.href = "mailto:" + alias + "?subject=" + subject + title + "&body=Topic%20ID:%20" + id + "%0d%0aURL:%20" + url + "%0d%0a%0d%0aComments:%20";
|
---|
1150 | }
|
---|