]> git.mxchange.org Git - shipsimu-docs.git/blobdiff - shipsimu-docs/Tech-Tree_v1.html_files/marktree.js
Re-export of the mind-maps (currently the .mm files are linked, not .html :-( )
[shipsimu-docs.git] / shipsimu-docs / Tech-Tree_v1.html_files / marktree.js
diff --git a/shipsimu-docs/Tech-Tree_v1.html_files/marktree.js b/shipsimu-docs/Tech-Tree_v1.html_files/marktree.js
new file mode 100644 (file)
index 0000000..10bba60
--- /dev/null
@@ -0,0 +1,475 @@
+/* MarkTree JavaScript code\r
+ * \r
+ * The contents of this file are subject to the Mozilla Public License Version\r
+ * 1.1 (the "License"); you may not use this file except in compliance with\r
+ * the License. You may obtain a copy of the License at\r
+ * http://www.mozilla.org/MPL/\r
+ *\r
+ * Software distributed under the License is distributed on an "AS IS" basis,\r
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\r
+ * for the specific language governing rights and limitations under the\r
+ * License.\r
+ * \r
+ * Miika Nurminen, 12.7.2004.\r
+ */\r
+\r
+/* cross-browser (tested with ie5, mozilla 1 and opera 5) keypress detection */\r
+function get_keycode(evt) {\r
+  // IE\r
+    code = document.layers ? evt.which\r
+           : document.all ? event.keyCode // event.keyCode!=evt.keyCode!\r
+           : evt.keyCode;\r
+\r
+  if (code==0) \r
+    code=evt.which; // for NS\r
+  return code;\r
+}\r
+\r
+var lastnode=null;\r
+var listnodes = null;\r
+var list_index=1;\r
+var lastnodetype=''; // determines if node is a link, input or text;\r
+\r
+// up, left, down, right, keypress codes\r
+//ijkl\r
+//var keys = new Array(105,106,107,108);\r
+//num arrows\r
+//var keys = new Array(56,52,50,54);\r
+//wasd\r
+// var press2 = new Array(119,97,115,100);\r
+ var press = new Array(47,45,42,43);\r
+\r
+// keydown codes\r
+  //  var keys2=new Array(87,65,83,68);\r
+  var keys= new Array(38,37,40,39);\r
+\r
+  // keyset 1 = keydown, otherwise press\r
+function checkup(keyset,n) {\r
+  if (keyset==1) return (n==keys[0]);\r
+  return ((n==press[0]) /*|| (n==press2[0])*/)\r
+}\r
+\r
+function checkdn(keyset,n) {\r
+  if (keyset==1) return (n==keys[2]);\r
+  return ((n==press[2]) /*|| (n==press2[2])*/)\r
+}\r
+\r
+function checkl(keyset,n) {\r
+  if (keyset==1) return (n==keys[1]);\r
+  return ((n==press[1]) /*|| (n==press2[1])*/)\r
+}\r
+\r
+function checkr(keyset,n) {\r
+  if (keyset==1) return (n==keys[3]);\r
+  return ((n==press[3]) /*|| (n==press2[3])*/)\r
+}\r
+\r
+\r
+\r
+\r
+\r
+function is_exp(n) {\r
+  if (n==null) return false;\r
+  return ((n.className=='exp') || (n.className=='exp_active'));\r
+}\r
+\r
+function is_col(n) {\r
+  if (n==null) return false;\r
+  return ((n.className=='col') || (n.className=='col_active'));\r
+}\r
+\r
+function is_basic(n) {\r
+  if (n==null) return false;\r
+  return ((n.className=='basic') || (n.className=='basic_active'));\r
+}\r
+\r
+\r
+\r
+/* returns i>=0 if true */\r
+function is_active(node) {\r
+  if (node.className==null) return false\r
+  return node.className.indexOf('_active');\r
+}\r
+\r
+function toggle_class(node) {\r
+  if ((node==null) || (node.className==null)) return;\r
+  str=node.className;\r
+  result="";\r
+  i = str.indexOf('_active');\r
+  if (i>0)\r
+    result= str.substr(0,i);\r
+  else\r
+    result= str+"_active";\r
+  node.className=result; \r
+  return node;\r
+}\r
+\r
+function activate(node) {\r
+  node.style.backgroundColor='#eeeeff';\r
+}\r
+\r
+function deactivate(node) {\r
+   node.style.backgroundColor='#ffffff';\r
+}\r
+\r
+function is_list_node(n) {\r
+  if (n==null) return false;\r
+  if (n.className==null) return false;\r
+  if ( (is_exp(n)) || \r
+       (is_col(n)) ||\r
+       (is_basic(n)) )\r
+   return true; else return false;\r
+}\r
+\r
+\r
+function get_href(n) {\r
+  alist=n.attributes;\r
+  if (alist!=null) {\r
+    hr = alist.getNamedItem('href');\r
+    if (hr!=null) return hr.nodeValue;\r
+  }\r
+  if (n.childNodes.length==0) return '';\r
+  for (var i=0; i<n.childNodes.length; i++) {\r
+    s = get_href(n.childNodes[i]);\r
+    if (s!='') return s;\r
+  }\r
+  return '';\r
+}\r
+\r
+function get_link(n) {\r
+  if (n==null) return null;\r
+  if (n.style==null) return null;\r
+\r
+ // disabling uncontrolled recursion to prevent error messages on IE\r
+ // when trying to focus to invisible links (readonly mode)\r
+//    alert(n.nodeName+' '+n.className);\r
+  if ((n.nodeName=='UL') && (n.className=='sub')) return null;\r
+\r
+  if (n.nodeName=='A') return n;\r
+  if (n.childNodes.length==0) return null;\r
+  for (var i=0; i<n.childNodes.length; i++) {\r
+    s = get_link(n.childNodes[i]);\r
+    if (s!=null) return s;\r
+  }\r
+  return null;\r
+}\r
+\r
+function set_lastnode(n) {\r
+/*var d = new Date();\r
+var t_mil = d.getMilliseconds();*/\r
+// testattu nopeuksia explorerilla, ei merkittäviä eroja\r
+  if (lastnode==n) return; \r
+/*  deactivate(lastnode)\r
+  lastnode=n;\r
+  activate(lastnode);*/\r
+\r
+  if (is_active(lastnode)>=0)\r
+    toggle_class(lastnode);\r
+  lastnode=n;\r
+  if (!(is_active(lastnode)>=0))\r
+    toggle_class(lastnode);\r
+\r
+\r
+/*var d2 = new Date();\r
+var t_mil2 = d2.getMilliseconds();\r
+  window.alert(t_mil2-t_mil);*/\r
+}\r
+\r
+function next_list_node() {\r
+  tempIndex = list_index;\r
+  while (tempIndex<listnodes.length-1) {\r
+    tempIndex++;\r
+    var x = listnodes[tempIndex];\r
+    if (is_list_node(x)) {\r
+      list_index=tempIndex;\r
+      return;\r
+    }\r
+  }\r
+}\r
+\r
+function prev_list_node() {\r
+  tempIndex = list_index;\r
+  while (tempIndex>0) {\r
+    tempIndex--;\r
+    var x = listnodes[tempIndex];\r
+    if (is_list_node(x)) {\r
+      list_index=tempIndex;\r
+      return;\r
+    }\r
+  }\r
+}\r
+\r
+\r
+\r
+function getsub (li) {\r
+  if (li.childNodes.length==0) return null;\r
+  for (var c = 0; c < li.childNodes.length; c++)\r
+    if ( (li.childNodes[c].className == 'sub') || (li.childNodes[c].className == 'subexp') ) \r
+      return li.childNodes[c];\r
+}\r
+\r
+function find_listnode_recursive (li) {\r
+  if (is_list_node(li)) return li; \r
+  if (li.childNodes.length==0) return null;\r
+  result=null;\r
+  for (var c = 0; c < li.childNodes.length; c++) {\r
+    result=find_listnode_recursive(li.childNodes[c]);\r
+    if (result!=null) return result;\r
+  }\r
+  return null;\r
+}\r
+\r
+function next_child_listnode(li) {\r
+  var result=null;\r
+  for (var i=0; i<li.childNodes.length; i++) {\r
+    result=find_listnode_recursive(li.childNodes[i]);\r
+    if (result!=null) return result;\r
+  }\r
+  return null;  \r
+}\r
+\r
+function next_actual_sibling_listnode(li) {\r
+  if (li==null) return null;\r
+  var temp=li;\r
+  while (1) { \r
+    var n = temp.nextSibling;\r
+    if (n==null) {\r
+      n=parent_listnode(temp);\r
+      return next_actual_sibling_listnode(n);\r
+    }\r
+    if (is_list_node(n)) return n;\r
+    temp=n;\r
+  }\r
+}\r
+\r
+function next_sibling_listnode(li) {\r
+if (li==null) return null; \r
+ var result=null;\r
+  var temp=li;\r
+  if (is_col(temp)) return next_child_listnode(temp);\r
+  while (1) { \r
+    var n = temp.nextSibling;\r
+    if (n==null) {\r
+      n=parent_listnode(temp);\r
+      return next_actual_sibling_listnode(n);\r
+    }\r
+    if (is_list_node(n)) return n;\r
+    temp=n;\r
+  }\r
+}\r
+\r
+function last_sibling_listnode(li) {\r
+  if (li==null) return null;\r
+  var temp=li;\r
+  var last=null;\r
+  while(1) {\r
+    var n = temp.nextSibling;\r
+    if (is_list_node(temp)) \r
+      last = temp;\r
+    if (n==null) {\r
+      if (is_col(last)) return last_sibling_listnode(next_child_listnode(last));\r
+      else return last;\r
+    }\r
+    temp = n;\r
+  }\r
+}\r
+\r
+function prev_sibling_listnode(li) { \r
+  if (li==null) return null;\r
+  var temp=li;\r
+  var n = null;\r
+  while (1) { \r
+    n = temp.previousSibling;\r
+    if (n==null) {\r
+      return parent_listnode(li);\r
+    }\r
+    if (is_list_node(n)) {\r
+      if (is_col(n)) { \r
+        return last_sibling_listnode(next_child_listnode(n));\r
+      }\r
+      else {\r
+        return n;\r
+      }\r
+    }\r
+    temp=n;\r
+  }\r
+}\r
+\r
+\r
+function parent_listnode(li) {\r
+  // added 12.7.2004 to prevent IE error when readonly mode==true\r
+  if (li==null) return null;\r
+  n=li;\r
+  while (1) {\r
+    n=n.parentNode;\r
+    if (n==null) return null;\r
+    if (is_list_node(n)) return n;\r
+  }\r
+}\r
+\r
+function getVisibleParents(id) {\r
+  var n = document.getElementById(id);\r
+  while(1) {\r
+    expand(n);\r
+    n = parent_listnode(n);\r
+    if (n==null) return;\r
+  }\r
+}\r
+\r
+function onClickHandler (evt) {\r
+if (lastnode==null) \r
+{\r
+listnodes = document.getElementsByTagName('li');\r
+lastnode=listnodes[1];\r
+temp=listnodes[1];\r
+}\r
+\r
+\r
+  var target = evt ? evt.target : event.srcElement;\r
+  if (!is_list_node(target)) return;\r
+  toggle(target);\r
+  set_lastnode(target);\r
+}\r
+\r
+\r
+function expand(node) {\r
+    if (!is_exp(node)) return;\r
+    if (node.className=='exp_active') \r
+      node.className='col_active';\r
+    else \r
+        node.className='col';\r
+    setSubClass(node,'subexp');\r
+    //    getsub(node).className='subexp';\r
+}\r
+\r
+function collapse(node) {\r
+  if (!is_col(node)) return;\r
+  \r
+if (node.className=='col_active')\r
+    node.className='exp_active'\r
+  else \r
+    node.className='exp';\r
+\r
+ setSubClass(node,'sub');\r
+//  getsub(node).className='sub';\r
+\r
+}\r
+\r
+function setSubClass(node,name) {\r
+  sub = getsub(node);\r
+  if (sub==null) return;\r
+  sub.className=name;  \r
+}\r
+\r
+function toggle(target) {\r
+  if (!is_list_node(target)) return;\r
+    if (is_col(target)) {\r
+      target.className='exp';\r
+      setSubClass(target,'sub');\r
+      //      getsub(target).className='sub';\r
+    }\r
+    else if (is_exp(target)) {\r
+      target.className='col';\r
+      setSubClass(target,'subexp');\r
+      //      getsub(target).className='subexp';\r
+    }\r
\r
+}\r
+\r
+function expandAll(node) {\r
+    if (node.className=='exp') {\r
+        node.className='col';\r
+        setSubClass(node,'subexp');\r
+//        getsub(node).className='subexp';\r
+    }\r
+    var i;\r
+    if (node.childNodes!=null) \r
+//    if (node.hasChildNodes()) \r
+        for ( i = 0; i<node.childNodes.length; i++)\r
+            expandAll(node.childNodes[i]);\r
+}\r
+\r
+function collapseAll(node) {\r
+    if  (node.className=='col') {\r
+        node.className='exp';\r
+        setSubClass(node,'sub');\r
+//        getsub(node).className='sub';\r
+    }\r
+    var i;        \r
+    if (node.childNodes!=null) \r
+// for opera   if (node.hasChildNodes()) \r
+        for ( i = 0; i<node.childNodes.length; i++)\r
+            collapseAll(node.childNodes[i]);\r
+}\r
+\r
+\r
+\r
+function unFocus(node) {\r
+     // unfocuses potential link that is to be hidden (if a==null there is no link so it should not be blurred).\r
+     // tested with mozilla 1.7, 12.7.2004. /mn (\r
+      intemp=parent_listnode(node);  \r
+      a = get_link(intemp);     // added 6.4. to get keyboard working with\r
+      // moved before collapse to prevent an error message with IE when readonly==true      \r
+      if (a!=null) a.blur(); // netscape after collapsing a focused node\r
+      return intemp;\r
+}\r
+\r
+// mode: 0==keypress, 1==keyup\r
+function keyfunc(evt,mode) {\r
+ var c = get_keycode(evt);\r
+ var temp = null;\r
+ var a = null;\r
+\r
+  if (lastnode==null) {\r
+    listnodes = document.getElementsByTagName('li');\r
+    lastnode=listnodes[1];\r
+    temp=listnodes[1];\r
+  }\r
+\r
+  //window.alert(c);\r
+  if (checkup(mode,c)) { // i \r
+   temp=prev_sibling_listnode(lastnode);\r
+  }\r
+  else if (checkdn(mode,c)) { // k\r
+    temp=next_sibling_listnode(lastnode);\r
+  }\r
+  else if (checkr(mode,c)) { // l\r
+    expand(lastnode);\r
+    //  temp=next_child_listnode(lastnode);\r
+    // if (temp==null) {\r
+      a = get_link(lastnode);\r
+        if (a!=null) a.focus(); else self.focus(); \r
+      //}\r
+  }\r
+  else if (checkl(mode,c)) { // j\r
+    if (is_col(lastnode)) {\r
+      unFocus(lastnode);\r
+      collapse(lastnode);\r
+    }\r
+    else {\r
+      temp=unFocus(lastnode);\r
+      collapse(temp);\r
+    }\r
+   //    if (temp==null) lastnode.focus(); // forces focus to correct div (try mozilla typesearch) (doesn't seem to work -mn/6.4.2004)\r
+  }\r
+  else return;\r
+  if (temp!=null) set_lastnode(temp);\r
+\r
+  // alert('pressed ' + String.fromCharCode(c) + '(' + c + ')');\r
+  return true;\r
+}\r
+\r
+\r
+function keytest (evt) {\r
+  return keyfunc(evt,1);\r
+};\r
+\r
+\r
+function presstest (evt) {\r
+  return keyfunc(evt,0);\r
+};\r
+\r
+\r
+  document.onclick = onClickHandler;\r
+  document.onkeypress = presstest;\r
+  document.onkeyup = keytest;\r