
function jlog_insert(aTag, eTag, completeText) {
  var input = document.forms['entryform'].elements['content'];
  input.focus();
  /* für Internet Explorer und Opera >= 8 */
  if(typeof document.selection != 'undefined') {
    /* Einfügen des Formatierungscodes */
    var range = document.selection.createRange();
    var 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;
    var 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(insText, aTag, eTag) {
		if (!insText) return '';
		return aTag + insText + eTag;
	}

	function jlog_bbcode_link(insText, aTag, eTag) {
		var link = new RegExp('^(http://|https://|www.|ftp://|news:|mailto:).');
		if(link.test(insText)) {
			var w = new RegExp('^(www.).');
			if (w.test(insText)) var h = 'http://';
			else var h = '';
			var href = prompt(jlog_l_comments_url_href, h + insText);
			var node = prompt(jlog_l_comments_url_node);
			if(node != null) insText = '[url=' + href + ']' + node + eTag;
			else insText = aTag + href + eTag;
		}
		else {
			var node = prompt(jlog_l_comments_url_node, insText);
			var href = prompt(jlog_l_comments_url_href, 'http://');
			if(node != null) insText = '[url=' + href + ']' + node + eTag;
			else if(href != null) insText = aTag + href + eTag;
			else insText = '';
		}
		return insText;
	}
	
	function jlog_bbcode_list(o_insText, aTag, eTag) {
		insText = o_insText.replace(/(\n|\r|\r\n)(?=(.+))/g, '$1[*]');
		return '[list]\n[*]' + insText + eTag + '\n';
	}

	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();
    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;
  }
}

function jlog_killcomments() {

	var commentslist = document.getElementById("commentslist");

	if (show) {
		document.getElementById("hidecomments").firstChild.nodeValue = jlog_l_comments_show;
		show=false;
		document.getElementById("comments").style.display = "none";
		document.getElementById("entryform").style.display = "none";
		if (!commentslist) return;
		commentslist.style.display = "none";
	}
	else {
		document.getElementById("hidecomments").firstChild.nodeValue = jlog_l_comments_hide;
		show=true;
		document.getElementById("comments").style.display = "block";
		document.getElementById("entryform").style.display = "block";
		if (!commentslist) return;
		commentslist.style.display = "block";
	}
}

window.onload = function () {
	var comments = document.getElementById("comments");
	if (comments) {
		show = true;
		if (!document.getElementById || !document.createElement || !document.createTextNode) return;
		var p = document.createElement("p");
		p.setAttribute("class", "hidecomments");
		var a = document.createElement("a");
		a.setAttribute("id", "hidecomments");
		a.setAttribute("href", "javascript:jlog_killcomments()");
		var text = document.createTextNode(jlog_l_comments_hide);
		a.appendChild(text);
		p.appendChild(a);
		if (comments.insertBefore) {
			document.getElementById("main").insertBefore(p, comments);
		}
	}
	
	var bbcode = document.getElementById("bbcode");
	if(bbcode || (typeof(jlog_admin) != "undefined")) {
	/* BBCode Buttons */
		var b = document.createElement("button");
		var i = document.createElement("button");
		var quote = document.createElement("button");
		var url = document.createElement("button");
	
		b.setAttribute("onclick", "jlog_insert('[b]', '[/b]'); return false;");
		i.setAttribute("onclick", "jlog_insert('[i]', '[/i]'); return false;");
		quote.setAttribute("onclick", "jlog_insert('[quote]', '[/quote]'); return false;");
		url.setAttribute("onclick", "jlog_insert('[url]', '[/url]'); return false;");
	
		var tb = document.createTextNode(jlog_l_comments_bold);
		var ti = document.createTextNode(jlog_l_comments_italic);
		var tquote = document.createTextNode(jlog_l_comments_quote);
		var turl = document.createTextNode(jlog_l_comments_url);
	
		b.appendChild(tb);
		i.appendChild(ti);
		quote.appendChild(tquote);
		url.appendChild(turl);
	
		var br = document.getElementById("bbcode");
		if (br.insertBefore) {
			br.parentNode.insertBefore(url, br);
			br.parentNode.insertBefore(b, br);
			br.parentNode.insertBefore(i, br);
			br.parentNode.insertBefore(quote, br);
			if (comments) br.parentNode.getElementsByTagName("span")[0].style.display = "none";
		}
		
	
		if (typeof(jlog_admin) != "undefined") {
	
			var headline = document.createElement("button");
			var list = document.createElement("button");
			headline.setAttribute("onclick", "jlog_insert('[headline]', '[/headline]'); return false;");
			list.setAttribute("onclick", "jlog_insert('[list][*]', '[/list]'); return false;");
			var theadline = document.createTextNode(jlog_l_headline);
			var tlist = document.createTextNode(jlog_l_list);
			headline.appendChild(theadline);
			list.appendChild(tlist);
			if (br.insertBefore) {
				br.parentNode.insertBefore(headline, br);
				br.parentNode.insertBefore(list, br);
			}
		}
	}
			
	jlog_searchengineSearchHighlight();
}



/* Open popup to learn BBCode for comments */
function jlog_learnbb(path) {
 var popurl = path + '/learn_bb.php?v=small';
 winpops=window.open(popurl,'','width=400,height=300,scrollbars=yes');
}

/* Open popup to upload pictures in admincenter */
function jlog_wopen(bereich) {
 var popurl='media/'+bereich+'.php';
 winpops=window.open(popurl,'','width=350,height=350,scrollbars=yes');
}

/* from http://www.kryogenix.org/code/browser/searchhi/ */
function jlog_highlightWord(node,word) {

	if (node.hasChildNodes) {
		var hi_cn;
		for (hi_cn=0;hi_cn<node.childNodes.length;hi_cn++) {
			jlog_highlightWord(node.childNodes[hi_cn],word);
		}
	}

	if (node.nodeType == 3) {
		tempNodeVal = node.nodeValue.toLowerCase();
		tempWordVal = word.toLowerCase();
		if (tempNodeVal.indexOf(tempWordVal) != -1) {
			pn = node.parentNode;
			if (pn.className != "searchword") {
				nv = node.nodeValue;
				ni = tempNodeVal.indexOf(tempWordVal);
				before = document.createTextNode(nv.substr(0,ni));
				docWordVal = nv.substr(ni,word.length);
				after = document.createTextNode(nv.substr(ni+word.length));
				hiwordtext = document.createTextNode(docWordVal);
				hiword = document.createElement("strong");
				hiword.className = "searchword";
				hiword.appendChild(hiwordtext);
				pn.insertBefore(before,node);
				pn.insertBefore(hiword,node);
				pn.insertBefore(after,node);
				pn.removeChild(node);
			}
		}
	}
}

function jlog_searchengineSearchHighlight() {
	if (!document.createElement) return;
	ref = document.referrer;
	if (ref.indexOf('?') == -1) return;
	qs = ref.substr(ref.indexOf('?')+1);
	qsa = qs.split('&');
	for (i=0;i<qsa.length;i++) {
		qsip = qsa[i].split('=');
	        if (qsip.length == 1) continue;
        	if (qsip[0] == 'q' || qsip[0] == 'p' ) { // q= for Google, p= for Yahoo
			words = unescape(qsip[1].replace(/\+/g,' ')).split(/\s+/);
	                for (w=0;w<words.length;w++) {
				jlog_highlightWord(document.getElementsByTagName("body")[0],words[w]);
                	}
	        }
	}
}