function alertWrongField(selector, field){
    alertUser('The field "'+$(selector+' label[for='+field.attr('id')+']').text()+'" is empty or invalid.', 'Error', function(){ field.focus(); })
}
function isEmail(email){
    return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email);
}
function bindForm(selector, focus_first, 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);
        return isValid;
    });
    if (focus_first)
        $(selector+' :input:visible:first').focus();
}
