function isUrl(url) {
	var regexp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
	return regexp.test(url);
}

function isEmail(email) {
	var regexp = /^([a-zA-Z0-9\-\.\_]+)(\@)([a-zA-Z0-9\-\.]+)(\.)([a-zA-Z]{2,4})$/;
	return regexp.test(email);
}

function isDatum(gbd) {
	datum = new Date(Number(gbd.slice(0, 4)), (Number(gbd.slice(4, 6)) - 1), Number(gbd.slice(6, 8)));
	if(datum.getDate() == Number(gbd.slice(6, 8)) && (datum.getMonth() + 1) == Number(gbd.slice(4, 6)) && datum.getFullYear() == Number(gbd.slice(0, 4))) return true;
	else return false;
}

function str_replace(search, replace, subject) {
    return subject.split(search).join(replace);
}

function formCheck(formName, fields) {
	errors = 0;
	for(var x = 0; x < fields.length; x++) {
		commands = fields[x].split("|");
		if(commands[0].slice(-1) == "+") {
			required = true;
			commands[0] = commands[0].slice(0, -1);
		} else required = false;
		value = eval("document."+formName+"."+commands[0]+".value");
		eval("document."+formName+"."+commands[0]+".style.borderColor = '#090';");
		eval("document.getElementById('"+commands[0]+"Error').innerHTML = '';");
		andererText = '';
		for(var y = 1; y < commands.length; y++) {
			if(value.length > 0 || required) {
				if(commands[y].slice(0, 1) == "x" && value.length != Number(commands[y].slice(1))) {
					eval("document."+formName+"."+commands[0]+".style.borderColor = '#900';");
					eval("document.getElementById('"+commands[0]+"Error').innerHTML += '"+((andererText != "")?andererText:"Bitte geben Sie genau " + commands[y].slice(1) + " Zeichen ein.")+" <br />';");
					eval("document."+formName+"."+commands[0]+".focus();");
					errors++;
				}
				if(commands[y].slice(0, 1) == "<" && value.length > Number(commands[y].slice(1))) {
					eval("document."+formName+"."+commands[0]+".style.borderColor = '#900';");
					eval("document.getElementById('"+commands[0]+"Error').innerHTML += '"+((andererText != "")?andererText:"Bitte geben Sie Höchstens " + commands[y].slice(1) + " Zeichen ein.")+" <br />';");
					eval("document."+formName+"."+commands[0]+".focus();");
					errors++;
				}
				if(commands[y].slice(0, 1) == ">" && value.length < Number(commands[y].slice(1))) {
					eval("document."+formName+"."+commands[0]+".style.borderColor = '#900';");
					eval("document.getElementById('"+commands[0]+"Error').innerHTML += '"+((andererText != "")?andererText:"Bitte geben Sie Mindestens " + commands[y].slice(1) + " Zeichen ein.")+" <br />';");
					eval("document."+formName+"."+commands[0]+".focus();");
					errors++;
				}
				if(commands[y].slice(0, 1) == "!") {
					chars = commands[y].slice(1).split("-");
					unAllowedChars = 0;
					for(var z = 0; z < chars.length; z++) {
						if(value.indexOf(String.fromCharCode(chars[z])) != -1) unAllowedChars++;
						chars[z] = escape(String.fromCharCode(chars[z]));
					}
					if(unAllowedChars > 0) {
						eval("document."+formName+"."+commands[0]+".style.borderColor = '#900';");
						eval("document.getElementById('"+commands[0]+"Error').innerHTML += "+((andererText != "")?andererText:"unescape('Bitte vermeiden Sie die Zeichen " + chars.join(", ") + " <br />');"));
						eval("document."+formName+"."+commands[0]+".focus();");
						errors++;
					}
				}
				if(commands[y].slice(0, 1) == "=" && value != eval("document."+formName+"."+commands[y].slice(1)+".value;")) {
					eval("document."+formName+"."+commands[0]+".style.borderColor = '#900';");
					eval("document.getElementById('"+commands[0]+"Error').innerHTML += '"+((andererText != "")?andererText:"Beide Felder müssen übereinstimmen.")+" <br />';");
					eval("document."+formName+"."+commands[0]+".focus();");
					errors++;
				}
				if(commands[y] == "email" && !isEmail(value)) {
					eval("document."+formName+"."+commands[0]+".style.borderColor = '#900';");
					eval("document.getElementById('"+commands[0]+"Error').innerHTML += '"+((andererText != "")?andererText:"Bitte geben Sie eine gültige E-Mail Adresse ein.")+" <br />';");
					eval("document."+formName+"."+commands[0]+".focus();");
					errors++;
				}
				if(commands[y] == "number" && isNaN(value)) {
					eval("document."+formName+"."+commands[0]+".style.borderColor = '#900';");
					eval("document.getElementById('"+commands[0]+"Error').innerHTML += '"+((andererText != "")?andererText:"Bitte geben Sie eine Zahl ein.")+" <br />';");
					eval("document."+formName+"."+commands[0]+".focus();");
					errors++;
				}
				if(commands[y] == "float" && isNaN(str_replace(',', '.', value))) {
					eval("document."+formName+"."+commands[0]+".style.borderColor = '#900';");
					eval("document.getElementById('"+commands[0]+"Error').innerHTML += '"+((andererText != "")?andererText:"Bitte geben Sie eine Zahl im Format '1234,12' ein.")+" <br />';");
					eval("document."+formName+"."+commands[0]+".focus();");
					errors++;
				}
				if(commands[y] == "url" && !isUrl(value)) {
					eval("document."+formName+"."+commands[0]+".style.borderColor = '#900';");
					eval("document.getElementById('"+commands[0]+"Error').innerHTML += '"+((andererText != "")?andererText:"Bitte geben Sie eine gültige URL ein.")+" <br />';");
					eval("document."+formName+"."+commands[0]+".focus();");
					errors++;
				}
				if(commands[y] == "datum" && !isDatum(value)) {
					eval("document."+formName+"."+commands[0]+".style.borderColor = '#900';");
					eval("document.getElementById('"+commands[0]+"Error').innerHTML += '"+((andererText != "")?andererText:"Bitte geben Sie ein gültiges Datum ein.")+" <br />';");
					eval("document."+formName+"."+commands[0]+".focus();");
					errors++;
				}
				if(commands[y].slice(0, 1) == "#") andererText = commands[y].slice(1);
			}
		}
	}
	if(errors == 0) return true;
	else return false;
}

var ajax = false;
if(window.XMLHttpRequest) ajax = new XMLHttpRequest();
else if(window.ActiveXObject) {
	try { ajax = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (e) {
		try { ajax = new ActiveXObject("Microsoft.XMLHTTP"); }
		catch (e) {}
	}
}

function ajaxGetContent(type, url, parameter, output_function) {   
	if(!ajax) return false;
	ajax.onreadystatechange = function() {
		if(ajax.readyState == 4) {
			if(ajax.status == 200) eval(output_function + '(ajax.responseText);');
			else eval(output_function + '(false);');
		}
	}
	if(type == "post") {
		ajax.open('POST', url, true);
		ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		ajax.send(parameter);
	} else {
		ajax.open('GET', url + ((parameter.length > 0)?"?":"") + parameter, true);
		ajax.send(null);
	}
}

function checkUsername(text) {
	if(text == "false") {
		document.register.name.style.borderColor = '#900';
		if(document.register.name.value.length == 0) document.getElementById('nameError').innerHTML = 'Bitte geben Sie Ihren Benutzernamen ein.';
		else document.getElementById('nameError').innerHTML = 'Dieser Username ist leider schon vergeben. Sollten Sie Ihr Passwort vergessen haben, benutzen sie bitte die Funktion "Passwort vergessen?" rechts unter dem Login. <br />';
		
	} else {
		document.register.name.style.borderColor = '#090';
		document.getElementById('nameError').innerHTML = '';
	}
}

function checkEmail(text) {
	if(text == "false") {
		document.register.email.style.borderColor = '#900';
		if(document.register.email.value.length == 0) document.getElementById('emailError').innerHTML = 'Bitte geben Sie eine gültige E-Mail Adresse ein.';
		else document.getElementById('emailError').innerHTML = 'Es existiert bereits ein Benutzer mit dieser E-Mail Adresse. Sollten Sie Ihr Passwort vergessen haben, benutzen sie bitte die Funktion "Passwort vergessen?" rechts unter dem Login. <br />';
	} else {
		document.register.email.style.borderColor = '#090';
		document.getElementById('emailError').innerHTML = '';
	}
}

function checkChars(feldname, laenge, thisc) { 
	if(thisc.value.length > laenge) thisc.value = thisc.value.substr(0, laenge);
	document.getElementById(feldname).innerHTML = laenge - thisc.value.length;
}

function windowOpen(url, width, height, name) {
	if(name != undefined && name.length > 2) var pic = window.open(url,name,'width='+width+',height='+height+',location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no');
	else var pic = window.open(url,'popup'+Math.floor(Math.random()*10000),'width='+width+',height='+height+',location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no');
}
