function replace_special_chars(input)
{
	Auml = String.fromCharCode(196);
	Ouml = String.fromCharCode(214);
	Uuml = String.fromCharCode(220);
	auml = String.fromCharCode(228);
	ouml = String.fromCharCode(246);
	uuml = String.fromCharCode(252);
	szlig = String.fromCharCode(223);
	test_re = eval('/[' + Auml + Ouml + Uuml + auml + ouml + uuml + szlig + ']/');
	bReplace = input.match(test_re)
	out = input;
	if (bReplace) {
		out = out.replace(eval('/' + Auml + '/g'), '&Auml;');
		out = out.replace(eval('/' + Ouml + '/g'), '&Ouml;');
		out = out.replace(eval('/' + Uuml + '/g'), '&Uuml;');
		out = out.replace(eval('/' + auml + '/g'), '&auml;');
		out = out.replace(eval('/' + ouml + '/g'), '&ouml;');
		out = out.replace(eval('/' + uuml + '/g'), '&uuml;');
		out = out.replace(eval('/' + szlig + '/g'), '&szlig;');
	}
	return out;
}


/**  DHTML email validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 * modified (for purely aesthetic reasons) by SK
 * */
function validate_email(str) {
	if (str == null || str == '') return false;
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if ( str.indexOf(" ") != -1 ||
		str.indexOf(at) == -1 ||
		str.indexOf(at) == 0  ||
		str.indexOf(at) == lstr ||
		str.indexOf(at,(lat+1)) != -1 ||
		str.indexOf(dot) == -1 ||
		str.indexOf(dot) == 0 ||
		str.indexOf(dot) == lstr ||
		str.substring(lat-1,lat) == dot ||
		str.substring(lat+1,lat+2) == dot ||
		str.indexOf(dot,(lat+2)) == -1
	) return false;
	return true;
}

function contactform_validate() {
	var msg = '';
	var lang = document.forms[0].lang.value;
	var error_messages = new Array();
	error_messages['de'] = new Array();
	error_messages['de']['name'] = 'Bitte geben Sie Ihren Namen an!';
	error_messages['de']['email'] = 'Bitte geben Sie eine gültige Email-Adresse an!';
	error_messages['de']['text'] = 'Bitte geben Sie eine Nachricht ein!';
	error_messages['en'] = new Array();
	error_messages['en']['name'] = 'Please enter your name!';
	error_messages['en']['email'] = 'Please enter a valid email address!';
	error_messages['en']['text'] = 'Please enter a message!';
	if (document.forms[0].name.value == '') msg = error_messages[lang]['name'];
	if (!validate_email(document.forms[0].email.value)) {
		if (!msg == '') msg += '<br/>';
		msg += error_messages[lang]['email'];
	}
	if (document.forms[0].text.value == '') {
		if (!msg == '') msg += '<br/>';
		msg += error_messages[lang]['text'];
	}
	if (msg != '') {
		document.getElementById('_message').innerHTML = msg;
		return false;
	}
	return true;
}

function set_form_mode(mode) {
	document.forms[0].mode.value = mode;
	return true;
}

function confirm_delete(url, msg)
{
	check = confirm('Really delete object?\n' + msg);
	if (check == true) location.href = url;
	return true;
}

/* yes, it looks nuts, but i'm sure there's a reason, perhaps even a good one */
function redirect(url) { location.href=url; }

/* this function is (to be) called when changes are saved in the CMS;
 * it prevents loss of changes in case of the user's session's being expired */
function auth() {
	var bOk = true;
	var reqCheckAuth = new XMLHttpRequest();
	reqCheckAuth.open('GET', '/admin/check_auth', false);
	reqCheckAuth.send(null);
	if (reqCheckAuth.responseText == 'False') {
		bOk = false;
		var login_win = window.open('/admin/login?auth_mode=relogin', 'login', 'width=600,height=600');
		login_win.focus();
	}
	return bOk;
}

/* bogus?
function page_auth() {
	if (auth()) {
		var login_win = window.open('/admin/login?auth_mode=relogin', 'login', 'width=600,height=600');
		login_win.focus();
	}
	return false;
} */

function search(page) {
	var base_url = '/cgi-bin/perlfect/search/search.pl';
	var query = document.searchform['q'].value
	var lang = document.searchform['lang'].value
	var include = '';
	var exclude = '';
	var penalty = '0';
	var mode = 'any';
	//escape search string
	var params = '?p=' + page.toString() + '&lang=' + lang + '&include=' + include + 
		'&exclude=' + exclude + '&penalty=' + penalty + '&mode=' + mode + 
		'&q=' + query;
	var reqSearch = new XMLHttpRequest();
	reqSearch.open('GET', base_url + params, false);
//	reqSearch.open('GET', '/static/test.html', false);
	reqSearch.send(null);
	document.getElementById('results').innerHTML = reqSearch.responseText;
//	frames['i_results'].location.href = base_url + params;
}

function UnCryptMailto(s, shift) {
	var n=0;
	var r="";
	for(var i=0;i<s.length;i++) { 
		n=s.charCodeAt(i); 
		if (n>=8364) {n = 128;}
		r += String.fromCharCode(n-(shift)); 
	}
	return r;
}

function linkTo_UnCryptMailto(s, shift)	{
	location.href=UnCryptMailto(s, shift);
}

