/* Wire up the bodyload handler (set here rather than in the body element in order to avoid a HTML Help viewer bug with printing multiple topics */ window.onload = bodyLoad; /* Set body initially hidden unless we are printing */ document.write(""); /* Begin Common utility functions */ /* This is required for user data support in .chms */ var curURL = document.location + "."; var pos = curURL.indexOf("mk:@MSITStore"); var scrollPos=null; if( pos == 0 ) { curURL = "ms-its:" + curURL.substring(14,curURL.length-1); document.location.replace(curURL); } /* Returns a document element using the Firefox friendly getElementById */ function documentElement(id) { return document.getElementById(id); } /* Returns the source element of an event */ function sourceElement(e) { if (window.event) { e = window.event; } return e.srcElement? e.srcElement : e.target; } /* Cancels an event, preventing further bubbling and returning false to cancel default behavior */ function cancelEvent(e) { e.returnValue = false; e.cancelBubble = true; if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } } /* Returns an elements absolute position, allowing for the non-scrolling header */ function getElementPosition(e) { var offsetLeft = 0; var offsetTop = 0; while (e) { // Allow for the scrolling body region in IE if (msieversion() > 4) { offsetLeft += (e.offsetLeft - e.scrollLeft); offsetTop += (e.offsetTop - e.scrollTop); } else { offsetLeft += e.offsetLeft ; offsetTop += e.offsetTop; } e = e.offsetParent; } if (navigator.userAgent.indexOf('Mac') != -1 && typeof document.body.leftMargin != 'undefined') { offsetLeft += document.body.leftMargin; offsetTop += document.body.topMargin; } return {left:offsetLeft,top:offsetTop}; } /* Return Microsoft Internet Explorer (major) version number, or 0 for others. */ function msieversion() { var ua = window.navigator.userAgent; var msie = ua.indexOf ( "MSIE " ); if ( msie > 0 ) // is Microsoft Internet Explorer; return version number { return parseInt ( ua.substring ( msie+5, ua.indexOf ( ".", msie ) ) ); } else { return 0; // is other browser } } /* To hide all popup boxes */ function hideBoxes() { var divs = document.getElementsByTagName("DIV"); var div; if (divs) { for (var idiv = 0; idiv < divs.length; idiv++) { div = divs[idiv]; if (div.className) { if (div.className == "dxpopupbubble" || div.className == "hspopupbubble" || div.className == "hsglossaryreference") { div.style.visibility = "hidden"; } } } } } /* Show a popup box */ function showBox(Name,e,button) { if (window.event) { e = window.event; } hideBoxes(); if(!button) { button = sourceElement(e); } cancelEvent(e); var div = documentElement(Name); if (div && button) { div.style.height = ""; div.style.left = (getElementPosition(button).left) + "px"; div.style.top = (getElementPosition(button).top + button.offsetHeight) + "px"; div.style.visibility = "visible"; } } /* End Common utility functions */ /* Shows a popup parameter box */ function showParamBox(e) { if (window.event) { e = window.event; } var button = sourceElement(e); var documentWidth; var documentHeight; var boxWidth; var pixelLeft; var pixelTop; var boxHeight; var div = documentElement(button.id + "_box"); cancelEvent(e); hideBoxes(); if (div && button) { // Have the browser size the box div.style.height = ""; div.style.width = ""; // Clear any tooltip so it doesn't appear above the popup button.title = ""; pixelTop = getElementPosition(button).top + 14; // Check if the box would go off the bottom of the visible area documentHeight = document.body.clientHeight; boxHeight = div.clientHeight; if (pixelTop + boxHeight > documentHeight) { // If the box won't fit both above and below the link // using the default width then make the box wider if (boxHeight >= pixelTop) { div.style.width = "80%"; } else { pixelTop = pixelTop - 14 - boxHeight; } } div.style.top = pixelTop + "px"; documentWidth = document.body.clientWidth; boxWidth = div.clientWidth; pixelLeft = button.offsetLeft; // Check if the box would go off the edge of the visible area if (pixelLeft + boxWidth > documentWidth) { pixelLeft = documentWidth - boxWidth - 5; } div.style.left = pixelLeft + "px"; // Show the box div.style.visibility = "visible"; } } /* Begin non-scrolling region support */ function bodyResize() { resizeBan(); } function bodyClick(e) { if (window.event) { e = window.event; } if(sourceElement(e)) { if(sourceElement(e).tagName != "INPUT") { if (sourceElement(e).className != "languageFilter" && sourceElement(e).className != "membersFilter") { hideBoxes(); resizeBan(); }; } } } function resizeBan() { if (msieversion() > 4) { try { if (document.body.clientWidth==0) { return; } hideBoxes(); var oBanner= documentElement("pagetop"); var oText= documentElement("pagebody"); var oFooter = documentElement("nonscrollingpagefooter"); var footerHeight = 0; if (oFooter != null) { footerHeight = oFooter.offsetHeight; } if (oText == null) { return; } var oBannerrow1 = documentElement("projectnamebanner"); var oTitleRow = documentElement("pagetitlebanner"); if (oBannerrow1 != null) { var iScrollWidth = document.body.scrollWidth; oBannerrow1.style.marginRight = 0 - iScrollWidth; } if (oTitleRow != null) { oTitleRow.style.padding = "0px 10px 0px 22px; "; } if (oBanner != null) { document.body.scroll = "no"; oText.style.overflow= "auto"; oBanner.style.width= document.body.offsetWidth-2; oText.style.top=0; if (document.body.offsetHeight > oBanner.offsetHeight) { oText.style.height= document.body.offsetHeight - (oBanner.offsetHeight+4) - footerHeight; } else { oText.style.height=0; } if(scrollPos!=null) { oText.scrollTop = scrollPos; scrollPos = null; } } try { documentElement("nstext").setActive(); } catch(e) { } } catch(e) { } } } /* End non-scrolling region support */ /* Begin Document load/unload/print support */ /* Called before custom body load script */ function bodyLoadCommonBefore() { if (scrollPos == null && curURL.indexOf("#") != -1) { var oBanner= documentElement("pagetop"); scrollPos = document.body.scrollTop - oBanner.offsetHeight; } resizeBan(); document.body.onclick = bodyClick; document.body.onresize = bodyResize; window.onbeforeprint = beforePrint; window.onafterprint = afterPrint; window.onunload = windowUnload; } /* Called after custom body load script */ function bodyLoadCommonAfter() { wireUpEventHandlers(); loadSettings(); // make body visible, now that we're ready to render document.body.style.visibility = "visible"; } /* Saves the scroll position */ function windowUnload() { saveSettings(); } /* Common settings load script */ function loadSettingsCommon() { // load the expand / collapse states loadSections(); } /* Common settings save script */ function saveSettingsCommon() { // save the expand / collapse states saveSections(); } /* Removes the non-scrolling region and ensures everything is visible for print */ function beforePrint() { var i; var allElements; if (window.text) { document.all.text.style.height = "auto"; } allElements = document.getElementsByTagName("*"); for (i=0; i < allElements.length; i++) { if (allElements[i].tagName == "BODY") { allElements[i].scroll = "yes"; } if (allElements[i].id == "pagetop") { allElements[i].style.margin = "0px 0px 0px 0px"; allElements[i].style.width = "100%"; } if (allElements[i].id == "pagebody") { allElements[i].style.overflow = "visible"; allElements[i].style.top = "5px"; allElements[i].style.width = "100%"; allElements[i].style.padding = "0px 10px 0px 30px"; } if (allElements[i].id == "pagetoptable1row2" || allElements[i].id == "pagetoptable2row1" || allElements[i].id == "feedbacklink") { allElements[i].style.display = "none"; } if (allElements[i].className == "LanguageSpecific") { allElements[i].style.display = "block"; } } } /* Refresh the page after a print */ function afterPrint() { document.location.reload(); } /* End Document load/unload/print support */ /* Begin User Data support */ function getDataCache() { if (getWindowExternal()) { if (window.external.IsInnovasysDesigner) { return window.external; } } return documentElement("userDataCache"); } function getWindowExternal() { try { return window.external; } catch(e) { } } function load(key) { var dataCacheObject; try { dataCacheObject = getDataCache(); dataCacheObject.load("innSettings"); var value = dataCacheObject.getAttribute(key); return value; } catch(e) { } } function save(key, value) { var dataCacheObject; try { dataCacheObject = getDataCache(); dataCacheObject.setAttribute(key, value); dataCacheObject.save("innSettings"); } catch(e) { } } function removeAttribute(key) { var dataCacheObject; try { dataCacheObject = getDataCache(); dataCacheObject.removeAttribute(key); dataCacheObject.save("innSettings"); } catch(e) { } } /* End User Data support */ /* Begin Expanding sections support */ var collapsedSections = new Array(); /* Wires up the expand / collapse functionality */ function wireUpEventHandlers() { var elements=document.getElementsByTagName("SPAN"); var span; for(var i=0;i 0) { fix(e, "cb"); } } // if this element is an inline cdata, and contains more than a single // line, turn it into a block cdata. if (e.className == "di") { if (e.children(0).innerText.indexOf("\n") > 0) { fix(e, "db"); } } // remove the id since we only used it for cleanup e.id = ""; } // Fix up the element as a "block" display and enable expand/collapse on it function fix(e, cl) { var j; var k; // change the class name and display value e.className = cl; e.style.display = "block"; // mark the comment or cdata display as a expandable container j = e.parentElement.children(0); j.className = "c"; // find the +/- symbol and make it visible - the dummy link enables tabbing k = j.children(0); k.style.visibility = "visible"; k.href = "#"; } // Change the +/- symbol and hide the children. This function works on "element" // displays function ch(e) { var i; // find the +/- symbol var mark = e.children(0).children(0); // if it is already collapsed, expand it by showing the children if (mark.innerText == "+") { mark.innerText = "-"; for (i = 1; i < e.children.length; i++) { e.children(i).style.display = "block"; } } // if it is expanded, collapse it by hiding the children else if (mark.innerText == "-") { mark.innerText = "+"; for (i = 1; i < e.children.length; i++) { e.children(i).style.display="none"; } } } // Change the +/- symbol and hide the children. This function work on "comment" // and "cdata" displays function ch2(e) { var contents; // find the +/- symbol, and the "PRE" element that contains the content var mark = e.children(0).children(0); contents = e.children(1); // if it is already collapsed, expand it by showing the children if (mark.innerText == "+") { mark.innerText = "-"; // restore the correct "block"/"inline" display type to the PRE if (contents.className == "db" || contents.className == "cb") { contents.style.display = "block"; } else { contents.style.display = "inline"; } } // if it is expanded, collapse it by hiding the children else { if (mark.innerText == "-") { mark.innerText = "+"; contents.style.display = "none"; } } } // Handle a mouse click function cl() { var e = window.event.srcElement; // make sure we are handling clicks upon expandable container elements if (e.className != "c") { e = e.parentElement; if (e.className != "c") { return; } } e = e.parentElement; // call the correct funtion to change the collapse/expand state and display if (e.className == "e") { ch(e); } if (e.className == "k") { ch2(e); } } // Dummy function for expand/collapse link navigation - trap onclick events instead function ex() { } // Erase bogus link info from the status window function h() { window.status=" "; } /* End XML Expand / Collapse */ /* .NET specific script */ // Current language var curLang = ""; // To prevent 'access denied' errors in the authoring environment function dxErrorHandler(msg,url,line) { if(url=="about:blank") { return true; } } if (window.location.href == 'about:blank') { window.onerror = dxErrorHandler; } function bodyLoad() { var i; var b; var l; bodyLoadCommonBefore(); // Check the context window for current language. try { for (i=1; i< window.external.ContextAttributes.Count; i++) { if(window.external.ContextAttributes(i).Name.toUpperCase()=="DEVLANG") { b = window.external.ContextAttributes(i).Values.toArray(); curLang = b[0].toUpperCase(); } } } catch(e) { } if (curLang != null) { if (curLang.indexOf("VB") != -1) { curLang = "VB"; } if (curLang.indexOf("VC") != -1) { curLang = "CPP"; } if (curLang.indexOf("C++") != -1) { curLang = "CPP"; } if (curLang.indexOf("CSHARP") != -1) { curLang = "CS"; } if (curLang.indexOf("JSCRIPT") != -1) { curLang = "JScript"; } } if (curLang == null) { l = ""; var multipleLang = false; var cLang = ""; try { l = window.external.Help.FilterQuery.toUpperCase(); } catch(e) { } if (l.indexOf("VB") != -1) { cLang = "VB"; } if (l.indexOf("VC") != -1) { if (cLang != null) { multipleLang = true; } cLang = "CPP"; } if (l.indexOf("C#") != -1) { if (cLang != null) { multipleLang = true; } cLang = "CS"; } if (l.indexOf("CSHARP") != -1) { if (cLang != null) { multipleLang = true; } cLang = "CS"; } if (l.indexOf("JSCRIPT") != -1) { if (cLang != null) { multipleLang = true; } cLang = "JScript"; } if (l.indexOf("JSHARP") != -1) { if (cLang != null) { multipleLang = true; } cLang = "JSHARP"; } if (multipleLang == false) { curLang = cLang; } } bodyLoadCommonAfter(); } function loadSettings() { // load the languages loadLanguages(); configureLanguageCheckboxes(); displayLanguages(); // load the member options loadMembersFilter(); configureMembersFilterCheckboxes(); changeMembersFilterLabel(); loadSettingsCommon(); } function saveSettings() { saveLanguages(); saveMembersFilter(); saveSettingsCommon(); } /* Begin Member Filtering */ var inheritedMembers; var protectedMembers; function configureMembersFilterCheckboxes() { var checkbox; checkbox = document.getElementById("inheritedCheckbox"); if(checkbox != null) { if(inheritedMembers == "on") { checkbox.checked = true; } else { checkbox.checked = false; } } checkbox = document.getElementById("protectedCheckbox"); if(checkbox != null) { if(protectedMembers == "on") { checkbox.checked = true; } else { checkbox.checked = false; } } } function setMembersFilter(key) { if(key.id == "inheritedCheckbox") { if(key.checked == true) { inheritedMembers = "on"; } else { inheritedMembers = "off"; } updateInheritedMembers(); } if(key.id == "protectedCheckbox") { if(key.checked == true) { protectedMembers = "on"; } else { protectedMembers = "off"; } updateProtectedMembers(); } changeMembersFilterLabel(); } function updateInheritedMembers() { var tablerows = document.getElementsByTagName("tr"); var i; if(inheritedMembers == "off") { for(i = 0; i < tablerows.length; ++i) { if (tablerows[i].id == "inheritedMember") tablerows[i].style.display = "none"; } } else { for(i = 0; i < tablerows.length; ++i) { if (tablerows[i].id == "inheritedMember") tablerows[i].style.display = ""; } } } function updateProtectedMembers() { var toggleImages = document.getElementsByName("toggleSwitch"); var i; if(protectedMembers == "off") { for(i = 0; i < toggleImages.length; ++i) { if(toggleImages[i].id.indexOf("protected", 0) == 0) { if(isSectionCollapsed(toggleImages[i].id) == false) { toggleExpanded(toggleImages[i]); } } } } else { for(i = 0; i < toggleImages.length; ++i) { if(toggleImages[i].id.indexOf("protected", 0) == 0) { if(isSectionCollapsed(toggleImages[i].id) == true) { toggleExpanded(toggleImages[i]); } } } } } function changeMembersFilterLabel() { var filtered = false; if((inheritedMembers=="off") || (protectedMembers=="off")) { filtered = true; } var labelElement = document.getElementById("showAllMembersLabel"); if(labelElement == null) { return; } labelElement.style.display = "none"; labelElement = document.getElementById("filteredMembersLabel"); labelElement.style.display = "none"; if(filtered) { labelElement = document.getElementById("filteredMembersLabel"); labelElement.style.display = "inline"; } else { labelElement = document.getElementById("showAllMembersLabel"); labelElement.style.display = "inline"; } } function loadMembersFilter() { var value = load("inheritedMembers"); if(value == null) { inheritedMembers = "on"; } else { inheritedMembers = value; } value = load("protectedMembers"); if(value == null) { protectedMembers = "on"; } else { protectedMembers = value; } if(inheritedMembers=="off") { updateInheritedMembers(); } if(protectedMembers=="off") { updateProtectedMembers(); } } function saveMembersFilter() { save("inheritedMembers", inheritedMembers); save("protectedMembers", protectedMembers); } /* End Member Filtering */ /* Language Filtering */ var languageNames; var languageStates; function configureLanguageCheckboxes() { var checkbox; var i; for(i=0;i 1) && (tickedCount < languageNames.length)) { if((tickedCount == 2) && (getLanguageState("VB") == "on") && (getLanguageState("vbUsage") == "on")) { document.getElementById("VBLabel").style.display = "inline"; } else { document.getElementById("multipleLabel").style.display = "inline"; } } else if (tickedCount == 1) { for(i=0;i 0) { for(i=0;i 0) { for (n=1;n<=Namespaces.Count;n++) { Namespace = Namespaces.Item(n); NamespaceName = Namespace.Name; if (NamespaceName.substring(0,7) == "MS.VSCC") { switch(NamespaceName) { case "MS.VSCC.v80": break; case "MS.VSCC.2003": break; case "MS.VSCC": break; default: URL = findHelp2Keyword(NamespaceName); if (URL != "") { return Topics(1).URL; } } } } } } } catch(e) {} // No match found in any applicable namespace return "http://msdn2.microsoft.com/en-us/library(d=ide)/" + OnlineKeyword + ".aspx" } function findHelp2Keyword(NamespaceName,Keyword) { var Session,Topics; if (NamespaceName.length > 0) { try { Session = new ActiveXObject("HxDs.HxSession"); Session.Initialize("ms-help://" + NamespaceName, 0); Topics = Session.Query(Keyword, "!DefaultAssociativeIndex", 0, ""); if (Topics.Count > 0) { return Topics(1).URL; } } catch(e) {} } return ""; } function navigateToHelp2Keyword(Keyword,OnlineKeyword,ReplacePage) { window.status = "Resolving link. Please wait a moment..."; var URL = resolveHelp2Keyword(Keyword,OnlineKeyword); window.status=""; if (ReplacePage == true) { location.replace(URL); } else { location.href = URL; } } function getCurrentHelp2Namespace() { var namespace = ""; var location = window.location; if (location.protocol == "ms-help:") { namespace = location.hostname; if (namespace.substring(0, 2) == "//") namespace = namespace.substring(2); } return namespace; } /* End .NET Framework Help Topic Resolution */