function reportLoaded() { fixAttachmentLinksOnIE(); } function fixAttachmentLinksOnIE() { if (needFixupForIE()) { // On IE, pages in the local filesystem that possess the Mark of the Web // are forbidden from navigating to other local files. This breaks links // to attachments on the local filesystem unless we make some changes. var count = document.links.length; for (var i = 0; i < count; i++) { var link = document.links[i]; var href = link.href; if (link.className == "attachmentLink" && isLocalFileUri(href)) { link.href = toGallioAttachmentUri(href); } } } } function toGallioAttachmentUri(uri) { var path = uri.substring(8).replace(/\//g, "\\"); return "gallio:openAttachment?path=" + path; } var needFixupForIECache = undefined; function needFixupForIE() { if (needFixupForIECache == undefined) needFixupForIECache = isIE() && (isLocalFileUri(window.location.href) || isInMemoryUri(window.location.href)); return needFixupForIECache; } function isIE() { return navigator.appName == "Microsoft Internet Explorer"; } function isLocalFileUri(uri) { return uri.search(/^file:\/\/\//) == 0; } function isInMemoryUri(uri) { return uri == "about:blank"; } function toggle(id) { var icon = document.getElementById('toggle-' + id); if (icon != null) { var childElement = document.getElementById(id); if (icon.src.indexOf('Plus.gif') != -1) { icon.src = icon.src.replace('Plus.gif', 'Minus.gif'); if (childElement != null) childElement.style.display = "block"; } else { icon.src = icon.src.replace('Minus.gif', 'Plus.gif'); if (childElement != null) childElement.style.display = "none"; } } } function expand(ids) { for (var i = 0; i < ids.length; i++) { var id = ids[i]; var icon = document.getElementById('toggle-' + id); if (icon != null) { if (icon.src.indexOf('Plus.gif') != -1) { icon.src = icon.src.replace('Plus.gif', 'Minus.gif'); var childElement = document.getElementById(id); if (childElement != null) childElement.style.display = "block"; } } } } function navigateTo(path, line, column) { var navigator = new ActiveXObject("Gallio.Navigator.GallioNavigator"); if (navigator) navigator.NavigateTo(path, line, column); } function setInnerHTMLFromUri(id, uri) { _asyncLoadContentFromUri(uri, function(loadedDocument) { // workaround for IE failure to auto-detect HTML content var children = isIE() ? loadedDocument.body.children : null; if (children && children.length == 1 && children[0].tagName == "PRE") { var text = getTextContent(loadedDocument.body); setInnerHTMLFromContent(id, text); } else { var html = loadedDocument.body.innerHTML; setInnerHTMLFromContent(id, html); } }); } function setPreformattedTextFromUri(id, uri) { _asyncLoadContentFromUri(uri, function(loadedDocument) { setPreformattedTextFromContent(id, getTextContent(loadedDocument.body)); }); } function setInnerHTMLFromHiddenData(id) { var element = document.getElementById(id + '-hidden'); if (element) setInnerHTMLFromContent(id, getTextContent(element)); } function setPreformattedTextFromHiddenData(id) { var element = document.getElementById(id + '-hidden'); if (element) setPreformattedTextFromContent(id, getTextContent(element)); } function setInnerHTMLFromContent(id, content) { if (content != undefined) { var element = document.getElementById(id); if (element) element.innerHTML = content; } } function setPreformattedTextFromContent(id, content) { if (content != undefined) { var element = document.getElementById(id); if (element) { element.innerHTML = "
"; setTextContent(element.children[0], content); } } } function getTextContent(element) { return element.textContent != undefined ? element.textContent : element.innerText; } function setTextContent(element, content) { if (element.textContent != undefined) element.textContent = content; else element.innerText = content; } function setFrameLocation(frame, uri) { if (frame.contentWindow) frame.contentWindow.location.replace(uri); } function _asyncLoadContentFromUri(uri, callback) { var asyncLoadFrame = document.getElementById('_asyncLoadFrame'); if (!asyncLoadFrame.pendingRequests) asyncLoadFrame.pendingRequests = []; asyncLoadFrame.pendingRequests.push({ uri: uri, callback: callback }); _asyncLoadFrameNext(asyncLoadFrame); } function _asyncLoadFrameOnLoad() { var asyncLoadFrame = document.getElementById('_asyncLoadFrame'); if (asyncLoadFrame) { var request = asyncLoadFrame.currentRequest; if (request) { asyncLoadFrame.currentRequest = undefined; try { var loadedWindow = asyncLoadFrame.contentWindow; if (loadedWindow && loadedWindow.location.href != "about:blank") { var loadedDocument = loadedWindow.document; if (loadedDocument) { request.callback(loadedDocument); } } } catch (ex) { //alert(ex.message); } } _asyncLoadFrameNext(asyncLoadFrame); } } function _asyncLoadFrameNext(asyncLoadFrame) { while (!asyncLoadFrame.currentRequest && asyncLoadFrame.pendingRequests && asyncLoadFrame.pendingRequests.length > 0) { var request = asyncLoadFrame.pendingRequests.shift(); asyncLoadFrame.currentRequest = request; try { setFrameLocation(asyncLoadFrame, request.uri); } catch (ex) { //alert(ex.message); } } }