// ==== CSS3 SASS MIXINS ==== 
// https://github.com/madr/css3-sass-mixins

//  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-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;
  -o-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 linear-gradient($from, $to, $ie: $useIEFilters) {
  @if $ie != 1 {
    background-color: $to;
  }
  
  background-image: -moz-linear-gradient(top, $from, $to);
  background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, $from),color-stop(1, $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, $ie: $useIEFilters) {
  -moz-transform: rotate(#{$deg}deg);
  -o-transform: rotate(#{$deg}deg);
  -webkit-transform: rotate(#{$deg}deg);
  // not ready, impediment: cos required!
  //@if $ie == 1 {
  //  filter: progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', M11=0.99144486137381, M12=--0.130526192220052, M21=0.130526192220052, M22=0.99144486137381);
  //  -ms-filter: quote(progid:DXImageTransform.Microsoft.Matrix(SizingMethod='auto expand', M11=0.99144486137381, M12=--0.130526192220052, M21=0.130526192220052, M22=0.99144486137381));
  //  zoom: 1;
  //}
}

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