// vim: et:ts=4:sw=4:sts=4:ft=javascript pandora.autovalidateCode = function(value, blur, callback) { value = value.toUpperCase().split('').map(function(v) { return /[A-Z]/.test(v) ? v : null; }).join('').substr(0, 16); callback({valid: value.length == 16, value: value}); }; pandora.autovalidateEmail = function(value, blur, callback) { value = value.toLowerCase().split('').map(function(v, i) { return /[0-9a-z\.\+\-_@]/.test(v) ? v : null; }).join('').substr(0, 255); callback({valid: Ox.isValidEmail(value), value: value}); }; pandora.autovalidateListname = function(value, blur, callback) { // A valid listname consists of 1 to 255 unicode characters, // without leading, trailing or consecutive spaces var length = value.length; value = value.toLowerCase().split('').map(function(v, i) { return /\s/.test(v) && (i == 0 || (i == length - 1 && blur)) ? null : v; }).join(''); value = value.replace(/\s+/g, ' ').substr(0, 255); callback({valid: !!value.length, value: value}); }; pandora.autovalidateUsername = function(value, blur, callback) { // A valid username consists of 1 to 255 unicode characters, // without leading, trailing or consecutive spaces var length = value.length; value = value.toLowerCase().split('').map(function(v, i) { return /\s/.test(v) && (i == 0 || (i == length - 1 && blur)) ? null : v; }).join(''); value = value.replace(/\s+/g, ' ').substr(0, 255); callback({valid: !!value.length, value: value}); }; pandora.validateNewEmail = function(value, callback) { value == pandora.user.email ? callback({ message: '', valid: true, value: value }) : Ox.isValidEmail(value) ? pandora.api.findUser({ key: 'email', value: value, operator: '==' }, function(result) { callback({ message: 'E-mail address already exists', valid: !result.data.users.length, value: value }); }) : callback({ message: (!value.length ? 'Missing' : 'Invalid') + ' e-mail address', valid: false, value: value }); }; pandora.validateNewPassword = function(value, callback) { callback({ message: 'Missing password', valid: value.length > 0, value: value }); }; pandora.validateUser = function(key, existing) { existing = existing || false; var string = key == 'username' ? 'username' : 'e-mail address'; return function(value, callback) { var valid = key == 'username' ? !!value.length : Ox.isValidEmail(value); valid ? pandora.api.findUser({ key: key, value: value, operator: '==' }, function(result) { var valid = existing == !!result.data.users.length; //Ox.print(existing, result.data.users) callback({ message: existing ? 'Unknown ' + string : string[0].toUpperCase() + string.substr(1) + ' already exists', valid: valid }); }) : callback({ message: (!value.length ? 'Missing' : 'Invalid') + ' ' + string, valid: false }); }; };