first commit
This commit is contained in:
459
projects/helpman_navigation.js
Normal file
459
projects/helpman_navigation.js
Normal file
@ -0,0 +1,459 @@
|
||||
/* ------------ Script copyright 2005-2015 EC Software -------------
|
||||
This script was created by Help & Manual and is part of the
|
||||
Webhelp export format. This script is designed for use in
|
||||
combination with the output of Help & Manual and must not
|
||||
be used outside this context. http://www.helpandmanual.com
|
||||
|
||||
Do not modify this file! It will be overwritten by Help & Manual.
|
||||
----------------------------------------------------------------- */
|
||||
|
||||
var usecookie = false,
|
||||
tocselecting = false,
|
||||
abspossupported = 0,
|
||||
currentselection = null,
|
||||
currenttocstate = "";
|
||||
|
||||
function hmAddCss(adoc, cssCode) {
|
||||
var styleElement = adoc.createElement("style");
|
||||
styleElement.type = "text/css";
|
||||
if (styleElement.styleSheet) {
|
||||
styleElement.styleSheet.cssText = cssCode;
|
||||
}
|
||||
else {
|
||||
styleElement.appendChild(adoc.createTextNode(cssCode));
|
||||
}
|
||||
adoc.getElementsByTagName("head")[0].appendChild(styleElement);
|
||||
}
|
||||
|
||||
function hmSupportsAbspos() {
|
||||
if (abspossupported==0) {
|
||||
tmp = $('<div style="position:absolute;left:0;right:0;display:none"> </div>').appendTo('body');
|
||||
if (($(tmp).outerWidth()+30) > $(window).width()) abspossupported = 1;
|
||||
else abspossupported = -1;
|
||||
tmp.remove();
|
||||
}
|
||||
if (abspossupported==1) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
function hmNoAbsposResize(jdiv, w, h) {
|
||||
var windowWidth, windowHeight;
|
||||
if (self.innerHeight) { // all except Explorer
|
||||
if(document.documentElement.clientWidth){
|
||||
windowWidth = document.documentElement.clientWidth;
|
||||
} else {
|
||||
windowWidth = self.innerWidth;
|
||||
}
|
||||
windowHeight = self.innerHeight;
|
||||
} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
|
||||
windowWidth = document.documentElement.clientWidth;
|
||||
windowHeight = document.documentElement.clientHeight;
|
||||
} else if (document.body) { // other Explorers
|
||||
windowWidth = document.body.clientWidth;
|
||||
windowHeight = document.body.clientHeight;
|
||||
}
|
||||
if (w) jdiv.css('width', ( windowWidth - parseInt(jdiv.css('left')) - parseInt(jdiv.css('right')) ));
|
||||
if (h) jdiv.css('height', ( windowHeight - parseInt(jdiv.css('top')) - parseInt(jdiv.css('bottom')) ));
|
||||
}
|
||||
|
||||
function hmNavigationFrame() {
|
||||
var actFrames = new Array(
|
||||
window.frames['hmnavigation'],
|
||||
window.frames['hmcontent']
|
||||
);
|
||||
for (var i=0;i<actFrames.length;i++) {
|
||||
if (actFrames[i].name=='hmnavigation') return actFrames[i];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
function hmContentFrame() {
|
||||
if (!document.getElementById("hmcontent")) return null;
|
||||
return hmcontent;
|
||||
}
|
||||
|
||||
var lastTrackEvent = "";
|
||||
var track = function(action, data) {
|
||||
if (gaaccount !== "") { // Initiate the tracker on first call
|
||||
if (typeof ga == "undefined") {
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
if (gatrackername=='') gatrackername = 'hmga';
|
||||
ga('create', { trackingId: gaaccount, cookieDomain: 'auto', name: gatrackername});
|
||||
|
||||
let entryPage = document.location.pathname.substr(document.location.pathname.lastIndexOf("\/"));
|
||||
|
||||
// Bei allen Trackern mit Namen müssen alle Calls mit dem Namen als Namespace verwendet werden, sonst werden die Calls einfach ignoriert.
|
||||
ga(gatrackername + '.set', 'page', entryPage)
|
||||
ga(gatrackername + '.send', 'pageview');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof ga != "undefined" && (lastTrackEvent != action+data)) {
|
||||
lastTrackEvent = action+data;
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
|
||||
// Tracking calls after first init
|
||||
switch(action) {
|
||||
case "topic":
|
||||
var levs = parseInt(gatracklevels),
|
||||
page = data.substring(data.indexOf("//")+1,data.length);
|
||||
page = page.substring(page.lastIndexOf("/")+1,page.length);
|
||||
|
||||
if (levs > 0) {
|
||||
var fullPath = window.location.href.substring(0, window.location.href.lastIndexOf("/"));
|
||||
if (levs == 9) {
|
||||
page = fullPath + '/' + page;
|
||||
}
|
||||
else {
|
||||
for (var i=0;i<levs;i++) {
|
||||
page = fullPath.substring(fullPath.lastIndexOf("/")+1,fullPath.length) + '/' + page;
|
||||
fullPath = fullPath.substring(0, fullPath.lastIndexOf("/"));
|
||||
}
|
||||
}
|
||||
}
|
||||
ga(gatrackername+'.set', 'page', page);
|
||||
ga(gatrackername+'.send', 'pageview');
|
||||
break;
|
||||
|
||||
case "search":
|
||||
ga(gatrackername+'.send', {
|
||||
hitType: 'event',
|
||||
eventCategory: 'Search Help',
|
||||
eventAction: 'Search',
|
||||
eventLabel: data
|
||||
});
|
||||
break;
|
||||
|
||||
case "index":
|
||||
ga(gatrackername+'.send', {
|
||||
hitType: 'event',
|
||||
eventCategory: 'Select Index Term',
|
||||
eventAction: 'Click',
|
||||
eventLabel: data
|
||||
});
|
||||
break;
|
||||
|
||||
case "exit":
|
||||
ga(gatrackername+'.send', {
|
||||
hitType: 'event',
|
||||
eventCategory: 'Outbound Link',
|
||||
eventAction: 'Click Link',
|
||||
eventLabel: data,
|
||||
transport: 'beacon'
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function fullexpand(animate) { switchall(true, animate); }
|
||||
function fullcollapse(animate) { switchall(false, animate); }
|
||||
|
||||
function levelexpand(divID, animate) {
|
||||
var thisDIV = hmNavigationFrame().document.getElementById(divID);
|
||||
var items = thisDIV.getElementsByTagName("li");
|
||||
for(var i = 0; i < items.length; i++) {
|
||||
if (items[i].parentNode==thisDIV) {
|
||||
var thisUL = hmULfromID(items[i].id);
|
||||
if (thisUL) hmSwitchNode(thisUL, true, animate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function switchall(nodevisible, animate) {
|
||||
var toc = hmNavigationFrame().document.getElementById("toc");
|
||||
if (toc) {
|
||||
var items = toc.getElementsByTagName("ul");
|
||||
for(var i = 0; i < items.length; i++) hmSwitchNode(items[i], nodevisible, animate);
|
||||
if ((nodevisible) && (currentselection)) intoview(currentselection, toc, false);
|
||||
}
|
||||
}
|
||||
|
||||
function loadstate(toc) {
|
||||
var tmpAnimate = hmAnimate;
|
||||
hmAnimate = false;
|
||||
currentselection = null;
|
||||
|
||||
if (currenttocstate=="") {
|
||||
if (usecookie) currenttocstate = document.cookie;
|
||||
else { /* load default toc state */
|
||||
if (initialtocstate == 'expandall') fullexpand(false);
|
||||
else {
|
||||
if (initialtocstate == 'expandtoplevel') { fullcollapse(false); levelexpand('toc', false); }
|
||||
else fullcollapse(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (currenttocstate != "") {
|
||||
var toc = hmNavigationFrame().document.getElementById("toc");
|
||||
if (toc) {
|
||||
var items = toc.getElementsByTagName("ul");
|
||||
for(var i = 0; i < items.length; i++) hmSwitchNode(items[i], (currenttocstate.indexOf(items[i].id+',')>-1), false);
|
||||
}
|
||||
}
|
||||
if (hmContentFrame()) {
|
||||
var topicID = hmContentFrame().location.href.substring(hmContentFrame().location.href.lastIndexOf("/")+1,hmContentFrame().location.href.length);
|
||||
if (topicID.lastIndexOf("#") != -1) topicID = topicID.substring(0,topicID.lastIndexOf("#"));
|
||||
if (topicID.lastIndexOf("?") != -1) topicID = topicID.substring(0,topicID.lastIndexOf("?"));
|
||||
tocselecting = false;
|
||||
lazysync(topicID);
|
||||
}
|
||||
hmAnimate = tmpAnimate;
|
||||
}
|
||||
|
||||
function savestate(toc) {
|
||||
currenttocstate = "";
|
||||
var items = toc.getElementsByTagName("ul");
|
||||
for(var i = 0; i < items.length; i++) if (items[i].style.display!="none") currenttocstate = currenttocstate.concat(items[i].id + ",");
|
||||
if (usecookie) document.cookie = currenttocstate;
|
||||
}
|
||||
|
||||
function toggle(nodeID) {
|
||||
var thisUL = hmULfromID(nodeID);
|
||||
if (thisUL) hmSwitchNode(thisUL, ((thisUL.style.display=="none")?true:false), true);
|
||||
}
|
||||
|
||||
function hmNodeClicked(node, event) {
|
||||
if (event.stopPropagation) { event.stopPropagation(); } else { event.cancelBubble = true; } //MSIE
|
||||
if ($(node).css('direction') != 'rtl') {
|
||||
var scrOfX = $(hmNavigationFrame()).scrollLeft();
|
||||
var scrOfY = $(hmNavigationFrame()).scrollTop();
|
||||
var offset = parseInt( $(node).css('padding-left'));
|
||||
var thisClicked = ( (event.clientY+scrOfY > $(node).offset().top) && (event.clientY+scrOfY < ($(node).offset().top+offset)) &&
|
||||
(event.clientX+scrOfX > $(node).offset().left) && (event.clientX+scrOfX < ($(node).offset().left+offset+$(node.firstChild).outerWidth())) );
|
||||
var iconClicked = (thisClicked && (event.clientX+scrOfX > $(node).offset().left) && (event.clientX+scrOfX < ($(node).offset().left+offset)));
|
||||
}
|
||||
else {
|
||||
var scrOfX = $(hmNavigationFrame()).scrollLeft();
|
||||
var scrOfY = $(hmNavigationFrame()).scrollTop();
|
||||
var offset = parseInt( $(node).css('padding-right'));
|
||||
var nodeW = $(node).outerWidth();
|
||||
var textW = $(node.firstChild).outerWidth();
|
||||
var thisClicked = ( (event.clientY+scrOfY > $(node).offset().top) && (event.clientY+scrOfY < ($(node).offset().top+offset)) &&
|
||||
(event.clientX+scrOfX < $(node).offset().left+nodeW) && (event.clientX+scrOfX > ($(node).offset().left+nodeW-offset-textW)) );
|
||||
var iconClicked = (thisClicked && (event.clientX+scrOfX < $(node).offset().left+nodeW) && (event.clientX+scrOfX > ($(node).offset().left+nodeW-offset)));
|
||||
}
|
||||
var thisID = node.id;
|
||||
if (iconClicked) {
|
||||
toggle('ul'+thisID.substring(1,thisID.length));
|
||||
}
|
||||
else if (thisClicked) {
|
||||
if (hmTocSingleClick) {
|
||||
hilightexpand('s'+thisID.substring(1,thisID.length));
|
||||
}
|
||||
else {
|
||||
hilight('s'+thisID.substring(1,thisID.length));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function hmNodeDblclicked(node) {
|
||||
thisID = node.id;
|
||||
toggle('ul'+thisID.substring(1,thisID.length));
|
||||
}
|
||||
|
||||
function hmLIfromID(thisID) {
|
||||
return hmNavigationFrame().document.getElementById('i'+thisID.replace(/[isaul]/g,''));
|
||||
}
|
||||
|
||||
function hmULfromID(thisID) {
|
||||
return hmNavigationFrame().document.getElementById('ul'+thisID.replace(/[isaul]/g,''));
|
||||
}
|
||||
|
||||
function hmSwitchNode(thisUL, nodevisible, animate) {
|
||||
if ((thisUL.style.display!='none')!=nodevisible) {
|
||||
var thisLI = hmLIfromID(thisUL.id);
|
||||
if (thisLI) {
|
||||
var thisIcon = thisLI.getAttribute('data-bg');
|
||||
if (thisIcon!='') $(thisLI).css('background-image', 'url(' + (nodevisible ? thisIcon.substr(thisIcon.indexOf(';')+1, thisIcon.length) : thisIcon.substr(0, thisIcon.indexOf(';')) ) + ')');
|
||||
|
||||
if (nodevisible) {
|
||||
if (animate && hmAnimate) $(thisUL).slideDown('fast');
|
||||
else thisUL.style.display = 'block';
|
||||
}
|
||||
else {
|
||||
if (animate && hmAnimate) $(thisUL).slideUp('fast');
|
||||
else thisUL.style.display = 'none';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function hilightexpand(spanID) {
|
||||
if (hilight(spanID)) {
|
||||
var thisUL = hmULfromID(spanID);
|
||||
if (thisUL) hmSwitchNode(thisUL, true, true);
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
function hilight(spanID) {
|
||||
tocselecting = true;
|
||||
var thisnode = null;
|
||||
var selectionchanged = false;
|
||||
thisnode = hmNavigationFrame().document.getElementById(spanID);
|
||||
if (thisnode) {
|
||||
try {
|
||||
if ((currentselection) && (currentselection != thisnode)) currentselection.className = "heading" + currentselection.className.substr(7,1);
|
||||
}
|
||||
catch(e){
|
||||
}
|
||||
thisnode.className = "hilight"+thisnode.className.substr(7,1);
|
||||
selectionchanged = (currentselection != thisnode);
|
||||
currentselection = thisnode;
|
||||
}
|
||||
return selectionchanged;
|
||||
}
|
||||
|
||||
function intoview(thisnode, tree, selectionchanged) {
|
||||
var thisparent = thisnode;
|
||||
while (thisparent != tree) {
|
||||
if ((selectionchanged) && (thisparent.nodeName.toLowerCase()=="ul")) hmSwitchNode(thisparent,true,true);
|
||||
thisparent = thisparent.parentNode;
|
||||
}
|
||||
thisparent = thisnode;
|
||||
for (var t=0; thisparent!=null; t+=thisparent.offsetTop, thisparent=thisparent.offsetParent);
|
||||
var bt = (hmNavigationFrame().window.pageYOffset)?hmNavigationFrame().window.pageYOffset:hmNavigationFrame().document.body.scrollTop;
|
||||
var bh = (hmNavigationFrame().window.innerHeight)?hmNavigationFrame().window.innerHeight:hmNavigationFrame().document.body.offsetHeight;
|
||||
if ((t+thisnode.offsetHeight-bt) > bh) hmNavigationFrame().window.scrollTo(0,(t+24-bh))
|
||||
else if (t < bt) hmNavigationFrame().window.scrollTo(0,t);
|
||||
}
|
||||
|
||||
function collapseunfocused(toc, selectedID) {
|
||||
if (toc) {
|
||||
var nodepath = 'ul'+selectedID.replace(/[isaul]/g,'') + ".";
|
||||
var nodeCompare = "";
|
||||
var items = toc.getElementsByTagName("ul");
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
if (items[i].id.indexOf(".")<0) nodeCompare = items[i].id + ".";
|
||||
else nodeCompare = items[i].id;
|
||||
if (nodepath.lastIndexOf(nodeCompare)<0) {
|
||||
hmSwitchNode(items[i], false, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function quicksync(aID) {
|
||||
if (aID != "") {
|
||||
var toc = hmNavigationFrame().document.getElementById("toc");
|
||||
if (toc) {
|
||||
if (!tocselecting) {
|
||||
aID = "s"+aID.substring(1,aID.length);
|
||||
var thisspan = hmNavigationFrame().document.getElementById(aID);
|
||||
if (thisspan) {
|
||||
var selectionchanged = hilight(aID);
|
||||
intoview(thisspan, toc, selectionchanged);
|
||||
}
|
||||
}
|
||||
if (autocollapse) {
|
||||
if (currentselection) collapseunfocused(toc, currentselection.id);
|
||||
else collapseunfocused(toc, "");
|
||||
}
|
||||
}
|
||||
track('topic', topicID);
|
||||
}
|
||||
tocselecting = false;
|
||||
}
|
||||
|
||||
function lazysync(topicID) {
|
||||
if (topicID != "") {
|
||||
var toc = hmNavigationFrame().document.getElementById("toc");
|
||||
if (toc) {
|
||||
if (!tocselecting) {
|
||||
var currentTopic = $("a[href^='"+topicID+"']",toc);
|
||||
if (currentTopic.length > 0) {
|
||||
var currentSpanID = $(currentTopic).children("span").attr("id");
|
||||
var selectionchanged = false;
|
||||
if (hmTocSingleClick) {
|
||||
selectionchanged = hilightexpand(currentSpanID);
|
||||
}
|
||||
else {
|
||||
selectionchanged = hilight(currentSpanID);
|
||||
}
|
||||
intoview(currentTopic[0], toc, selectionchanged);
|
||||
}
|
||||
}
|
||||
if (autocollapse) {
|
||||
if (currentselection) collapseunfocused(toc, currentselection.id);
|
||||
else collapseunfocused(toc, "");
|
||||
}
|
||||
}
|
||||
track('topic', topicID);
|
||||
}
|
||||
tocselecting = false;
|
||||
}
|
||||
|
||||
function hmPreloadIcons() {
|
||||
var icons = new Array();
|
||||
for (i=0; i<arguments.length; i++) {
|
||||
icons[i] = new Image();
|
||||
icons[i].src = arguments[i];
|
||||
}
|
||||
}
|
||||
|
||||
function hmCreateVSplitter(leftdiv, rightdiv) {
|
||||
var splitWidth = ($(rightdiv).offset().left - ($(leftdiv).offset().left+$(leftdiv).outerWidth()));
|
||||
$('body').append('<div id="hmsplitter" style="border:none;margin:0;padding:0;position:absolute;cursor:col-resize;background-color:transparent;overflow:hidden;'+
|
||||
'height:'+$(leftdiv).outerHeight()+
|
||||
'px;top:'+$(leftdiv).offset().top+
|
||||
'px;left:'+($(leftdiv).offset().left+$(leftdiv).outerWidth())+
|
||||
'px;width:'+splitWidth+'px"> </div>');
|
||||
|
||||
var oldX;
|
||||
var navWidth;
|
||||
var minWidth;
|
||||
var oldLeft;
|
||||
var oldWidth;
|
||||
var oldSplitL;
|
||||
var split = $('#hmsplitter');
|
||||
|
||||
$(window).resize(function() { /* resize splitter when window changes */
|
||||
split.css({'height': $(leftdiv).outerHeight()+'px', 'left': ($(leftdiv).offset().left+$(leftdiv).outerWidth())+'px'});
|
||||
});
|
||||
|
||||
split.bind('mousedown', startDrag);
|
||||
|
||||
function startDrag(e) {
|
||||
oldX = (!document.all) ? e.clientX : event.clientX;
|
||||
navWidth = parseInt($(leftdiv).css('width'),10);
|
||||
minWidth = parseInt($(leftdiv).css('min-width'));
|
||||
oldLeft = $(rightdiv).offset().left;
|
||||
oldWidth = $(rightdiv).outerWidth();
|
||||
oldSplitL = split.offset().left;
|
||||
|
||||
var bg = $('<div id="hmcurtain" style="border:none;padding:0;margin:0;position:absolute;cursor:col-resize;width:100%;height:100%;background-color:transparent"></div>').appendTo('body');
|
||||
bg.bind('mousemove', performDrag);
|
||||
bg.bind('mouseup', endDrag);
|
||||
split.bind('mousemove', performDrag);
|
||||
split.bind('mouseup', endDrag);
|
||||
|
||||
function endDrag() {
|
||||
bg.unbind('mousemove').unbind('mouseup').remove();
|
||||
split.unbind('mousemove').unbind('mouseup');
|
||||
}
|
||||
}
|
||||
|
||||
function performDrag(e) {
|
||||
//deselect:
|
||||
if (window.getSelection) window.getSelection().removeAllRanges();
|
||||
else if (document.selection) document.selection.empty();
|
||||
|
||||
var moveX = (!document.all) ? e.clientX - oldX : event.clientX - oldX;
|
||||
var newNavW = navWidth + moveX < minWidth ? minWidth : navWidth + moveX;
|
||||
$(leftdiv).css('width', (newNavW) + 'px');
|
||||
//split.css('left', ($(leftdiv).offset().left+newNavW) + 'px');
|
||||
split.css('left', (oldSplitL + newNavW - navWidth) + 'px');
|
||||
|
||||
$(rightdiv).css('left', (oldLeft + newNavW - navWidth) + 'px');
|
||||
if (!hmSupportsAbspos()) $(rightdiv).css('width', (oldWidth - newNavW + navWidth) + 'px');
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user