function alertWrongField(selector, field){
    alert('The field "'+$(selector+' label[for='+field.attr('id')+']').text()+'" is empty or invalid.');
    field.focus();
}
function isEmail(email){
    return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email);
}
function bindForm(selector, action, onCheck){
    $(selector).submit(function(){
        var isValid=true;
        $(selector+' :input:visible:not(.optional):not([type=radio]):not([type=submit])').each(function(){
            var field=$(this);
            var value=field.is('select') ? field.val() : $.trim(field.val());
            if (!value || (field.hasClass('email') && !isEmail(value))){
                alertWrongField(selector, field);
                isValid=false;
            }
            return isValid;
        });
        if (isValid){
            $(selector+' input.email.optional:visible').each(function(){
                var field=$(this);
                var value=$.trim(field.val());
                if (value && !isEmail(value)){
                    alertWrongField(selector, field);
                    isValid=false;
                }
                return isValid;
            });
        }
        if (onCheck)
            isValid = onCheck(isValid);
        if (isValid && action)
            $(this).attr('action', action);
        return isValid;
    });
}

$(function(){
    $('#id_loginform').submit(function(){
        var form = $(this);
        $.post('/loginquery/', {
                username:form.find('input[name=username]').val(), 
                password:form.find('input[name=password]').val()
            }, 
            function(result){
                if (result.success){
                    document.location = document.location;
                }else{
                    alert('Invalid username or password.');
                }
            },'json');
        return false;
    });
});

