var mailTest = /^[_\.0-9a-z-]+@([0-9a-z-]+\.)+[a-z]{2,4}$/i;
var innerUrlTest = /(\bhttps?:\/\/[^\/:]+\.[a-z]{2,4}(\/\S*)?)/gi;
var urlTest = /^https?:\/\/[^\/:]+\.[a-z]{2,4}(\/\S*)?$/i;

var error = new Object();

// Whitespace entfernen
String.prototype.trim = function() {
	return this.replace(/^\s*|\s*$/, '').replace(/ +/g, ' ');
}

// Zeilenumbruch vereinheitlichen
String.prototype.trimLinefeed = function() {
	return this.replace(/\r+/g, '').replace(/\n\n+/g, '\n\n');
}

// Formularfeld als fehlerhaft markieren
function mark(obj, msg) {
	var help = document.createElement('ins');
	help.innerHTML = msg;
	
	obj.parentNode.className = 'error';
	obj.parentNode.appendChild(help);
}

// Markierung aufheben
function demark(obj) {
	obj.parentNode.className = '';
	obj.parentNode.removeChild(obj.parentNode.lastChild);
}

// URL korrigieren
function correctURL(elem) {
	if (!elem.value) {
		return false;
	}
	
	if (urlTest.test(elem.value)) {
		return true;
	}
	
	var pos = elem.value.indexOf('//');
	var corrected = (pos < 0) ? 'http://' + elem.value : 'http:' + elem.value.substr(pos);
		
	if (urlTest.test(corrected)) {
		elem.value = corrected;
		return true;
	}
	
	return false;
}

// Vorschau eines Absatzes erstellen
function previewLine(line) {
	return line
		.replace(/</g, '&lt;')
		.replace(/\*\*/g, 'ʡ').replace(/__/g, 'ʢ')
		.replace(/\*([^\*]*)(\*|$)/g, '<strong>$1</strong>')
		.replace(/_([^_]*)(_|$)/g, '<em>$1</em>')
		.replace(/ʡ/g, '*').replace(/ʢ/g, '_')
		.replace(innerUrlTest, '<a href="$1">$1</a>')
		.replace(/\n/g, '<br>');
}
