(function ($) {
Drupal.friendly_register = Drupal.friendly_register || {};
Drupal.friendly_register.flood = false;
Drupal.friendly_register.timeout = null;
Drupal.friendly_register.checkUserName = function (userName) {
$.getJSON(userName.ajaxPath + encodeURIComponent(userName.oldValue), function(data) {
if (!data.flood) {
var message;
var cssclass;
if (data.available) {
message = userName.avail;
cssclass = 'ok';
} else {
message = userName.notAvail;
cssclass = 'error';
}
$('#edit-name-check').remove();
userName.field.after('
' + message + '
');
Drupal.attachBehaviors();
} else {
Drupal.friendly_register.flood = true;
$('#edit-name-check').remove();
clearTimeout(Drupal.friendly_register.timeout);
}
});
};
Drupal.friendly_register.checkEmail = function (email) {
$.getJSON(email.ajaxPath + encodeURIComponent(email.oldValue), function(data) {
if (!data.flood) {
if (data.available == 'incomplete') {
$('#edit-mail-check').remove();
return;
}
var message;
if (data.available) {
message = email.avail;
cssclass = 'ok';
} else {
message = email.notAvail;
cssclass = 'error';
}
$('#edit-mail-check').remove();
email.field.after('' + message + '
');
Drupal.attachBehaviors();
} else {
Drupal.friendly_register.flood = true;
$('#edit-mail-check').remove();
clearTimeout(Drupal.friendly_register.timeout);
}
});
};
Drupal.behaviors.friendly_register = {
attach: function (context, settings) {
var loginURL = Drupal.settings.basePath + 'user';
var resetURL = Drupal.settings.basePath + 'user/password';
var userName = new Object();
userName.oldValue = '';
userName.ajaxPath = Drupal.settings.basePath + 'ajax/check-user/';
userName.field = $('.friendly-register-name', context);
userName.avail = Drupal.t('This username is available.');
userName.notAvail = Drupal.t('This username is not available.');
var email = new Object();
email.oldValue = '';
email.ajaxPath = Drupal.settings.basePath + 'ajax/check-email/';
email.field = $('.friendly-register-mail', context);
email.avail = Drupal.t('This email address has not been used.');
email.notAvail = Drupal.t('This email address is already in use, please try logging in with that email address or resetting your password.', {'@login': loginURL, '@reset': resetURL});
userName.field.once('friendly-register').focus(function () {
if (Drupal.friendly_register.flood) {
return;
}
Drupal.friendly_register.timeout = setInterval(function (){
var newValue = userName.field.val();
if (newValue != userName.oldValue) {
userName.oldValue = newValue;
Drupal.friendly_register.checkUserName(userName);
}
}, 1000);
})
.blur(function () {
clearTimeout(Drupal.friendly_register.timeout);
var newValue = userName.field.val();
if (!Drupal.friendly_register.flood && newValue != userName.oldValue) {
userName.oldValue = newValue;
Drupal.friendly_register.checkUserName(userName);
}
});
email.field.once('friendly-register').focus(function () {
if (Drupal.friendly_register.flood) {
return;
}
Drupal.friendly_register.timeout = setInterval(function (){
var newValue = email.field.val();
if (newValue != email.oldValue) {
email.oldValue = newValue;
Drupal.friendly_register.checkEmail(email);
}
}, 1000);
})
.blur(function () {
clearTimeout(Drupal.friendly_register.timeout);
var newValue = email.field.val();
if (!Drupal.friendly_register.flood && newValue != email.oldValue) {
email.oldValue = newValue;
Drupal.friendly_register.checkEmail(email);
}
});
}
};
})(jQuery);