/* 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 */