/* global stemmer */ /** * Miscellaneous js functions for WebHelp * Kasun Gajasinghe, http://kasunbg.blogspot.com * David Cramer, http://www.thingbag.net * */ function adjust(){ var headerHeight = $("#header").outerHeight( true ); $("#leftnavigation").css('top' , headerHeight); if(document.body.clientWidth >= 701) $("#content").css('top' , headerHeight+'px'); else $("#content").css('top' , 0+'px'); } $( window ).resize(function() { adjust(); }); $(document).ready(function() { adjust(); var href = window.location.href; var indexOfTermToSearch = href.indexOf('?search='); if (indexOfTermToSearch !== -1) { var term = decodeURI(href.substring(indexOfTermToSearch+8)); $('#textToSearch').val(term); document.cookie='textToSearch='+term; searchHighlight(term); } $(function() { $("#tabs").tabs({ cookie: { expires: 2 } }); }); //Generate the tree $("#ulTreeDiv").attr("style",""); $("#tree").treeview({ collapsed: true, animated: "medium", control: "#sidetreecontrol", persist: "cookie" }); //after toc fully styled, display it. Until loading, a 'loading' image will be displayed $("#tocLoading").attr("style","display:none;"); //$("#ulTreeDiv").attr("style","display:block;"); //.searchButton is the css class applied to 'Go' button $(function() { $("button", ".searchButton").button(); $("button", ".searchButton").click(function() {return false;}); }); //'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) if ($.cookie('ui-tabs-1') === '1') { //search tab is visible let textToSearch = $.cookie('textToSearch') ; if ( textToSearch !== undefined && textToSearch !== null && textToSearch.length > 0) { document.getElementById('textToSearch').value = $.cookie('textToSearch'); Verifie('diaSearch_Form'); var hcookie = selectTxtToHigh() ; searchHighlight(hcookie); } } syncToc(); //Synchronize the toc tree with the content pane, when loading the page. //$("#doSearch").button(); //add jquery button styling to 'Go' button }); function selectTxtToHigh() { var allCookies = document.cookie.split(";"); var hcookie; for (var iCookie = 0; iCookie < allCookies.length; iCookie++) { var cookie = allCookies[iCookie]; var indexOfEq = cookie.indexOf('='); var key = cookie.substring(0, indexOfEq); if (key.includes( "highlight")){ hcookie = cookie.substring(indexOfEq + 1); } } return hcookie; } /** * Synchronize with the tableOfContents */ function syncToc() { var tocid = document.getElementById("zz_current-id").getAttribute("data-id"); var a = document.getElementById(tocid); if (a !== undefined && a !== null ) { //Expanding the child sections of the selected node. var nodeClass = a.getAttribute("class"); if (nodeClass !== null && !nodeClass.match(/collapsable/)) { a.setAttribute("class", "collapsable"); //remove display:none; css style from <ul> block in the selected node. var ulNode = a.getElementsByTagName("ul")[0]; if (ulNode !== undefined) { if (ulNode.hasAttribute("style")) { ulNode.setAttribute("style", "display: block; background-color: #D8D8D8 !important;"); } else { var ulStyle = document.createAttribute("style"); ulStyle.nodeValue = "display: block; background-color: #D8D8D8 !important;"; ulNode.setAttributeNode(ulStyle); } } //adjust tree's + sign to - var divNode = a.getElementsByTagName("div")[0]; if (divNode !== undefined) { if (divNode.hasAttribute("class")) { divNode.setAttribute("class", "hitarea collapsable-hitarea"); } else { var divClass = document.createAttribute("class"); divClass.nodeValue = "hitarea collapsable-hitarea"; divNode.setAttributeNode(divClass); } } //set persistence cookie when a node is auto expanded // setCookieForExpandedNode("webhelp-currentid"); } var b = a.getElementsByTagName("a")[0]; if (b !== undefined) { //Setting the background for selected node. var style = a.getAttribute("style", 2); if (style !== null && !style.match(/background-color: Background;/)) { a.setAttribute("style", "background-color: #D8D8D8; " + style); b.setAttribute("style", "color: black;"); } else if (style !== null) { a.setAttribute("style", "background-color: #D8D8D8; " + style); b.setAttribute("style", "color: black;"); } else { a.setAttribute("style", "background-color: #D8D8D8; "); b.setAttribute("style", "color: black;"); } } //shows the node related to current content. //goes a recursive call from current node to ancestor nodes, displaying all of them. while (a.parentNode && a.parentNode.nodeName) { var parentNode = a.parentNode; var nodeName = parentNode.nodeName; if (nodeName.toLowerCase() === "ul") { parentNode.setAttribute("style", "display: block;"); } else if (nodeName.toLocaleLowerCase() === "li") { parentNode.setAttribute("class", "collapsable"); parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea "); } a = parentNode; } } } /** * Code for Show/Hide TOC * */ function showHideToc() { var showHideButton = $("#showHideButton"); var leftNavigation = $("#leftnavigation"); var header = $("#header"); var headerHeight = header.outerHeight( true ); var content = $("#content"); var navigationDisplay = leftNavigation.css('display'); if (showHideButton !== undefined && ( navigationDisplay === "block")) { //Hide TOC showHideButton.removeClass('pointLeft').addClass('pointRight'); content.css("margin", "0 0 0 0"); leftNavigation.css("display","none"); showHideButton.attr("title", "Show table of contents"); if(document.body.clientWidth <= 700) content.css('display','block'); } else { //Show the TOC showHideButton.removeClass('pointRight').addClass('pointLeft'); content.css("margin", "0 0 0 315px"); leftNavigation.css("display","block"); showHideButton.attr("title", "Hide table of contents"); if(document.body.clientWidth <= 700) content.css('display','none'); } leftNavigation.css('top' , headerHeight); } /** * Code for searh highlighting */ var highlightOn = true; function searchHighlight(searchText) { highlightOn = true; if (searchText !== undefined) { var wList; var sList = new Array(); //stem list //Highlight the search terms searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "</").replace(/_di_/g, "%24_"); searchText = searchText.replace(/ +/g, " "); searchText = searchText.replace(/ $/, "").replace(/^ /, ""); wList = searchText.split(" "); $("#content").highlight(wList); //Highlight the search input if(typeof stemmer !== "undefined" ){ //Highlight the stems for (var i = 0; i < wList.length; i++) { var stemW = stemmer(wList[i]); sList.push(stemW); } } else { sList = wList; } $("#content").highlight(sList); //Highlight the search input's all stems var _content = document.getElementById("content"); var spans = _content.getElementsByTagName("span"); var hasOne = false; for (i = 0; i < spans.length; i++) { var span = spans[i]; if (span.className === "highlight") { span.setAttribute("id", "firstHighlight"); hasOne = true; break; } } if (hasOne) { document.getElementById("firstHighlight").scrollIntoView(); } } } function searchUnhighlight(){ highlightOn = false; //unhighlight the search input's all stems $("#content").unhighlight(); $("#content").unhighlight(); } function toggleHighlight(){ if(highlightOn) { searchUnhighlight(); } else { var hcookie = selectTxtToHigh() ; searchHighlight(hcookie); } }