// TODO: I'd like to have an extra "js" directory for all JavaScripts // a theme needs. /* * Jlogs not minified version of JavaScript */ function jlog_bbcode(insText, aTag, eTag) { if (!insText) { return ''; } return aTag + insText + eTag; } function jlog_bbcode_link(insText, aTag, eTag) { var url = new RegExp('^(http://|https://|www.|ftp://|news:|mailto:).'); var www = new RegExp('^(www.).'); var mail = new RegExp('^[^@]+@[^@]+\.[a-zA-Z]+$'); var http = new RegExp('^(http://)$'); var node, href; if((url.test(insText)) || (mail.test(insText))) { href = insText; if (mail.test(href)) { href = 'mailto:' + insText; } if (www.test(href)) { href = 'http://' + href; } node = prompt(jlog_l_comments_url_node); if((node !== null) && (node !== '')) { insText = '[url=' + href + ']' + node + eTag; } else if(node === '') { insText = aTag + href + eTag; } } else { node = insText; if(node === '') { node = prompt(jlog_l_comments_url_node, insText); } href = prompt(jlog_l_comments_url_href, 'http://'); if (http.test(href)) { return insText; } if (www.test(href)) { href = 'http://' + href; } if(((node !== null) && (node !== '')) && ((href !== null) && (href !== ''))) { insText = '[url=' + href + ']' + node + eTag; } else if((href !== null) && (href !== '')) { insText = aTag + href + eTag; } } return insText; } function jlog_bbcode_list(o_insText, aTag, eTag) { var insText = o_insText.replace(/(\n|\r|\r\n)(?=(.+))/g, '$1[*]'); return '[list]\n[*]' + insText + eTag + '\n'; } function jlog_bbcode_insert(aTag, eTag, completeText) { var input = document.forms.entryform.elements.content; input.focus(); var insText; /* für Internet Explorer und Opera >= 8 */ if(typeof document.selection != 'undefined') { /* Einfügen des Formatierungscodes */ var range = document.selection.createRange(); insText = range.text; if (aTag === '[url]') { range.text = jlog_bbcode_link(insText, aTag, eTag); } else if(eTag === '[/list]') { range.text = jlog_bbcode_list(insText, aTag, eTag); } else { range.text = jlog_bbcode(insText, aTag, eTag); } /* Anpassen der Cursorposition */ range = document.selection.createRange(); if (insText.length === 0) { range.move('character', -eTag.length); } else { range.moveStart('character', insText.length); } range.select(); } /* für neuere auf Gecko basierende Browser */ else if(typeof input.selectionStart != 'undefined') { /* Einfügen des Formatierungscodes */ var start = input.selectionStart; var end = input.selectionEnd; insText = input.value.substring(start, end); if(aTag === '[url]') { insText = jlog_bbcode_link(insText, aTag, eTag); } else if(eTag === '[/list]') { insText = jlog_bbcode_list(insText, aTag, eTag); } else { insText = jlog_bbcode(insText, aTag, eTag); } input.value = input.value.substr(0, start) + insText + input.value.substr(end); /* Anpassen der Cursorposition */ var pos; if (insText.length === 0) { pos = start + aTag.length + eTag.length; } else { pos = start + insText.length; } input.selectionStart = pos; input.selectionEnd = pos; } /* für die übrigen Browser */ else { /* Einfügen des Formatierungscodes */ if(aTag === '[url]') { insText = jlog_bbcode_link('', aTag, eTag); } else if(eTag === '[/list]') { insText = jlog_bbcode_list('', aTag, eTag); } else { insText = jlog_bbcode(prompt(jlog_l_comments_plz_format_txt), aTag, eTag); } input.value += insText; } } function jlog_bbcode_img(jfilename) { var jclass = ''; var jalt = ''; if ( document.getElementById("class").value !== '') { jclass = ' class=\"' + document.getElementById("class").value + '\"'; } if ( document.getElementById("alt").value !== '') { jalt = ' alt=\"' + document.getElementById("alt").value + '\"'; } var jimg = '[img' + jclass + jalt + ']' + jfilename + '[/img]'; opener.parent.jlog_insertAtCursor(jimg); window.close(); } // from http://www.alexking.org/blog/2003/06/02/inserting-at-the-cursor-using-javascript/ function jlog_insertAtCursor(insText) { //IE and Opera support var field = document.forms.entryform.elements.content; if (document.selection) { field.focus(); var sel = document.selection.createRange(); sel.text = insText; } //MOZILLA/NETSCAPE support else if (field.selectionStart || field.selectionStart == '0') { var startPos = field.selectionStart; var endPos = field.selectionEnd; field.value = field.value.substring(0, startPos) + insText + field.value.substring(endPos, field.value.length); } else { field.value += insText; } } var show = true; function jlog_killcomments() { var commentslist = document.getElementById("commentslist"); var pingbacks_header = document.getElementById("pingbacks"); var pingbacks_list = document.getElementById("pingbackslist"); if (show) { document.getElementById("hidecomments").firstChild.nodeValue = jlog_l_comments_show; show=false; if(pingbacks_header) { pingbacks_header.style.display = "none"; } if(pingbacks_list) { pingbacks_list.style.display = "none"; } document.getElementById("comments").style.display = "none"; document.getElementById("entryform").style.display = "none"; if(commentslist) { commentslist.style.display = "none"; } } else { document.getElementById("hidecomments").firstChild.nodeValue = jlog_l_comments_hide; show=true; if(pingbacks_header) { pingbacks_header.style.display = "block"; } if(pingbacks_list) { pingbacks_list.style.display = "block"; } document.getElementById("comments").style.display = "block"; document.getElementById("entryform").style.display = "block"; if(commentslist) { commentslist.style.display = "block"; } } } var jlog_bbcode_br; function jlog_bbcode_do_button(titel, aTag, eTag) { var button = document.createElement("input"); button.onclick = function() { jlog_bbcode_insert(aTag, eTag); return false; }; button.className = "jlog_bbcode"; button.type = "button"; button.value = titel; jlog_bbcode_br.parentNode.insertBefore(button, jlog_bbcode_br); } /* from http://www.kryogenix.org/code/browser/searchhi/ */ function jlog_highlightWord(node,word) { if (node.hasChildNodes) { for (var hi_cn=0;hi_cn