242 lines
5.8 KiB
JavaScript
242 lines
5.8 KiB
JavaScript
/************************************************/
|
|
/* IPB3 Javascript */
|
|
/* -------------------------------------------- */
|
|
/* ips.regiser.js - Registration code */
|
|
/* (c) IPS, Inc 2008 */
|
|
/* -------------------------------------------- */
|
|
/* Author: Rikki Tissier */
|
|
/************************************************/
|
|
|
|
var _register = window.IPBoard;
|
|
|
|
_register.prototype.register = {
|
|
inSection: '',
|
|
allowed_chars: [ ],
|
|
|
|
|
|
init: function()
|
|
{
|
|
Debug.write("Initializing ips.register.js");
|
|
|
|
document.observe("dom:loaded", function(){
|
|
if( ipb.register.inSection == 'mainform' )
|
|
{
|
|
ipb.register.initFormEvents();
|
|
}
|
|
});
|
|
},
|
|
|
|
initFormEvents: function()
|
|
{
|
|
if( $('login_name') ){
|
|
$('login_name').observe('blur', ipb.register.checkLoginName);
|
|
}
|
|
if( $('display_name') ){
|
|
$('display_name').observe('blur', ipb.register.checkLoginName);
|
|
}
|
|
if( $('email_1') && $('email_2') )
|
|
{
|
|
$('email_1').observe('blur', ipb.register.checkEmailValid);
|
|
$('email_2').observe('blur', ipb.register.checkEmailMatch);
|
|
}
|
|
if( $('password_1') && $('password_2') )
|
|
{
|
|
$('password_1').observe('blur', ipb.register.checkPasswordValid);
|
|
$('password_2').observe('blur', ipb.register.checkPasswordMatch);
|
|
}
|
|
},
|
|
|
|
checkPasswordValid: function(e)
|
|
{
|
|
if( $F('password_1').length < 3 )
|
|
{
|
|
ipb.register.showMessage( $('password_1'), ipb.lang['pass_too_short'], 1 );
|
|
return;
|
|
}
|
|
if( $F('password_1').length > 32 )
|
|
{
|
|
ipb.register.showMessage( $('password_1'), ipb.lang['pass_too_long'], 1 );
|
|
return;
|
|
}
|
|
|
|
ipb.register.removeMessage( $('password_1') );
|
|
},
|
|
|
|
checkPasswordMatch: function(e)
|
|
{
|
|
if( $F('password_1') != $F('password_2') )
|
|
{
|
|
ipb.register.showMessage( $('password_2'), ipb.lang['pass_doesnt_match'], 1 );
|
|
return;
|
|
}
|
|
|
|
ipb.register.removeMessage( $('password_2') );
|
|
},
|
|
|
|
checkEmailValid: function(e)
|
|
{
|
|
if( !ipb.validate.email( $('email_1') ) )
|
|
{
|
|
ipb.register.showMessage( $( 'email_1' ), ipb.lang['invalid_email'], 1 );
|
|
return;
|
|
}
|
|
|
|
ipb.register.removeMessage( $('email_1') );
|
|
|
|
// Ajax to validate
|
|
var url = ipb.vars['base_url'] + "app=core&module=ajax&section=register&do=check-email-address";
|
|
|
|
new Ajax.Request( url.replace(/&/g, '&'),
|
|
{
|
|
method: 'post',
|
|
parameters: {
|
|
email: $F('email_1').encodeParam(),
|
|
secure_key: ipb.vars['secure_hash']
|
|
},
|
|
onSuccess: function( t )
|
|
{
|
|
var _t = t.responseText.replace( /\s/, '', 'g' );
|
|
|
|
switch( _t )
|
|
{
|
|
case 'found':
|
|
ipb.register.showMessage( $('email_1'), ipb.lang['email_in_use'], 1 );
|
|
break;
|
|
case 'banned':
|
|
ipb.register.showMessage( $('email_1'), ipb.lang['email_banned'], 1 );
|
|
break;
|
|
case 'notfound':
|
|
ipb.register.showMessage( $('email_1'), ipb.lang['available'], 0 );
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
|
|
},
|
|
|
|
checkEmailMatch: function(e)
|
|
{
|
|
email1 = $('email_1');
|
|
email2 = $('email_2');
|
|
|
|
if( $F( email1 ).toLowerCase() != $F( email2 ).toLowerCase() )
|
|
{
|
|
ipb.register.showMessage( $( email2 ), ipb.lang['email_doesnt_match'], 1 );
|
|
return;
|
|
}
|
|
|
|
ipb.register.removeMessage( $('email_2') );
|
|
},
|
|
|
|
checkLoginName: function(e)
|
|
{
|
|
elem = $( Event.element(e) );
|
|
name = $F( elem );
|
|
ajax = ( $( elem ).id == 'login_name' ) ? 'check-user-name' : 'check-display-name';
|
|
|
|
// Check the simple stuff first
|
|
if( name.blank() ){
|
|
ipb.register.showMessage( $(elem), ipb.lang['is_required'], 1 );
|
|
return;
|
|
}
|
|
if( name.length < 3 ){
|
|
ipb.register.showMessage( $(elem), ipb.lang['too_short'], 1 );
|
|
return;
|
|
}
|
|
if( name.length > ipb.register.nameMaxLength ){
|
|
ipb.register.showMessage( $(elem), ipb.lang['too_long'], 1 );
|
|
return;
|
|
}
|
|
|
|
if( ipb.register.allowed_chars != "" )
|
|
{
|
|
test = "^[" + RegExp.escape(allowed_chars) + "]+$";
|
|
|
|
if ( name.match( test ) )
|
|
{
|
|
ipb.register.showMessage( $(elem), ipb.lang['invalid_chars'], 1 );
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Check for availability
|
|
name = name.replace("+", "+");
|
|
|
|
new Ajax.Request( ipb.vars['base_url'] + "app=core&module=ajax§ion=register&do=" + ajax,
|
|
{
|
|
method: 'post',
|
|
parameters: {
|
|
name: escape( name ),
|
|
secure_key: ipb.vars['secure_hash']
|
|
},
|
|
onSuccess: function(t)
|
|
{
|
|
if( t.responseText == 'found' )
|
|
{
|
|
ipb.register.showMessage( $(elem), ipb.lang['not_available'], 1 );
|
|
return;
|
|
}
|
|
else if( t.responseText == 'notfound' )
|
|
{
|
|
ipb.register.showMessage( $(elem), ipb.lang['available'], 0 );
|
|
return;
|
|
}
|
|
else if( t.responseText )
|
|
{
|
|
ipb.register.showMessage( $(elem), t.responseText, 1 );
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
ipb.register.removeMessage( $(elem) );
|
|
}
|
|
}
|
|
}
|
|
);
|
|
|
|
|
|
},
|
|
|
|
showMessage: function( elem, msg, error )
|
|
{
|
|
if( !$( elem ) ){ return; }
|
|
|
|
// Is there already an error?
|
|
if( $( elem.id + "_msg" ) )
|
|
{
|
|
$( elem.id + "_msg" ).remove();
|
|
}
|
|
|
|
temp = ( error == 1 ) ? ipb.templates['error'] : ipb.templates['accept'];
|
|
|
|
temp = temp.gsub( /\[msg\]/, msg ).gsub( /\[id\]/, elem.id );
|
|
|
|
// Add after control
|
|
$( elem ).insert( { after: temp } );
|
|
try {
|
|
new Effect.Appear( $( elem.id + "_msg" ), { duration: 0.4 } );
|
|
|
|
if( error ){
|
|
$( elem ).addClassName( 'error' ).removeClassName('accept');
|
|
} else {
|
|
$( elem ).addClassName( 'accept' ).removeClassName('error');
|
|
}
|
|
}
|
|
catch(err){ Debug.write( err ); }
|
|
},
|
|
|
|
removeMessage: function( elem )
|
|
{
|
|
if( !$( elem ) ){ return; }
|
|
|
|
if( $( elem.id + "_msg" ) )
|
|
{
|
|
$( elem.id + "_msg" ).remove();
|
|
}
|
|
|
|
$(elem).removeClassName( 'error' ).removeClassName('accept');
|
|
}
|
|
|
|
}
|
|
ipb.register.init();
|