@mixin x-btn(
    $ui,  
    
    $border-radius: null,
    
    $border-width: null,
            
    $border-color: null,
    $border-color-over: null,
    $border-color-focus: null,
    $border-color-pressed: null,
    $border-color-disabled: null,
    
    $padding: null,
    $text-padding: null,
    
    $background-color: null,
    $background-color-over: null,
    $background-color-focus: null,
    $background-color-pressed: null,
    $background-color-disabled: null,
    
    $background-gradient: null,
    $background-gradient-over: null,
    $background-gradient-focus: null,
    $background-gradient-pressed: null,
    $background-gradient-disabled: null,
    
    $color: null,
    $color-over: null,
    $color-focus: null,
    $color-pressed: null,
    $color-disabled: null,
    
    $font-size: null,
    $font-size-over: null,
    $font-size-focus: null,
    $font-size-pressed: null,
    $font-size-disabled: null,
    
    $font-weight: null,
    $font-weight-over: null,
    $font-weight-focus: null,
    $font-weight-pressed: null,
    $font-weight-disabled: null,
    
    $font-family: null,
    $font-family-over: null,
    $font-family-focus: null,
    $font-family-pressed: null,
    $font-family-disabled: null,
    
    $icon-size: null
) {
    .#{$prefix}btn-#{$ui} {
        border-color: $border-color;
    }
    
    @include x-frame('btn', $ui, $border-radius, $border-width, $padding, $background-color, $background-gradient, true);
    
    .#{$prefix}btn-#{$ui} .#{$prefix}btn-inner {
        font-size: $font-size;
        font-weight: $font-weight;
        font-family: $font-family;
        color: $color;
        background-repeat: no-repeat;
        padding: 0 $text-padding;
    }
    
    .#{$prefix}btn-#{$ui}-icon,
    .#{$prefix}btn-#{$ui}-noicon {
        button,
        .#{$prefix}btn-inner {
            height: $icon-size;
            line-height: $icon-size;
        }
    }

    //icons
    .#{$prefix}btn-#{$ui}-icon {
        .#{$prefix}btn-inner {
            padding: 0;
            width: $icon-size !important;
        }
    }
    
    .#{$prefix}btn-#{$ui}-icon-text-left {
        button {
            height: $icon-size;
        }
        .#{$prefix}btn-inner {
            height: $icon-size;
            line-height: $icon-size;
            padding-left: $icon-size + 4px;
        }
    }

    .#{$prefix}btn-#{$ui}-icon-text-right {
        button {
            height: $icon-size;
        }
        .#{$prefix}btn-inner {
            height: $icon-size;
            line-height: $icon-size;
            padding-right: $icon-size + 4px !important;
        }
    }
    
    .#{$prefix}btn-#{$ui}-icon-text-top {
        .#{$prefix}btn-inner {
            padding-top: $icon-size + 4px;
        }
    }
    
    .#{$prefix}btn-#{$ui}-icon-text-bottom {
        .#{$prefix}btn-inner {
            padding-bottom: $icon-size + 4px;
        }
    }
    
    .#{$prefix}btn-#{$ui}-over {
        @if $border-color-over != $border-color {
            border-color: $border-color-over;
        }
        @if $background-color-over != null {
            @if $background-gradient-over != $background-gradient {
                @include background-gradient($background-color-over, $background-gradient-over);
            }
            @else if $background-color-over != $background-color {
                background-color: $background-color-over;
            }
        }

        .#{$prefix}btn-inner {
            @if $color-over != $color {
                color: $color-over;
            }
            @if $font-weight-over != $font-weight {
                font-weight: $font-weight-over;
            }
            @if $font-size-over != $font-size {
                font-size: $font-size-over;
            }
            @if $font-family-over != $font-family {
                font-family: $font-family-over;
            } 
        }
    }
    
    .#{$prefix}btn-#{$ui}-focus {
        @if $border-color-focus != $border-color {
            border-color: $border-color-focus;
        }
        @if $background-color-focus != null {
            @if $background-gradient-focus != $background-gradient {
                @include background-gradient($background-color-focus, $background-gradient-focus);
            }
            @else if $background-color-focus != $background-color {
                background-color: $background-color-focus;
            }
        }

        .#{$prefix}btn-inner {
            @if $color-focus != $color {
                color: $color-focus;
            }
            @if $font-weight-focus != $font-weight {
                font-weight: $font-weight-focus;
            }
            @if $font-size-focus != $font-size {
                font-size: $font-size-focus;
            }
            @if $font-family-focus != $font-family {
                font-family: $font-family-focus;
            } 
        }
    }

    .#{$prefix}btn-#{$ui}-menu-active,
    .#{$prefix}btn-#{$ui}-pressed {
        @if $border-color-pressed != $border-color {
            border-color: $border-color-pressed;
        }
        @if $background-color-pressed != null {
            @if $background-gradient-pressed != $background-gradient {
                @include background-gradient($background-color-pressed, $background-gradient-pressed);
            }
            @else if $background-color-pressed != $background-color {
                background-color: $background-color-pressed;
            }
        }

        .#{$prefix}btn-inner {
            @if $color-pressed != $color {
                color: $color-pressed;
            }
            @if $font-weight-pressed != $font-weight {
                font-weight: $font-weight-pressed;
            }
            @if $font-size-pressed != $font-size {
                font-size: $font-size-pressed;
            }
            @if $font-family-pressed != $font-family {
                font-family: $font-family-pressed;
            } 
        }
    }
    
    .#{$prefix}btn-#{$ui}-disabled {
        @if $border-color-disabled != $border-color {
            border-color: $border-color-disabled;
        }
        @if $background-color-disabled != null {
            @if $background-gradient-disabled != $background-gradient {
                @include background-gradient($background-color-disabled, $background-gradient-disabled);
            }
            @else if $background-color-disabled != $background-color {
                background-color: $background-color-disabled;
            }
        }

        .#{$prefix}btn-inner {
            @if $color-disabled != $color {
                color: $color !important;
            }
            @if $font-weight-disabled != $font-weight {
                font-weight: $font-weight-disabled;
            }
            @if $font-size-disabled != $font-size {
                font-size: $font-size-disabled;
            }
            @if $font-family-disabled != $font-family {
                font-family: $font-family-disabled;
            } 
        }
    }
    
    .#{$prefix}ie .#{$prefix}btn-#{$ui}-disabled {
        .#{$prefix}btn-inner {
            color: darken($color-disabled, 20) !important;
        }
    }
    
    .#{$prefix}ie6 .#{$prefix}btn-#{$ui}-disabled {
        .#{$prefix}btn-inner {
            color: $color-disabled !important;
        }
    }
    
    @if not $supports-border-radius or $compile-all {    
        .#{$prefix}nbr { 
            .#{$prefix}btn-#{$ui}-over {
                .#{$prefix}frame-tl,
                .#{$prefix}frame-bl,
                .#{$prefix}frame-tr,
                .#{$prefix}frame-br,
                .#{$prefix}frame-tc,
                .#{$prefix}frame-bc {
                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-over-corners.gif');
                }
                .#{$prefix}frame-ml,
                .#{$prefix}frame-mr {
                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-over-sides.gif');
                }
                .#{$prefix}frame-mc {
                    background-color: $background-color-over;
                    @if $background-gradient-over {
                        background-image: theme-image($theme-name, 'btn/btn-#{$ui}-over-bg.gif');
                    }
                }
            }
            
            .#{$prefix}btn-#{$ui}-focus {
                .#{$prefix}frame-tl,
                .#{$prefix}frame-bl,
                .#{$prefix}frame-tr,
                .#{$prefix}frame-br,
                .#{$prefix}frame-tc,
                .#{$prefix}frame-bc {
                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-focus-corners.gif');
                }
                .#{$prefix}frame-ml,
                .#{$prefix}frame-mr {
                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-focus-sides.gif');
                }
                .#{$prefix}frame-mc {
                    background-color: $background-color-focus;
                    @if $background-gradient-focus {
                        background-image: theme-image($theme-name, 'btn/btn-#{$ui}-focus-bg.gif');
                    }
                }
            }
            
            .#{$prefix}btn-#{$ui}-menu-active,
            .#{$prefix}btn-#{$ui}-pressed {
                .#{$prefix}frame-tl,
                .#{$prefix}frame-bl,
                .#{$prefix}frame-tr,
                .#{$prefix}frame-br,
                .#{$prefix}frame-tc,
                .#{$prefix}frame-bc {
                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-pressed-corners.gif');
                }
                .#{$prefix}frame-ml,
                .#{$prefix}frame-mr {
                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-pressed-sides.gif');
                }
                .#{$prefix}frame-mc {
                    background-color: $background-color-pressed;
                    @if $background-gradient-pressed {
                        background-image: theme-image($theme-name, 'btn/btn-#{$ui}-pressed-bg.gif');
                    }
                }
            }
            
            .#{$prefix}btn-#{$ui}-disabled {
                .#{$prefix}frame-tl,
                .#{$prefix}frame-bl,
                .#{$prefix}frame-tr,
                .#{$prefix}frame-br,
                .#{$prefix}frame-tc,
                .#{$prefix}frame-bc {
                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-disabled-corners.gif');
                }
                .#{$prefix}frame-ml,
                .#{$prefix}frame-mr {
                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-disabled-sides.gif');
                }
                .#{$prefix}frame-mc {
                    background-color: $background-color-disabled;
                    @if $background-gradient-disabled {
                        background-image: theme-image($theme-name, 'btn/btn-#{$ui}-disabled-bg.gif');
                    }
                }  
            }
        }
    }
    
    @if not $supports-gradients or $compile-all {
        @if $background-gradient != null {
            .#{$prefix}nlg { 
                .#{$prefix}btn-#{$ui} {
                    background-repeat: repeat-x;
                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-bg.gif');
                }
            }
        }
        
        @if $background-gradient-over != null {
            .#{$prefix}nlg { 
                .#{$prefix}btn-#{$ui}-over {
                    background-repeat: repeat-x;
                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-over-bg.gif');
                }
            }
        }
        
        @if $background-gradient-focus != null {
            .#{$prefix}nlg { 
                .#{$prefix}btn-#{$ui}-focus {
                    background-repeat: repeat-x;
                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-focus-bg.gif');
                }
            }
        }

        @if $background-gradient-pressed != null {
            .#{$prefix}nlg { 
                .#{$prefix}btn-#{$ui}-menu-active,
                .#{$prefix}btn-#{$ui}-pressed {
                    background-repeat: repeat-x;
                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-pressed-bg.gif');
                }
            }
        }
        
        @if $background-gradient-disabled != null {
            .#{$prefix}nlg {
                .#{$prefix}btn-#{$ui}-disabled {
                    background-repeat: repeat-x;
                    background-image: theme-image($theme-name, 'btn/btn-#{$ui}-disabled-bg.gif');
                }
            }
        }
    }
};