
$.fn.redondeado = function (arriba, abajo) {

    if(typeof arriba == "undefined")
                arriba = true;

    if(typeof abajo == "undefined")
                abajo = true;

    function borderColor(lado, obj) {

        if(obj.css('border-' + lado + '-width') == '0px')
            return obj.css('background-color');

        return obj.css('border-' + lado + '-color');
    }

    this.each(function() {
        var jqt = $(this);

        var normal = " float: none; clear: none; display: block; position: static; padding: 0px; width: auto; overflow: hidden; ";
        
        // array dos dimenciones, 1: numero de divs a insertar arriba y abajo, 2: array n-1 : margen lateral, n-2: ancho del borde
        var forma = [[1, 1], [1, 1], [2, 1] , [3, 2], [5, 0]];

        var superior = '';
        var inferior = '';
        for(var i = 0; i < forma.length; i++) {
                var capa = '<div style="' + normal + ' \
                               margin: 0px ' + forma[i][0] + 'px 0px ' + forma[i][0] + 'px; height: 1px; '
                               + (forma[i][1] == 0 ?
                                    'border: solid ' + borderColor('top', jqt) + '; border-width: 0px 1px 0px 1px; background-color: ' + borderColor('top', jqt) + '; '
                                  :
                                    'border-top: 0px; border-bottom: 0px; \
                                     border-left: ' + forma[i][1] + 'px solid ' + borderColor('left', jqt) + '; \
                                     border-right: ' + forma[i][1] + 'px solid ' + borderColor('right', jqt) + '; \
                                     background-color: ' + jqt.css('background-color') + '; '
                                 )
                               + '"></div>';
                if(abajo)
                    inferior += capa;

                if(arriba)
                    superior = capa + superior;
        }

        // aplica estilo
        var ndiv = $('<div style="'
                  + normal
                  + ' border-left: ' + jqt.css('border-left-width') + ' solid ' + borderColor('left', jqt) + ';'
                  + ' border-right: ' + jqt.css('border-right-width') + ' solid ' + borderColor('right', jqt) + ';'
                  + ' padding-top: ' + jqt.css('padding-top') + ';'
                  + ' padding-bottom: ' + jqt.css('padding-bottom') + ';'
                  + ' padding-left: ' + jqt.css('padding-left') + ';'
                  + ' padding-right: ' + jqt.css('padding-right') + ';'
                  + ' background-color: ' + jqt.css('background-color') + ';'
                  + '"></div>').get(0);

        while (this.hasChildNodes())
                ndiv.appendChild(this.firstChild);

        jqt
          .css('background-color', 'transparent')
          .css('border-width', '0px')
          .css('padding', '0px')

        // problemas con los cursores
        jqt.append(superior);
        this.appendChild(ndiv);
        jqt.append(inferior);

    });
}
