// ---- CSS3 SASS MIXINS ----
// https://github.com/madr/css3-sass-mixins
//  
//  Copyright (C) 2011 by Anders Ytterström
//  
//  Permission is hereby granted, free of charge, to any person obtaining a copy
//  of this software and associated documentation files (the "Software"), to deal
//  in the Software without restriction, including without limitation the rights
//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//  copies of the Software, and to permit persons to whom the Software is
//  furnished to do so, subject to the following conditions:
//
//  The above copyright notice and this permission notice shall be included in
//  all copies or substantial portions of the Software.
//
//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//  THE SOFTWARE.
//


//  Should IE filters be used or not?
//  PROS: gradients, drop shadows etc will be handled by css.
//  CONS: will harm the site performance badly, 
//        especially on sites with heavy rendering and scripting. 
$useIEFilters: 0; // might be 0 or 1. disabled by default.

@mixin border-image ($path, $offsets, $repeats) {
  -moz-border-image: $path $offsets $repeats;
  -o-border-image: $path $offsets $repeats;
  -webkit-border-image: $path $offsets $repeats;
  border-image: $path $offsets $repeats;
}

@mixin border-radius ($values) {
  -moz-border-radius: $values;
  -webkit-border-radius: $values;
  border-radius: $values;
}

@mixin box-shadow ($x, $y, $offset, $hex, $ie: $useIEFilters) {
  -moz-box-shadow: $x $y $offset $hex;
  -webkit-box-shadow: $x $y $offset $hex;
  box-shadow: $x $y $offset $hex;
  
  @if $ie == 1 {
    $iecolor: '#' + red($hex) + green($hex) + blue($hex);
    filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=#{$x}, OffY=#{$y}, Color='#{$iecolor}');
    -ms-filter: quote(progid:DXImageTransform.Microsoft.dropshadow(OffX=#{$x}, OffY=#{$y}, Color='#{$iecolor}'));
  }
}

@mixin opacity($opacity, $ie: $useIEFilters) {
  -moz-opacity:   $opacity;
  -khtml-opacity: $opacity;
  opacity:        $opacity;

  @if $ie == 1 {
    filter:         alpha(opacity=($opacity * 100));
    -ms-filter:     "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + ($opacity * 100) + ")";
  }
}

@mixin linear-gradient($from, $to, $ie: $useIEFilters) {
  @if $ie != 1 {
    background-color: $to;
  }
  
  background-image: -moz-linear-gradient($from, $to);
  background-image: -o-linear-gradient($from, $to);
  background-image: -ms-linear-gradient($from, $to);
  background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, $from),color-stop(1, $to));
  background-image: -webkit-linear-gradient($from, $to);

  @if $ie == 1 { 
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$from}', endColorstr='#{$to}');
    -ms-filter: quote(progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$from}', endColorstr='#{$to}'));
  }
}

@mixin rgba($hex, $alpha, $ie: $useIEFilters) {     
  @if $ie == 1 { 
    // this formula is not accurate enough, will be fixed with sass 3.1
    $hexopac: '#' + ceil((($alpha * 255)/16) *10) + $hex;
    background-color: none;
    filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#{$hexopac}',EndColorStr='#{$hexopac}}');
    -ms-filter: quote(progid:DXImageTransform.Microsoft.gradient(startColorStr='#{$hexopac}',EndColorStr='#{$hexopac}'));
  }
  @else {
    background-color: $hex;
    background-color: rgba(red($hex), green($hex), blue($hex), $alpha);
  }
}

@mixin rotate ($deg) {
  -moz-transform: rotate(#{$deg}deg);
  -o-transform: rotate(#{$deg}deg);
  -ms-transform: rotate(#{$deg}deg);
  -webkit-transform: rotate(#{$deg}deg);
}

@mixin scale ($size) {
    -moz-transform: scale(#{$size});
    -o-transform: scale(#{$size});
    -ms-transform: scale(#{$size});
    -webkit-transform: scale(#{$size});
}

@mixin transition ($value) {
  -moz-transition: $value;
  -o-transition: $value;
  -ms-transition: $value;
  -webkit-transition: $value;
  transition: $value;
}
// ==== /CSS3 SASS MIXINS ====
