check for duplicate radio button values

HTML

<input type="radio" name="n1" value="1">
<input type="radio" name="n1" value="2">
<input type="radio" name="n1" value="2">
<input type="radio" name="n2" value="2">

JavaScript

//simple version:
/*
(function() {
    var duplicates = {},
        size = 0;
    $('input:radio').each(function() {
        var $t = $(this),
            n = $t.attr('name'),
            v = this.value,
            $obj = $('input:radio[name=' + n + '][value=' + v + ']');
        if ($obj.length != 1 && !duplicates[n]) {
            console.warn('Found ' + $obj.length + ' duplicate values for name=' + n);
            duplicates[n] = $obj;
            size++;
        }
    });

    if (size) {
        console.error('You have ' + size + ' radio buttons with duplicate values');
        console.log(duplicates);
    } else {
        console.log('Ok: no duplicate radio button values');
    }
})();
*/
//nicer version
(function(c) {
    if (!$ || !$.fn || !$.fn.jquery) alert('jquery not found!');
    else {
        var d = {},
            s = 0,
            e = $('<div style="position:fixed;top:0;left:50%;width:240px;margin-left:-120px;padding:5px;z-index:10001;display:none">').appendTo('body'),
            m, k;
        $('input:radio').each(function() {
            var $t = $(this),
                n = $t.attr('name'),
                v = this.value,
                $obj = $('input:radio[name=' + n + '][value=' + v + ']');
            if ($obj.length != 1 && !d[n]) {
                c.warn('Found ' + $obj.length + ' duplicate values for name=' + n);
                d[n] = $obj;
                s++;
            }
        });
        if (s) {
            k = '#f99';
            c.error(m = 'You have ' + s + ' radio buttons with duplicate values');
            c.log(d)
        } else {
            k = '#9f9';
            c.log(m = 'Ok: no duplicate radio button values')
        }
        e.html(m).css('backgroundColor', k).show();
        window.setTimeout(function() {
            e.fadeOut('slow', function() {
                e.remove()
            })
        }, 3000)
    }
})(console);