$(document).ready(function(){        
    $("form[name='signup_form'] input:submit").removeAttr('disabled');      
    $("form[name='signup_form']").submit(validate_signup);  
    $("form[name='resend_form']").submit(resend_validation_validate);      
    $("form[name='recovery_form']").submit(recover_password_validate);      
    $('#captcha_reload').click(reload_captcha);
});

function validate_signup(){
    var err = false;
    $('.error_resp').remove();
    var sub = $("form[name='signup_form'] input:submit");
    sub.attr('disabled','disabled');    
    if($(this).find('input:invalid').length != 0) {
        $(this).find('input:invalid').addClass('err_field');       
        sub.removeAttr('disabled');      
        err = 'Please correct the highlighted fields';
    }
    $(this).find('input:valid').removeClass('err_field');       
    var passstr = jQuery.trim(this.password.value);
    if(!err && this.password.value != this.password2.value){
       $("form[name='signup_form'] input[name='password']").addClass('err_field'); 
       $("form[name='signup_form'] input[name='password2']").addClass('err_field'); 
       err = 'The passwords don&#39;t match';
    }else if(!err && passstr.length < 6){
       this.password.value = jQuery.trim(this.password.value); 
       this.password2.value = jQuery.trim(this.password2.value); 
       $("form[name='signup_form'] input[name='password']").addClass('err_field'); 
       $("form[name='signup_form'] input[name='password2']").addClass('err_field');     
       err = 'Password must be at least 6 characters long';
    }
    if(err){
        sub.before('<span class="error_resp">' + err + '</span>&nbsp;');
        sub.removeAttr('disabled');
        return false;
    }
    var pdata = new Array();
    pdata.push('public_username='+URLEncode(this.public_username.value));    
    pdata.push('password='+this.password.value);
    pdata.push('email='+this.email.value);
    pdata.push('first_name='+URLEncode(this.first_name.value));
    pdata.push('last_name='+URLEncode(this.last_name.value));
    pdata.push('captcha='+hex_md5(this.captcha.value));
     $.ajax({
       type: "POST",
       url: "/signup",
       data: pdata.join('&'),
       success: function(msg){
         var spl = msg.split('|');
         if(spl[0]=='0'){
            sub.removeAttr('disabled');                  
            switch(spl[1]){
                case '0':
                    $("form[name='signup_form'] input[name='public_username']").addClass('err_field');    
                    break;
                case '1':
                    $("form[name='signup_form'] input[name='email']").addClass('err_field');    
                    break;   
                case '2':
                    $("form[name='signup_form'] input[name='captcha']").addClass('err_field');    
                    break;                       
            }
            sub.before('<span class="error_resp"> ' + spl[2] + '</span>');
         }else{            
            window.location=spl[1];            
         }
       }
     });
    
    
    return false;
}

function reload_captcha(){
    $('#captcha_img').fadeOut('slow');
    $('#captcha_img').attr('src','/captcha?rand='+Math.random());
    $('#captcha_img').fadeIn('slow');
} 

function resend_validation_validate(){
    var err = false;
    $('.error_resp').remove();
    var sub = $("form[name='resend_form'] input:submit");
    sub.attr('disabled','disabled');    
    if($(this).find('input:invalid').length != 0) {
        $(this).find('input:invalid').addClass('err_field');       
        sub.removeAttr('disabled');      
        err = 'Please correct the highlighted fields';
    }
    $(this).find('input:valid').removeClass('err_field');       
    
    if(err){
        sub.before('<span class="error_resp">' + err + '</span>');
        sub.removeAttr('disabled');
        return false;
    }
    
    var pdata = new Array();
    pdata.push('email='+this.email.value);
    pdata.push('captcha='+hex_md5(this.captcha.value));
    pdata.push('action=resend_validation');
     $.ajax({
       type: "POST",
       url: "/signup",
       data: pdata.join('&'),
       success: function(msg){
         var spl = msg.split('|');
         if(spl[0]=='0'){
            sub.removeAttr('disabled');                  
            switch(spl[1]){
                case '1':
                    $("form[name='resend_form'] input[name='email']").addClass('err_field');    
                    break;   
                case '2':
                    $("form[name='resend_form'] input[name='captcha']").addClass('err_field');    
                    break;                       
            }
            sub.before('<span class="error_resp"> ' + spl[2] + '</span>');
         }else{            
            sub.before('<span class="info_resp">' + spl[1] + '</span>');
            window.setTimeout("window.location='"+spl[2]+"'",5000);
         }
       }
     });    
    return false;
}   

function recover_password_validate(){
    var err = false;
    $('.error_resp').remove();
    var sub = $("form[name='recovery_form'] input:submit");
    sub.attr('disabled','disabled');    
    if($(this).find('input:invalid').length != 0) {
        $(this).find('input:invalid').addClass('err_field');       
        sub.removeAttr('disabled');      
        err = 'Please correct the highlighted fields';
    }
    $(this).find('input:valid').removeClass('err_field');       
    
    if(err){
        sub.before('<span class="error_resp">' + err + '</span>');
        sub.removeAttr('disabled');
        return false;
    }
    
    var pdata = new Array();
    pdata.push('email='+this.email.value);
    pdata.push('captcha='+hex_md5(this.captcha.value));
    pdata.push('action=recover_password');
     $.ajax({
       type: "POST",
       url: "/signup",
       data: pdata.join('&'),
       success: function(msg){
         var spl = msg.split('|');
         if(spl[0]=='0'){
            sub.removeAttr('disabled');                  
            switch(spl[1]){
                case '1':
                    $("form[name='recovery_form'] input[name='email']").addClass('err_field');    
                    break;   
                case '2':
                    $("form[name='recovery_form'] input[name='captcha']").addClass('err_field');    
                    break;                       
            }
            sub.before('<span class="error_resp">' + spl[2] + '</span>');
         }else{            
            sub.before('<span class="info_resp">' + spl[1] + '</span>');
            window.setTimeout("window.location='"+spl[2]+"'",5000);
         }
       }
     });    
    return false;
}
