diff options
Diffstat (limited to 'installer/9/nb/content/main.js')
-rw-r--r-- | installer/9/nb/content/main.js | 255 |
1 files changed, 255 insertions, 0 deletions
diff --git a/installer/9/nb/content/main.js b/installer/9/nb/content/main.js new file mode 100644 index 00000000..457dfe1a --- /dev/null +++ b/installer/9/nb/content/main.js @@ -0,0 +1,255 @@ +/* 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); + } +} |