/* tears.js */
var tears = {}
function additem(e) {
var item = e.target.parentNode.cloneNode(true);
e.target.parentNode.className = "";
e.target.textContent = "x";
e.target.onclick = function(e) {
e.target.parentNode.remove();
return false;
}
item.getElementsByTagName('input')[0].value = "";
item.getElementsByTagName('a')[0].onclick = additem;
e.target.parentNode.parentNode.appendChild(item);
return false;
}
function pick(src) {
if(tears.input) {
var name = tears.input.getAttribute("data-name");
var input = document.getElementsByName(name)[0];
tears.input.src = src;
input.value = src;
tears.input = null;
}
}
function insert(text) {
var t = document.getElementsByName('text')[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);
}
var cpos = t.selectionStart;
t.setSelectionRange(cpos, cpos);
t.focus();
}
function wrap(prefix, postfix) {
var t = document.getElementsByName('text')[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);
}
var cpos = end + prefix.length + postfix.length;
t.setSelectionRange(cpos, cpos);
t.focus();
}
function prepend(text) {
var t = document.getElementsByName('text')[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;
}
for(;end > pos; end--) {
if(t.value.charAt(end - 1) != "\n") break;
}
var quote = "";
var cpos = end;
if(t.value.charAt(pos - 1) != "\n") {
quote += "\n";
cpos += 1;
}
if(pos == end) {
quote += text;
cpos += text.length;
} else {
var lines = t.value.substring(pos, end).split("\n");
for(var i=0; i < lines.length; i++) {
quote += text + lines[i] + "\n";
cpos += text.length;
}
quote = quote.slice(0, -1);
}
t.value = t.value.substring(0, pos) + quote + t.value.substring(end, t.value.length);
}
t.setSelectionRange(cpos, cpos);
t.focus();
}
function marxup_bold(e) {
wrap("*", "*");
}
function marxup_header(e) {
prepend("= ");
}
function marxup_italics(e) {
wrap("_", "_");
}
function marxup_small(e) {
wrap("~", "~");
}
function marxup_link(e) {
wrap("[", "]");
}
function marxup_quote(e) {
prepend("> ");
}
function marxup_list(e) {
prepend("* ");
}
function button(node, html, fun) {
var a = document.createElement("a");
a.innerHTML = html;
a.href = "#";
a.onclick = fun;
node.parentNode.insertBefore(document.createTextNode(" "), node.nextSibling);
node.parentNode.insertBefore(a, node.nextSibling);
}
function orz(src, receiver) {
// insert("\n{" + src.replace(".t.jpg", "") + "}\n");
console.log(receiver);
console.log(src);
if(!receiver) {
console.log(src);
insert("\n{" + src + "}\n");
return;
}
var e = document.getElementsByName(receiver);
if(e && e[0]) {
e[0].value = src;
}
var imgs = document.getElementsByClassName('orz');
for(var i = 0; i < imgs.length; i++) {
if(imgs[i].getAttribute('data-name') == receiver) {
imgs[i].src = src;
}
}
}
document.addEventListener("DOMContentLoaded", function(e) {
var field = document.getElementsByName('publisert')[0];
if(field) {
new Pikaday({ field: field, format: 'YYYY-MM-DD' });
}
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.getElementsByClassName('orz');
for(var i = 0; i < orz.length; i++) {
orz[i].onclick = function(e) {
window.receiver = e.target.getAttribute('data-name')
window.open("/orz");
return false;
}
}
var lol = document.getElementById('lol');
if(lol) {
button(orz, "> sitat", marxup_quote);
button(orz, "* liste", marxup_list);
button(orz, "[lenke]", marxup_link);
button(orz, "_kursiv_", marxup_italics);
button(orz, "*fet*", marxup_bold);
button(orz, "liten", marxup_small);
button(orz, "= overskrift", marxup_header);
}
var form = document.getElementById('update-article');
if(form) {
form.onsubmit = function(e) {
var stikkord = document.getElementsByName('stikkord');
if(stikkord && stikkord[0] && !stikkord[0].value) {
stikkord[0].className = "error";
return false;
}
}
}
var infoboxes = document.getElementsByClassName("infobox");
for(var i = 0; i < infoboxes.length; i++) {
Sortable.create(infoboxes[i]);
var items = infoboxes[i].getElementsByTagName('li');
for(var j = 0; j < items.length; j++) {
if(items[j].className == "last") {
var add = document.createElement("a");
add.textContent = "+";
add.href = "#";
add.onclick = additem;
items[j].appendChild(add);
} else {
var del = document.createElement("a");
del.textContent = "x";
del.href = "#";
del.onclick = function(e) {
e.target.parentNode.remove();
return false;
}
items[j].appendChild(del);
}
}
}
var form = document.getElementById('update-article');
if(form) {
form.onsubmit = function(e) {
var stikkord = document.getElementsByName('stikkord');
if(stikkord && stikkord[0] && !stikkord[0].value) {
stikkord[0].className = "error";
return false;
}
}
}
var infoboxes = document.getElementsByClassName("infobox");
for(var i = 0; i < infoboxes.length; i++) {
Sortable.create(infoboxes[i]);
var items = infoboxes[i].getElementsByTagName('li');
for(var j = 0; j < items.length; j++) {
if(items[j].className == "last") {
var add = document.createElement("a");
add.textContent = "+";
add.href = "#";
add.onclick = additem;
items[j].appendChild(add);
} else {
var del = document.createElement("a");
del.textContent = "x";
del.href = "#";
del.onclick = function(e) {
e.target.parentNode.remove();
return false;
}
items[j].appendChild(del);
}
}
}
});