/************************************ REVISION LOG ENTRY Revision By: Mihai Filimon ( mfl@exontrol.com ) Created on 3/12/2018 10:00:00 AM Comments: faq.js, faq.css This code may be used in compiled form in any way you desire. This file may not be redistributed modified or unmodified without the authors written consent. ************************************/ var bDisableShowFilterBoxInfo = false; var filterFrameParam = "FR"; var filterParam = "F"; var filterQuestionOnlyParam = "Q"; var filterWordOnlyParam = "W"; var expandParam = "E"; var vtQuestionOnlyClass = "question-only"; var vtWordOnlyClass = "word-only"; var scrollToQuestion = null; var expandFirstItem = null; var noReentry = false; window.onload = loadPage; window.addEventListener("click", clickWindow); window.onresize = resizeWindow; window.onscroll = scrollWindow; if (!hasFilter()) document.onreadystatechange = readyStateChange; var collapsedSections = new Array(); var collapsedSectionsInitialized = false; function getURLHash(sURL) { var i = sURL.indexOf('#'); if (i > 0) return sURL.substr(i + 1); return null; } function removeURLHash(sURL) { var i = sURL.indexOf("#"); if (i >= 0) sURL = sURL.substr(0, i); return sURL; } function getURLParam(sURL, Param) { var i = sURL.indexOf('#'); sURL = i === -1 ? sURL : sURL.substr(0, i); if (sURL.indexOf("?") > 0) { var arrParams = sURL.split("?"); var arrURLParams = arrParams[1].split("&"); var arrParamNames = new Array(arrURLParams.length); var arrParamValues = new Array(arrURLParams.length); var i = 0; for (i = 0; i < arrURLParams.length; i++) { var sParam = arrURLParams[i].split("="); arrParamNames[i] = sParam[0]; if (sParam[1] != "") arrParamValues[i] = unescape(sParam[1]); else arrParamValues[i] = ""; } for (i = 0; i < arrURLParams.length; i++) if (arrParamNames[i] == Param) return arrParamValues[i]; } return null; } function addURLParam(sURL, Param, Value) { return updateURLParameter(sURL, Param, Value); } function removeURLParam(sURL, Param) { return updateURLParameter(sURL, Param, null); } function updateURLParameter(uri, key, value) { var i = uri.indexOf('#'); var hash = i === -1 ? '' : uri.substr(i); uri = i === -1 ? uri : uri.substr(0, i); var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i"); var separator = uri.indexOf('?') !== -1 ? "&" : "?"; if (value) { value = value.trim(); if (uri.match(re)) uri = uri.replace(re, '$1' + key + (value.length ? ("=" + value) : "") + '$2'); else uri = uri + separator + key + (value.length ? ("=" + value) : ""); } else { uri = uri.replace(new RegExp("[?&]?" + key + "=[^&]*", "i"), ''); if (uri.slice(-1) === '?') uri = uri.slice(0, -1); if (uri.indexOf('?') === -1) uri = uri.replace(/&/, '?'); // replace first occurrence of & by ? if no ? is present } return uri + hash; } function getIFrameURL(sURL) { if (sURL) { var bGeneralFAQ = sURL.indexOf("/gfaq.jsp") == 0; if (bGeneralFAQ) sURL = sURL.replace("/gfaq.jsp", "/content/support/faq/"); else { bGeneralFAQ = (sURL.indexOf("/sg.jsp?content=support/faq/") == 0); if (bGeneralFAQ) sURL = sURL.replace("/sg.jsp?content=support/faq/", "/content/support/faq/"); } if (bGeneralFAQ) { if (sURL.search(/(\\|\/)$/) < 0) // no \ / adds one sURL += "/"; sURL += "index.jsp"; } } return sURL; } function fixURLQuery(sURL) { if (sURL) { sURL = sURL.replace("?", "&"); var i = sURL.indexOf("&"); if (i >= 0) sURL = sURL.substr(0, i) + "?" + sURL.substr(i + 1); } return sURL; } function getURL(sURL) { if (sURL) { if (sURL.indexOf("/content/products/") >= 0) { sURL = sURL.replace("?", "&"); sURL = sURL.replace("/content/products/", "/howto.jsp?product="); sURL = sURL.replace("/howto/how_to_do_", "&lang="); sURL = sURL.replace(".htm", ""); sURL = fixURLQuery(sURL); } else if (sURL.indexOf("/content/support/faq/") >= 0) { sURL = sURL.replace("?", "&"); sURL = sURL.replace("/content/support/faq/index.jsp", "/gfaq.jsp"); sURL = sURL.replace("/content/support/faq/", "/sg.jsp?content=support/faq/"); sURL = sURL.replace("index.jsp", ""); sURL = fixURLQuery(sURL); } } return sURL; } function getURLFAQ() { var sURL = document.URL.toString(); sURL = removeURLParam(sURL, filterFrameParam); sURL = getURL(sURL); return sURL; } function clickPage(anchor) { var f = Filter.value; if (f.length != 0) if (f != "Filter for...") anchor.href += "?F=" + f; } function nextID(el) { var c = el.nextElementSibling; if (c) { while (c && (el.id != c.id)) c = c.nextElementSibling; return c; } var c = el.nextSibling; while (c && ((c.nodeType != 1) || (el.id != c.id))) c = c.nextSibling; return c; } function isFrameFilterFor() { var fr = getURLParam(document.URL, filterFrameParam); if (fr != null) return fr != ""; return false; } function isFilterForQ() { var frQ = getURLParam(document.URL, filterQuestionOnlyParam); if (frQ != null) return frQ == "only"; return false; } function isFilterForW() { var frW = getURLParam(document.URL, filterWordOnlyParam); if (frW != null) return frW == "only"; return false; } function getFilterFor(e) { var o = e.textContent; if (o != null) return o; return e.innerText; } function getFilterForQ(e) { var c = e.children; return getFilterFor(c[0]) + getFilterFor(c[1].firstElementChild); } function filterFor(text) { onLayoutHeader(); CollapseAll(document.getElementById("toggleAllImage")); var nResults = 0; var o = document.getElementById("question"); if (text.length == 0) { while (o != null) { o.style.display = ""; o = nextID(o); } if (!isFrameFilterFor()) { var p = document.getElementById("pages"); if (p != null) p.style.display = ""; var c = document.getElementById("continue"); if (c != null) { c.innerHTML = ""; c.style.display = "none"; } } } else { // Shows only the items that match text = text.toLowerCase(); var rgFilter = new Array(); var rgAlternatives = text.split(","); var aCount = rgAlternatives.length; for (var a = 0; a < aCount; a++) { var rgAlternative = new Array(); var rgFields = rgAlternatives[a].split(" "); var fCount = rgFields.length; for (var f = 0; f < fCount; f++) { var sField = rgFields[f].replace(" ", ""); if (sField.length) rgAlternative.push(sField); } if (rgAlternative.length) rgFilter.push(rgAlternative); } var l = rgFilter.length; if (l > 0) { var bFilterForQ = isFilterForQ(), bFilterForW = isFilterForW(); while (o != null) { var s = bFilterForQ ? getFilterForQ(o) : getFilterFor(o); s = s.toLowerCase(); var bVisible = false; for (var j = 0; !bVisible && (j < l); j++) { var i = 0, iCount = rgFilter[j].length; for (i = 0; i < iCount; i++) { var w = rgFilter[j][i]; if (bFilterForW) { if (s.search("\\b" + w + "\\b") == -1) break } else if (s.indexOf(w) == -1) break; } bVisible = i == iCount; } o.style.display = bVisible ? "" : "none"; if (bVisible) nResults++; o = nextID(o); } } // Show additional information if (!isFrameFilterFor()) { /* var p = document.getElementById("pages"); if ( p != null ) p.style.display = "none"; */ var c = document.getElementById("continue"); if (c != null) { var iFrame = ""; { var f = Filter.value, iFrames = 0; if (f.length != 0) { var p = document.getElementById("page"); while (p != null) { if (p.id == "page") { var s = p.getAttribute("href"); if (s) if (s.length) { s = getIFrameURL(s); s += ((s.indexOf("?") > 0) ? "&" : "?") + filterFrameParam + "=" + f; if (isFilterForQ()) s += "&" + filterQuestionOnlyParam + "=only"; if (isFilterForW()) s += "&" + filterWordOnlyParam + "=only"; iFrame += ""; iFrames++; } } p = nextID(p); } try { localStorage.setItem("mainSectionFrames", iFrames); startFilterFrames(); if (iFrames == 0) endFilterFrames(); } catch (err) { } } } c.innerHTML = iFrame; c.style.display = ""; } } } var footer = document.getElementById("footerInfo"); if (footer != null) { var info = "", oInfo = "
"; var nURL = getURLFAQ(); if (nURL.length > 0) { nURL += (nURL.indexOf("?") > 0) ? "&" : "?"; nURL += "F=" + escape(text); if (isFilterForQ()) { nURL += (nURL.indexOf("?") > 0) ? "&" : "?"; nURL += filterQuestionOnlyParam + "=only"; } if (isFilterForW()) { nURL += (nURL.indexOf("?") > 0) ? "&" : "?"; nURL += filterWordOnlyParam + "=only"; } nURL = updateGlobalURL(nURL); } if (text.length != 0) { if (nResults == 0) info = "no result(s)"; else info += nResults.toString() + " result(s)"; if (nURL.length > 0) info += ", at " + nURL + ""; } oInfo = oInfo.replace("<%INFO%>", info); footer.outerHTML = oInfo; } } function wait() { } function InitCollapsedSections() { var i = 0; var imageId = Load("imageValue" + i); while (imageId != null) { collapsedSections[imageId] = "not expanded"; i++; imageId = Load("imageValue" + i); } } function OnLoadImage() { if (noReentry) return; if (!collapsedSectionsInitialized) { InitCollapsedSections(); collapsedSectionsInitialized = true; } elem = event.srcElement; if (ShouldExpand(elem)) { noReentry = true; try { elem.src = collapseImage.src; ExpandSection(elem); RemoveCollapsedItem(elem.id); collapsedSections[elem.id] = "expanded"; } catch (e) { } noReentry = false; } } function ShouldExpand(elem) { return (collapsedSections[elem.id] == null) || (Load("IsFirstPage") == null); } /* ********** ********** Begin ********** */ function LoadFrame(frame) { var doc = null; try { doc = frame.contentDocument || frame.contentWindow.document; } catch (e) { } if (doc != null) frame.style.height = getMainSectionHeight(doc); else { try { frame.style.height = localStorage.getItem("mainSectionHeight"); } catch (e) { } } try { frame.style.visibility = "visible"; if (doc != null) { try { var rgA = doc.getElementsByTagName("A"); if (rgA) { for (var i = 0; i < rgA.length; i++) { var a = rgA[i]; if (a.getAttribute("target") == null) a.setAttribute("target", "_top"); } } } catch (err) { } } var iFrames = localStorage.getItem("mainSectionFrames"); if (iFrames) { iFrames--; localStorage.setItem("mainSectionFrames", iFrames); if (iFrames == 0) endFilterFrames(); } } catch (err) { } } function startFilterFrames() { var mainSection = document.getElementById("mainSection"); if (mainSection) { //mainSection.style.opacity = .5; var bottomTable = document.getElementById("bottomTable"); if (bottomTable) { //bottomTable.style.opacity = .5; var wait = document.getElementById("wait"); if (wait == null) { var newImage = document.createElement("IMG"); newImage.id = "wait"; newImage.className = "wait"; newImage.src = "http://www.exontrol.com/images/wait.gif"; newImage.style.top = Math.max(32, mainSection.offsetTop) + "px"; mainSection.parentElement.insertBefore(newImage, mainSection); } else { wait.style.display = "block"; wait.style.top = mainSection.offsetTop + "px"; } } } } function endFilterFrames() { resetFilterFrames(); } function resetFilterFrames() { var mainSection = document.getElementById("mainSection"); if (mainSection) { mainSection.style.opacity = 1; var bottomTable = document.getElementById("bottomTable"); if (bottomTable) bottomTable.style.opacity = 1; var wait = document.getElementById("wait"); if (wait != null) wait.style.display = "none"; } onLayoutHeader(); } function getMainSectionHeight(doc) { var h = 0, e; e = doc.getElementById("mainSection"); if (e) h += e.clientHeight; return h + "px"; } function addLineNumbers() { var pre = document.getElementsByTagName('pre'), pl = pre.length; for (var i = 0; i < pl; i++) addLineNumber(pre[i]); } function addLineNumber(p) { p.innerHTML = p.innerHTML.trim(); var num = p.innerText.replace(/\s+$/g, "").split(/\n/).length; if (num > 1) { if (num > 16) p.className += " lesscode"; p.innerHTML = '' + p.innerHTML; var j = 0; for (j = 0; j < num; j++) { var line_num = p.getElementsByTagName('span')[0]; line_num.innerHTML += '' + (j + 1) + ''; } if (num > 16) { try { var rgBold = p.getElementsByTagName("B"); if (rgBold) if (rgBold.length > 0) p.scrollTop = Math.max(0, (rgBold[0].offsetTop - p.offsetTop) - p.clientHeight / 2); // scrolls the highligted elements to the center of the
}
catch (err)
{
}
}
}
}
function replaceURL(sURL)
{
try
{
window.history.replaceState(null, null, sURL);
sURL = getURL(sURL);
window.parent.history.replaceState(null, null, sURL);
}
catch (err)
{
};
}
function SetFilterPlaceHolder()
{
var vtFilter = document.getElementById("Filter");
if (vtFilter)
{
vtFilter.placeholder = "Filter For...";
vtFilter.value = "";
vtFilter.title = "The space separator indicates AND between words, while comma specifies OR between words.";
vtFilter.onkeypress = function (e)
{
if (e)
if (e.keyCode == 13)
{
filterFor(this.value);
onClickGo();
}
}
var vtFilterQuestionOnly = document.getElementById("btnFilterQuestionOnly");
if (vtFilterQuestionOnly == null)
{
var x = document.createElement("SPAN");
x.appendChild(document.createTextNode("Full"));
x.name = "btnFilterQuestionOnly";
x.title = "The filter is applied to the full content, else the filter is applied to the visible-content only.";
x.id = "btnFilterQuestionOnly";
x.className = isFilterForQ() ? "" : vtQuestionOnlyClass;
x.onclick = function (e)
{
if (e)
if (e.target)
{
var sURL = document.URL;
if (e.target.className == vtQuestionOnlyClass)
sURL = addURLParam(sURL, filterQuestionOnlyParam, "only");
else
sURL = removeURLParam(sURL, filterQuestionOnlyParam);
replaceURL(sURL);
var xClass = "";
if (e.target.className.indexOf(vtQuestionOnlyClass) < 0)
xClass = vtQuestionOnlyClass;
e.target.className = xClass;
}
};
vtFilter.parentElement.insertBefore(x, document.getElementById("btnFilter"));
}
var vtFilterWordOnly = document.getElementById("btnFilterWordOnly");
if (vtFilterWordOnly == null)
{
var x = document.createElement("SPAN");
x.appendChild(document.createTextNode("Word"));
x.name = "btnFilterWordOnly";
x.title = "The filter searches for any, else it searches for the exact word.";
x.id = "btnFilterWordOnly";
x.className = isFilterForW() ? vtWordOnlyClass : "";
x.onclick = function (e)
{
if (e)
if (e.target)
{
var sURL = document.URL;
if (e.target.className != vtWordOnlyClass)
sURL = addURLParam(sURL, filterWordOnlyParam, "only");
else
sURL = removeURLParam(sURL, filterWordOnlyParam);
replaceURL(sURL);
var xClass = "";
if (e.target.className.indexOf(vtWordOnlyClass) < 0)
xClass = vtWordOnlyClass;
e.target.className = xClass;
}
};
vtFilter.parentElement.insertBefore(x, document.getElementById("btnFilter"));
}
}
}
function SetActivePage()
{
var pages = document.getElementById("pages");
if (pages)
{
var sURL = document.URL.toString(), p = pages.children;
for (var i = 0; i < p.length; i++)
{
var hP = p[i].getAttribute("href");
if (sURL.indexOf(hP) >= 0)
{
p[i].removeAttribute("href");
p[i].removeAttribute("title");
p[i].className = "active";
}
}
}
}
function getToggleCount()
{
var vtResult = 0;
expandFirstItem = null;
try
{
var rgToggle = document.getElementsByClassName("toggle");
vtResult = rgToggle.length;
if (vtResult > 0)
if (vtResult < 16)
expandFirstItem = rgToggle[0];
}
catch (err)
{
}
return vtResult;
}
function SetFilterBoxInfo()
{
var btnFilter = document.getElementById("btnFilter");
if (btnFilter)
{
var newSpan = document.createElement("SPAN");
var textnode = document.createTextNode("Enter here the keywords you are looking for, separated by spaces or commas, and then press Enter key or click the Go button.");
newSpan.appendChild(textnode);
newSpan.className = "arrow-box";
newSpan.id = "filter-arrow-box";
btnFilter.parentElement.insertBefore(newSpan, btnFilter);
if (getToggleCount() > 16)
{
var filterFor = document.getElementById("Filter");
if (filterFor)
setTimeout(function () { showFilterBoxInfo(); }, 1000);
}
}
}
function setSessionItem(item, value)
{
try
{
window.sessionStorage.setItem(item, value);
}
catch (err)
{
};
}
function getSessionItem(item)
{
try
{
return window.sessionStorage.getItem(item);
}
catch (err)
{
};
return null;
}
function removeSessionItem(item)
{
try
{
window.sessionStorage.removeItem(item);
}
catch (err)
{
};
}
function showFilterBoxInfo()
{
if (getSessionItem("showFilterBoxInfo") == null)
{
if (!bDisableShowFilterBoxInfo)
{
var bContinue = true, filterFor = document.getElementById("Filter");
if (filterFor)
bContinue = filterFor != document.activeElement;
if (bContinue)
{
var filterInfo = document.getElementById("filter-arrow-box");
if (filterInfo)
{
setSessionItem("showFilterBoxInfo", "show");
filterInfo.className = "arrow-box-show";
setTimeout(function () { hideFilterBoxInfo(); }, 6000);
}
}
}
}
}
function hideFilterBoxInfo()
{
var filterInfo = document.getElementById("filter-arrow-box");
if (filterInfo)
filterInfo.className = "arrow-box-hide";
}
function hasFilter()
{
return getURLParam(document.URL, filterParam) || getURLParam(document.URL, filterFrameParam);
}
function loadPage()
{
if (true)
{
var bApplyFilter = false, vtFilter = document.getElementById("Filter");
var sF = hasFilter();
if (sF != null)
if (sF.length > 0)
bApplyFilter = (vtFilter != null);
SetActivePage();
SetFilterPlaceHolder();
SetCollapseAll();
ExpandCollapseAll(document.getElementById("toggleAllImage"));
if (bApplyFilter)
{
vtFilter.value = sF;
filterFor(sF);
}
if (!bApplyFilter)
SetFilterBoxInfo();
}
else
SetToggleAllLabel(false);
// vs70.js did this to allow up/down arrow scrolling, I think
try { mainSection.setActive(); } catch (e) { }
// make body visible, now that we're ready to render
var sBody = "";
if (isFrameFilterFor())
{
if (document.getElementById("error") != null)
sBody = "none";
else
{
var h = document.getElementById("header");
if (h != null)
h.style.display = "none";
var f = document.getElementById("footer");
if (f != null)
f.style.display = "none";
}
}
document.body.style.display = sBody;
parent.document.body.onhashchange = hashChange;
if (isFrameFilterFor())
{
try
{
localStorage.setItem("mainSectionHeight", getMainSectionHeight(document));
}
catch (e)
{
}
}
onLayoutHeader();
ensureVisibleHash();
}
function ensureVisibleHash()
{
try
{
var sURL = parent.document.URL, sHash = getURLHash(sURL);
var e = getURLParam(sURL, expandParam), eID = null;
if (e)
eID = "Img" + e;
if (sHash)
{
var vtElementsHash = parent.document.getElementsByName(sHash), bFound = false;
if (vtElementsHash.length)
{
var vtTR = vtElementsHash[0];
while (vtTR && vtTR.tagName != "TR")
vtTR = vtTR.parentElement;
if (vtTR)
if (vtTR.id == "question")
{
var eIMG = vtTR.firstElementChild.firstElementChild;
if (eIMG)
if (eIMG.tagName == "IMG")
{
eID = eIMG.id;
bFound = true;
}
}
}
if (!bFound)
if (e == null)
eID = "Img" + sHash;
}
if (eID)
{
var img = parent.document.getElementById(eID);
if (img)
{
img.parentElement.parentElement.style.display = ""; // if hash inside the page, and it is filter, it requires to be visible!
ExpandItem(img);
scrollToQuestion = img.parentElement.parentElement;
if (scrollToQuestion)
{
setTimeout(function ()
{
try
{
if (scrollToQuestion)
parent.window.scrollTo(0, scrollToQuestion.offsetTop);
scrollToQuestion = null;
}
catch (err)
{
}
}, 100);
}
}
}
else
if (expandFirstItem != null) // set by getToggleCount
{
ExpandItem(expandFirstItem);
expandFirstItem = null;
}
}
catch (err)
{
}
}
function onLayoutHeader()
{
}
function resizeWindow(e)
{
onLayoutHeader();
}
function scrollWindow(e)
{
onLayoutHeader();
hideFilterBoxInfo();
}
function readyStateChange(e)
{
document.body.style.display = "block";
}
function hashChange()
{
ensureVisibleHash();
}
function clickWindow(e)
{
var bHideFilterBoxInfo = true;
var tag = e.target.tagName;
if (tag)
{
if (tag == "INPUT")
{
var name = e.target.name;
if (name)
if (name == "btnFilter")
{
bHideFilterBoxInfo = false;
onClickGo();
}
else
if (name == "btnClear")
onClickClear();
}
else
if (tag == "IMG")
{
var p = e.target.parentElement.parentElement;
if (p != null)
if (p.className == "code")
previewImg(e.target);
}
else
{
if (e.offsetY < 8)
{
if (tag == "PRE") // select code
selectCode(e.target);
else
if (tag == "P") // toggle preview
previewImg(e.target.firstElementChild);
}
else
if (tag == "PRE")
{
if (e.offsetY > e.target.clientHeight - 8) // copy
copyToClipboard(e.target);
}
else
if (tag == "DIV") // share code
if (e.offsetY > e.target.clientHeight)
shareCode(e.target);
}
}
if (bHideFilterBoxInfo)
hideFilterBoxInfo();
bDisableShowFilterBoxInfo = true;
}
function onClickGo()
{
var sURL = document.URL, sOURL = sURL;
var filterFor = document.getElementById("Filter").value;
if ((filterFor == null) || (filterFor.length == 0))
{
bDisableShowFilterBoxInfo = false;
removeSessionItem("showFilterBoxInfo");
showFilterBoxInfo();
sURL = removeURLParam(sURL, filterParam);
}
else
sURL = addURLParam(sURL, filterParam, filterFor);
if (sOURL != sURL)
replaceURL(sURL);
}
function onClickClear()
{
resetFilterFrames();
window.scrollTo(0, 0);
var sURL = document.URL;
sURL = removeURLHash(sURL);
sURL = removeURLParam(sURL, filterParam);
sURL = removeURLParam(sURL, expandParam);
replaceURL(sURL);
}
function selectURL(sURL)
{
if (sURL)
{
try
{
window.parent.parent.location = sURL;
}
catch (err)
{
}
}
}
function updateGlobalURL(sURL)
{
if (sURL)
{
try
{
var sProduct = "product";
var vtProduct = getURLParam(window.parent.parent.location.href, sProduct);
if (vtProduct)
sURL = addURLParam(sURL, sProduct, vtProduct);
}
catch (err)
{
}
}
return sURL;
}
function shareCode(div)
{
if (div)
{
try
{
var sURL = getURL(location.href.replace(filterFrameParam + "=", filterParam + "=")); /*replace the FR with F*/
sURL = removeURLHash(sURL);
// shares the hash, in case it contains
var sHash = null;
if (div.children.length)
{
var a = div.children[0];
if (a.tagName == "A")
{
sHash = a.getAttribute("name");
if (sHash)
if (sHash.length)
sURL += "#" + sHash;
}
}
if (sHash == null) // shares the E instead
{
var sE = div.parentElement.parentElement.firstElementChild.innerText.replace(":", "").replace(" ", "");
sURL = addURLParam(sURL, expandParam, sE);
}
if (isFilterForQ())
sURL = addURLParam(sURL, filterQuestionOnlyParam, "only");
if (isFilterForW())
sURL = addURLParam(sURL, filterWordOnlyParam, "only");
sURL = updateGlobalURL(sURL);
selectURL(sURL);
}
catch (err)
{
}
}
}
function previewImg(img)
{
if (img)
img.className = img.className.length == 0 ? "preview" : "";
}
function addTogglePreview(img)
{
if (img)
{
var p = img.parentElement;
if (p)
if (p.tagName == "P")
if (p.className.length == 0)
if (img.height > 128)
p.className = "preview";
}
}
function selectCode(e)
{
var sel = window.getSelection();
if (sel)
{
sel.removeAllRanges();
var range = document.createRange();
try
{
var span = e.firstChild, s = span;
if (span)
if (span.tagName == "SPAN")
if (span.className == "line-number")
s = span.nextSibling;
range.setStartBefore(s);
range.setEndAfter(e.lastChild);
}
catch (er)
{
var span = e.firstChild;
if (span)
if (span.tagName == "SPAN")
if (span.className == "line-number")
span.style.display = "none";
range.selectNodeContents(e);
};
sel.addRange(range);
}
}
function copyToClipboard(e)
{
var bSuccess = false;
var sel = window.getSelection();
if (sel)
{
selectCode(e);
if (bSuccess = document.execCommand('copy'))
sel.removeAllRanges();
}
return bSuccess;
}
var collapsedItems = new Array();
function ExpandItem(imageItem)
{
if (imageItem)
{
imageItem.src = collapseImage.src;
ExpandSection(imageItem);
RemoveCollapsedItem(imageItem.id);
onExpandCollapse();
}
}
function CollapseItem(imageItem)
{
if (imageItem)
{
imageItem.src = expandImage.src;
CollapseSection(imageItem);
AddCollapsedItem(imageItem.id);
onExpandCollapse();
}
}
function onExpandCollapse()
{
SetCollapseAll();
if (isFrameFilterFor())
{
try
{
var f = window.frameElement;
if (f != null)
f.style.height = getMainSectionHeight(document);
}
catch (e)
{
}
}
}
function ExpandCollapse(imageItem)
{
if (imageItem)
{
var bContinue = true;
try
{
if (event)
if (event.target.tagName == "DIV") // share code
if (event.offsetY > event.target.clientHeight)
bContinue = false;
}
catch (err)
{
};
if (bContinue)
{
noReentry = true; // Prevent entry to OnLoadImage
if (ItemCollapsed(imageItem.id) == true)
ExpandItem(imageItem);
else
CollapseItem(imageItem);
noReentry = false;
}
}
}
function CollapseAll(imageItem)
{
noReentry = true; // Prevent entry to OnLoadImage
var imgElements = document.getElementsByName("toggleSwitch");
var i;
imageItem.src = expandAllImage.src;
AddCollapsedItem(imageItem.id);
for (i = 0; i < imgElements.length; ++i)
{
wait();
imgElements[i].src = expandImage.src;
CollapseSection(imgElements[i]);
AddCollapsedItem(imgElements[i].id);
}
SetToggleAllLabel(true);
noReentry = false;
}
function ExpandHeaderInfo(e, b)
{
e.className = b ? "" : "collapsed";
}
function isLoading()
{
try
{
return event.type == "load";
}
catch (err)
{
}
return false;
}
function ExpandHeaderInfos()
{
if (!isLoading())
{
var rgInfos = document.getElementsByName("infos");
if (rgInfos)
for (var iInfo = 0; iInfo < rgInfos.length; iInfo++)
ExpandHeaderInfo(rgInfos[iInfo], true);
}
}
function CollapseHeaderInfos()
{
if (!isLoading())
{
var rgInfos = document.getElementsByName("infos");
if (rgInfos)
{
for (var iInfo = 0; iInfo < rgInfos.length; iInfo++)
ExpandHeaderInfo(rgInfos[iInfo], false);
}
}
}
function ExpandCollapseAll(imageItem)
{
if (imageItem)
{
noReentry = true; // Prevent entry to OnLoadImage
var imgElements = document.getElementsByName("toggleSwitch");
var i;
if (ItemCollapsed(imageItem.id) == true)
{
ExpandHeaderInfos();
imageItem.src = collapseAllImage.src;
RemoveCollapsedItem(imageItem.id);
for (i = 0; i < imgElements.length; ++i)
{
wait();
imgElements[i].src = collapseImage.src;
ExpandSection(imgElements[i]);
RemoveCollapsedItem(imgElements[i].id);
}
SetToggleAllLabel(false);
}
else
{
CollapseHeaderInfos();
imageItem.src = expandAllImage.src;
AddCollapsedItem(imageItem.id);
for (i = 0; i < imgElements.length; ++i)
{
wait();
imgElements[i].src = expandImage.src;
CollapseSection(imgElements[i]);
AddCollapsedItem(imgElements[i].id);
}
SetToggleAllLabel(true);
}
noReentry = false;
}
}
function ExpandCollapse_CheckKey(imageItem)
{
if (imageItem)
if (window.event.keyCode == 13)
ExpandCollapse(imageItem);
}
function ExpandCollapseAll_CheckKey(imageItem)
{
if (imageItem)
if (window.event.keyCode == 13)
ExpandCollapseAll(imageItem);
}
function ExpandSection(imageItem)
{
if (imageItem)
if (imageItem.parentElement != null)
{
var c = imageItem.parentElement.parentElement.children;
if (c.length == 2)
{
var cAnswer = c[1].children["answer"];
if (cAnswer)
{
cAnswer.style.display = "block";
cAnswer.parentElement.className = "answere";
c[0].style.background = "#f4f4f4";
try
{
var cQuote = cAnswer.firstElementChild.firstElementChild;
if (cQuote)
{
try
{
// Adds line numbers once the user expands section
var rgPre = cQuote.getElementsByTagName("PRE");
if (rgPre.length)
{
for (var iPre = 0; iPre < rgPre.length; iPre++)
{
var pre = rgPre[iPre];
if (pre.getElementsByClassName)
{
var ln = pre.getElementsByClassName("line-number");
if (ln)
if (ln.length == 0)
addLineNumber(pre);
}
else
break;
}
}
}
catch (err)
{
}
try
{
var rgImg = cQuote.getElementsByTagName("IMG");
if (rgImg.length)
{
for (var iImg = 0; iImg < rgImg.length; iImg++)
addTogglePreview(rgImg[iImg]);
}
}
catch (err)
{
}
}
}
catch (err)
{
}
}
}
}
}
function CollapseSection(imageItem)
{
if (imageItem)
if (imageItem.parentElement != null)
{
var c = imageItem.parentElement.parentElement.children;
if (c.length == 2)
{
c[0].style.background = "";
var cAnswer = c[1].children["answer"];
if (cAnswer)
{
cAnswer.style.display = "none";
cAnswer.parentElement.className = "";
}
}
}
}
function SetCollapseAll()
{
var imageElement = document.getElementById("toggleAllImage");
if (imageElement == null)
return;
var imgElements = document.getElementsByName("toggleSwitch");
var allCollapsed = true;
var i, l = imgElements.length;
for (i = 0; i < l; ++i)
{
wait();
allCollapsed = allCollapsed && ItemCollapsed(imgElements[i].id)
}
if (allCollapsed)
{
imageElement.src = expandAllImage.src;
AddCollapsedItem(imageElement.id);
}
else
{
imageElement.src = collapseAllImage.src;
RemoveCollapsedItem(imageElement.id);
}
SetToggleAllLabel(allCollapsed);
}
function SetToggleAllLabel(allCollapsed)
{
var labelElement;
labelElement = document.getElementById("collapseAllLabel");
if (labelElement == null)
return;
labelElement.style.display = "none";
labelElement = document.getElementById("expandAllLabel");
labelElement.style.display = "none";
if (allCollapsed)
{
labelElement = document.getElementById("expandAllLabel");
labelElement.style.display = "";
}
else
{
labelElement = document.getElementById("collapseAllLabel");
labelElement.style.display = "";
}
}
function ItemCollapsed(imageId)
{
var i;
for (i = 0; i < collapsedItems.length; ++i)
{
wait();
if (imageId == collapsedItems[i])
return true;
}
return false;
}
function AddCollapsedItem(imageId)
{
collapsedItems[collapsedItems.length] = imageId;
}
function RemoveCollapsedItem(imageId)
{
for (var i = 0; i < collapsedItems.length; ++i)
{
wait();
if (imageId == collapsedItems[i])
collapsedItems.splice(i, 1);
}
}
function OpenSection(imageItem)
{
if (ItemCollapsed(imageItem.id) == true)
ExpandCollapse(imageItem);
}
function ClickHRefInside(e)
{
if (e)
{
var rgA = e.getElementsByTagName("A");
if (rgA.length == 1)
selectURL(rgA[0].href);
}
}
function ExpandHeaderGroup(e)
{
if (e)
e.parentElement.parentElement.className = e.parentElement.parentElement.className.length == 0 ? "collapsed" : "";
}