(function (win) {
var baseSettings = {
version: '1.0',
backend: 'https://www.flibzee.com/labackend/check',
form: null,
handler: function () {
return true;
},
alerter: function (messages) {
var message = '';
for (var key in messages) {
if (messages.hasOwnProperty(key)) {
message = messages[key].join("\n");
}
}
alert(message);
}
};
function _checkUser(name) {
if (name.length < 6) {
baseSettings.alerter({username: ['Bitte mindestens 6 Zeichen eingeben']});
return false;
}
if (name.length > 12) {
baseSettings.alerter({username: ['Bitte maximal 12 Zeichen eingeben']});
return false;
}
if (/[^a-zA-Z0-9]/.test(name)) {
baseSettings.alerter({username: ['Es sind keine Sonderzeichen im Username erlaubt!']});
return false;
}
return true;
}
function _checkEmail(mail) {
if (!mail.match(/.+@.+\..+/)) {
baseSettings.alerter({email: ['Bitte geben Sie eine gültige E-Mail Adresse ein.']});
return false;
}
return true;
}
function _submitCheck(user, mail) {
if (_checkUser(user) && _checkEmail(mail)) {
var su = document.createElement('script');
su.type = 'text/javascript';
su.async = false;
su.src = baseSettings.backend + '?username=' + encodeURIComponent(user) + '&email=' +
encodeURIComponent(mail) + '&jsonp=window.laApi.signupResult';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(su, s);
}
return false;
}
win.laApi = {
checkUsername: function (username) {
var user = document.getElementById(username).value;
return _checkUser(user);
},
checkEmail: function (email) {
var mail = document.getElementById(email).value;
return _checkEmail(mail);
},
checkSignup: function (username, email, form) {
baseSettings.form = form;
var user = document.getElementById(username).value;
var mail = document.getElementById(email).value;
return _submitCheck(user, mail);
},
signupResult: function (resultId, messages, alternativeNames) {
if (resultId != 0) {
var doAlert = baseSettings.handler(resultId, messages, alternativeNames);
if (doAlert) {
baseSettings.alerter(messages);
}
} else {
baseSettings.form.submit();
}
},
setAlert: function (callable) {
baseSettings.alerter = callable;
}
}
})(window);