function startRegistration() {
	cancelRegistrationStatus();
	document.getElementById("curtain").style.display = "";
	document.getElementById("registration").style.display = "";
	document.getElementById("input.register.username").focus();
}

function cancelRegistration() {
	document.getElementById("registration").style.display = "none";
	document.getElementById("curtain").style.display = "none";
	document.getElementById("input.register.username").value = "";
	document.getElementById("input.register.pwd").value = "";
	document.getElementById("input.register.pwd2").value = "";
	document.getElementById("input.register.email").value = "";
}

function register() {
	var name = document.getElementById("input.register.username").value.trim();
	var pwd = document.getElementById("input.register.pwd").value;
	var pwd2 = document.getElementById("input.register.pwd2").value;
	var email = document.getElementById("input.register.email").value;
	var refererUser = document.getElementById("input.register.refererUser").value;
	var agb = document.getElementById("input.register.agb");
	if (name.length < 3) {
		setRegistrationStatus(getString("error.usernamelength"));
	} else if (pwd.length < 3) {
		setRegistrationStatus(getString("error.passwordlength"));
	} else if (pwd != pwd2) {
		setRegistrationStatus(getString("error.passwordmatch"));
	} else if (!isEmail(email)) {
		setRegistrationStatus(getString("error.invalidemail"));
	} else if (!agb.checked) {
		setRegistrationStatus(getString("error.terms"));
	} else {
		var service = new ServiceObject(TRIVIAL_URL);	
		service.addParam ("inUser", name); 			
		var error = service.call("checkUserName");
		if (error) {
			setRegistrationStatus(getString("error." + error));
		} else {
			var service = new ServiceObject(TRIVIAL_URL);	
			service.addParam ("inName", name); 			
			service.addParam ("inPassword", pwd); 			
			service.addParam ("inEmail", email); 	
			service.addParam ("inRefererURL", refererURL);
			service.addParam ("inRefererUser", refererUser);	
			service.addParam ("inLanguage", languageNames[currentlyShownLanguage]);	
			var error = service.call("registerUser");
			if (error) {
				setRegistrationStatus(getString("error." + error));
			} else {
				setRegistrationStatus(getString("registrationsuccess"), true);
			}
		}
	}
}

function setRegistrationStatus(txt, hideBack) {
	document.getElementById("table.registration.input").style.display = "none";
	document.getElementById("table.registration.status").style.display = "";
	var x = txt;
	if (!hideBack) x = x + "<br/><br/><a href='javascript:cancelRegistrationStatus();'>" + getString("back") + "</a>";
	else x = x + "<br/><br/><a href='javascript:cancelRegistration();'>" + getString("close") + "</a>";
	document.getElementById("td.registration.status").innerHTML = x;
}

function cancelRegistrationStatus() {
	document.getElementById("table.registration.status").style.display = "none";
	document.getElementById("table.registration.input").style.display = "";
}