aboutsummaryrefslogtreecommitdiff
path: root/wiki.js
blob: 4c6cab48ea28ff0b0c00ad5559c7ff17e9b6810e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
function insert(text) {
  var t = document.getElementsByName('t')[0];
  if(!t) return;
  if(t.selectionStart || t.selectionStart == '0') {
    var pos = t.selectionStart;
    var end = t.selectionEnd;
    t.value = t.value.substring(0, pos) + text + t.value.substring(end, t.value.length);
  } else {
    t.value += s;
  }
}

function wrap(prefix, postfix) {
  var t = document.getElementsByName('t')[0];
  if(!t) return;
  if(t.selectionStart || t.selectionStart == '0') {
    var pos = t.selectionStart;
    var end = t.selectionEnd;
    var n = t.value.indexOf("\n", pos);
    if(n > 0 && n < end) end = n;
    t.value = t.value.substring(0, pos) + prefix + t.value.substring(pos, end) + postfix + t.value.substring(end, t.value.length);
  }
  t.focus();
  var cpos = t.selectionEnd + prefix.length + postfix.length;
  t.setSelectionRange(cpos, cpos);
}

function marxup_bold(e) {
  wrap("*", "*");
}

function marxup_header(e) {
  wrap("= ", "");
}

function marxup_italics(e) {
  wrap("_", "_");
}

function marxup_link(e) {
  wrap("[", "]");
}

function marxup_quote(e) {
  var t = document.getElementsByName('t')[0];
  if(!t) return;
  if(t.selectionStart || t.selectionStart == '0') {
    var pos = t.selectionStart;
    var end = t.selectionEnd;
    for(;pos < end; pos++) {
      if(t.value.charAt(pos) != "\n") break;
    }
    var quote = "";
    var lines = t.value.substring(pos, end).split("\n");
    var cpos = end;
    for(var i=0; i < lines.length; i++) {
      if(lines[i].length > 0) {
        quote += "\n> " + lines[i];
        cpos += 2;
      }
    }
    if(t.value.substring(pos - 1, pos) == "\n")
      quote = quote.trim() + "\n";
    t.value = t.value.substring(0, pos) + quote + t.value.substring(end, t.value.length);
  }
  t.focus();
  t.setSelectionRange(cpos, cpos);
}

function button(node, html, fun) {
  var a = document.createElement("a");
  a.innerHTML = html;
  a.href = "#";
  a.onclick = fun;
  node.parentNode.insertBefore(a, node.nextSibling);
}

function pick(src) {
  insert("\n@" + src.replace(".t.jpg", "") + "\n");
}

document.addEventListener("DOMContentLoaded", function(e) {
  var title = document.getElementsByTagName('h1')[0];
  var headers = document.getElementsByTagName("h2");
  if(headers.length > 0) {
    var menu = document.createElement("div"); menu.className = 'magisk meny';
    for(var i = 0; i < headers.length; i++) {
      var a = document.createElement("a");
      var id = "h-" + i; headers[i].id = id; a.href = "#" + id;
      a.textContent = headers[i].textContent;
      menu.appendChild(a);
      menu.appendChild(document.createElement("br"));
    }
    title.parentNode.insertBefore(menu, title.nextSibling);
  }

  var orz = document.getElementById('orz');
  if(orz) {
    orz.onclick = function(e) {
      window.open("/orz");
      return false;
    }
    button(orz, "> sitat", marxup_quote);
    button(orz, "[lenke]", marxup_link);
    button(orz, "<i>_kursiv_</i>", marxup_italics);
    button(orz, "<b>*fet*</b>", marxup_bold);
    button(orz, "= overskrift", marxup_header);
  }
});