    @function pad($radius) {
        $radius: boxmax($radius);
        $radius: parseint($radius);
        @if $radius >= 10 {
            @return $radius;
        }
        @else {
            @return "0" + $radius;
        }
    }

    @mixin x-frame(
        $cls,
        $ui: null,
        $border-radius: 0px,
        $border-width: 0px,
        $padding: null,
        $background-color: null,
        $background-gradient: null,
        $table: false,
        $background-direction: top,
        $include-frame-rtl: false
    ) {
        $cls-ui: $cls;
        @if $ui != null {
            $cls-ui: $cls + '-' + $ui;
        }

        $vertical: false;
        @if $background-direction == left or $background-direction == right {
            $vertical: true;
        }

        $frame-top: max(top($border-radius), right($border-radius));
        $frame-right: max(right($border-radius), bottom($border-radius));
        $frame-bottom: max(bottom($border-radius), left($border-radius));
        $frame-left: max(left($border-radius), top($border-radius));

        $padding-top: 0;
        $padding-right: 0;
        $padding-bottom: 0;
        $padding-left: 0;

        @if $padding == null {
            $padding-top: $frame-top - top($border-width);
            $padding-right: $frame-right - right($border-width);
            $padding-bottom: $frame-bottom - bottom($border-width);
            $padding-left: $frame-left - left($border-width);
        }
        @else {
            $padding-top: top($padding);
            $padding-right: right($padding);
            $padding-bottom: bottom($padding);
            $padding-left: left($padding);
        }

        @if $padding-top < $frame-top {
            $padding-top: $frame-top - top($border-width);
        }
        @if $padding-right < $frame-right {
            $padding-right: $frame-right - right($border-width);
        }
        @if $padding-bottom < $frame-bottom {
            $padding-bottom: $frame-bottom - bottom($border-width);
        }
        @if $padding-left < $frame-left {
            $padding-left: $frame-left - left($border-width);
        }

        .#{$prefix}#{$cls-ui} {
            @if $supports-border-radius {
                @if length($border-radius) == 2 {
                    @include border-top-left-radius(nth($border-radius, 1));
                    @include border-top-right-radius(nth($border-radius, 2));
                } @else if length($border-radius) == 3 {
                    @include border-top-left-radius(nth($border-radius, 1));
                    @include border-top-right-radius(nth($border-radius, 2));
                    @include border-bottom-right-radius(nth($border-radius, 3));
                } @else if length($border-radius) == 4 {
                    @include border-top-left-radius(nth($border-radius, 1));
                    @include border-top-right-radius(nth($border-radius, 2));
                    @include border-bottom-right-radius(nth($border-radius, 3));
                    @include border-bottom-left-radius(nth($border-radius, 4));
                } @else {
                    @include border-radius($border-radius);
                }
            }
            padding: $padding-top $padding-right $padding-bottom $padding-left;
            border-width: $border-width;
            border-style: solid;
            @if $background-color != null {
                @if $supports-gradients and $background-gradient != null {
                    @include background-gradient($background-color, $background-gradient, $background-direction);
                }
                @else {
                    background-color: $background-color;
                }
            }
        }

        @if not $supports-gradients or $compile-all {
            .#{$prefix}nlg {
                .#{$prefix}#{$cls-ui}-mc {
                    @if $background-gradient != null {
                        background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-bg.gif', false, $relative-image-path-for-uis);
                    }
                    @if $background-color != null {
                        background-color: $background-color;
                    }
                }
                @if $include-frame-rtl and $background-gradient != null {
                    .#{$prefix}rtl.#{$prefix}#{$cls-ui}-mc {
                        background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-bg-rtl.gif', false, $relative-image-path-for-uis);
                    }
                }
            }
        }

        @if not $supports-border-radius or $compile-all {
            .#{$prefix}nbr {
                .#{$prefix}#{$cls-ui} {
                    padding: 0 !important;
                    border-width: 0 !important;
                    @include border-radius(0px);
                    @if $background-color != null {
                        background-color: transparent;
                    }
                    @else {
                        background: #fff;
                    }

                    $type: '100';
                    @if $table == true {
                        $type: '110';
                    }
                    $direction: '100';
                    @if $vertical == true {
                        $direction: '110';
                    }

                    $left: $type + pad(top($border-radius)) + pad(right($border-radius)) + 'px';
                    $top: $direction + pad(bottom($border-radius)) + pad(left($border-radius)) + 'px';
                    background-position: unquote($left) unquote($top);
                }

                .#{$prefix}#{$cls-ui}-tl,
                .#{$prefix}#{$cls-ui}-bl,
                .#{$prefix}#{$cls-ui}-tr,
                .#{$prefix}#{$cls-ui}-br,
                .#{$prefix}#{$cls-ui}-tc,
                .#{$prefix}#{$cls-ui}-bc,
                .#{$prefix}#{$cls-ui}-ml,
                .#{$prefix}#{$cls-ui}-mr {
                    zoom:1;

                    @if $background-color != transparent {
                        background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-corners.gif', false, $relative-image-path-for-uis);
                    }
                }

                @if $background-color != transparent {
                    @if $include-frame-rtl {
                        .#{$prefix}rtl {
                            &.#{$prefix}#{$cls-ui}-tl,
                            &.#{$prefix}#{$cls-ui}-ml,
                            &.#{$prefix}#{$cls-ui}-bl,
                            &.#{$prefix}#{$cls-ui}-tr,
                            &.#{$prefix}#{$cls-ui}-mr,
                            &.#{$prefix}#{$cls-ui}-br {
                                background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-corners-rtl.gif', false, $relative-image-path-for-uis);
                            }
                        }
                    }
                }

                @if $vertical == true {
                    .#{$prefix}#{$cls-ui}-tc,
                    .#{$prefix}#{$cls-ui}-bc {
                        zoom:1;

                        @if $background-color != transparent {
                            background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-sides.gif', false, $relative-image-path-for-uis);
                            background-position: 0 0;
                            background-repeat: repeat-x;
                        }
                    }

                    @if $include-frame-rtl and $background-color != transparent {
                        .#{$prefix}rtl {
                            &.#{$prefix}#{$cls-ui}-tc,
                            &.#{$prefix}#{$cls-ui}-bc {
                                background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-sides-rtl.gif', false, $relative-image-path-for-uis);
                            }
                        }
                    }
                } @else {
                    .#{$prefix}#{$cls-ui}-ml,
                    .#{$prefix}#{$cls-ui}-mr {
                        zoom:1;

                        @if $background-color != transparent {
                            background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-sides.gif', false, $relative-image-path-for-uis);
                            background-position: 0 0;
                            @if $background-gradient == null {
                                background-repeat: repeat-y;
                            }
                        }
                    }
                }

                $padding-top: $padding-top - $frame-top + top($border-width);
                $padding-right: $padding-right - $frame-right + right($border-width);
                $padding-bottom: $padding-bottom - $frame-bottom + bottom($border-width);
                $padding-left: $padding-left - $frame-left + left($border-width);

                @if $padding-top < 0 {
                    $padding-top: 0;
                }
                @if $padding-right < 0 {
                    $padding-right: 0;
                }
                @if $padding-bottom < 0 {
                    $padding-bottom: 0;
                }
                @if $padding-left < 0 {
                    $padding-left: 0;
                }

                .#{$prefix}#{$cls-ui}-mc {
                    padding: $padding-top $padding-right $padding-bottom $padding-left;
                }
            }

            @if $include-ie {
                // framed components in ie7 strict mode suffer from an obscure bug that causes the tl and bl framing elements to
                // be shrink-wrapped to the width of their contents.  This hack forces the elements' widths to fit to their parent
                .#{$prefix}strict .#{$prefix}ie7 {
                    .#{$prefix}#{$cls-ui}-tl,
                    .#{$prefix}#{$cls-ui}-bl {
                        position: relative;
                        right: 0;
                    }
                }
            }
        }
    }