def ajax_signup(request):
    if request.is_ajax() and request.method == 'POST':
        user_type = request.POST.get('user_type', USER_TYPE_PARTICIPANT)
        if user_type == USER_TYPE_SCIENTIST:
            form = ScientistSignupForm(request.POST)
        elif user_type == USER_TYPE_DEPARTMENT:
            form = DepartmentSignupForm(request.POST)
        else:
            form = ParticipantSignupForm(request.POST)
        if form.is_valid():
            user = form.save(request)
            request.session['user_type'] = user_type
            if not hasattr(user, 'backend'):
                user.backend = "django.contrib.auth.backends.ModelBackend"
            django_login(request, user)
            data = {'status': 'success'}
        else:
            data = json.loads(errors_to_json(form.errors))
        return json_result(request, data)
    else:
        user_type = request.REQUEST.get('user_type', USER_TYPE_PARTICIPANT)
        next = request.REQUEST.get('next', None)
        context = {
            'user_type': user_type if user_type else USER_TYPE_PARTICIPANT,
            'next': next,
        }
        return render_to_response("account/ajax_signup.html", context, context_instance=RequestContext(request))
def ajax_login(request):
    if request.is_ajax() and request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            login(request, request.user)
            data = {'status': 'success'}
        else:
            data = json.loads(errors_to_json(form.errors))
        return json_result(request, data)
    else:
        return render_to_response("account/ajax_login.html", {}, context_instance=RequestContext(request))