// Sass CSS3 Mixins! The Cross-Browser CSS3 Sass Library
// By: Matthieu Aussaguel, //www.mynameismatthieu.com, @matthieu_tweets

// Ascending
// Used to evaluate Sass maps like our grid breakpoints.
@mixin _assert-ascending($map, $map-name) {
  $prev-key: null;
  $prev-num: null;
  @each $key, $num in $map {
    @if $prev-num == null {
      // Do nothing
    } @else if not comparable($prev-num, $num) {
      @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
    } @else if $prev-num >= $num {
      @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
    }
    $prev-key: $key;
    $prev-num: $num;
  }
}

// Starts at zero
// Another grid mixin that ensures the min-width of the lowest breakpoint starts at 0.
@mixin _assert-starts-at-zero($map) {
  $values: map-values($map);
  $first-value: nth($values, 1);
  @if $first-value != 0 {
    @warn "First breakpoint in `$grid-breakpoints` must start at 0, but starts at #{$first-value}.";
  }
}


// ADDS A BROWSER PREFIX TO THE PROPERTY
@mixin css3-prefix($property, $value) {
    //-webkit-#{$property}: #{$value};
    //-khtml-#{$property}: #{$value};
    //-moz-#{$property}: #{$value};
    //-ms-#{$property}: #{$value};
    //-o-#{$property}: #{$value};
    #{$property}: #{$value};
}

// BACKGROUND GRADIENT
@mixin background-gradient($gradient: '90deg, rgb(22,19,87) 0%, rgb(39,35,129) 100%') {
  background-image: -webkit-linear-gradient(#{$gradient});
  background-image: -moz-linear-gradient(#{$gradient});
  background-image: -ms-linear-gradient(#{$gradient});
  //background-image: linear-gradient(#{$gradient});
}
@mixin background-gradient-top($startColor: #ffb400, $endColor: #f9a33a) {
    background-image: -webkit-gradient(linear, left top, left bottom, from($startColor), to($endColor));
    background-image: -webkit-linear-gradient(top, $startColor, $endColor);
    background-image:    -moz-linear-gradient(top, $startColor, $endColor);
    background-image:     -ms-linear-gradient(top, $startColor, $endColor);
    background-image:      -o-linear-gradient(top, $startColor, $endColor);
    background-image:         linear-gradient(top, $startColor, $endColor);
    filter:            progid:DXImageTransform.Microsoft.gradient(startColorStr='#{$startColor}', endColorStr='#{$endColor}');
}
@mixin background-gradient-bottom($startColor: #ffb400, $endColor: #f9a33a) {
    background-image: -webkit-gradient(linear, left top, left bottom, from($startColor), to($endColor));
    background-image: -webkit-linear-gradient(bottom, $startColor, $endColor);
    background-image:    -moz-linear-gradient(bottom, $startColor, $endColor);
    background-image:     -ms-linear-gradient(bottom, $startColor, $endColor);
    background-image:      -o-linear-gradient(bottom, $startColor, $endColor);
    background-image:         linear-gradient(bottom, $startColor, $endColor);
    filter:            progid:DXImageTransform.Microsoft.gradient(startColorStr='#{$startColor}', endColorStr='#{$endColor}');
}

// BACKGROUND HORIZONTAL
@mixin background-horizontal($startColor: #ffb400, $endColor: #f9a33a) {
    background-color: $startColor;
    background-image: -webkit-gradient(linear, left top, right top, from($startColor), to($endColor));
    background-image: -webkit-linear-gradient(left, $startColor, $endColor);
    background-image:    -moz-linear-gradient(left, $startColor, $endColor);
    background-image:     -ms-linear-gradient(left, $startColor, $endColor);
    background-image:      -o-linear-gradient(left, $startColor, $endColor);
    background-image:         linear-gradient(left, $startColor, $endColor);
    filter:            progid:DXImageTransform.Microsoft.gradient(startColorStr='#{$startColor}', endColorStr='#{$endColor}', gradientType='1');
}

// BACKGROUND RADIAL
@mixin background-radial($startColor: #FFFFFF, $startPos: 0%, $endColor: #000000, $endPos:100%) {
    background: -moz-radial-gradient(center, ellipse cover, $startColor $startPos, $endColor $endPos);
    background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop($startPos,$startColor), color-stop($endPos,$endColor));
    background: -webkit-radial-gradient(center, ellipse cover, $startColor $startPos,$endColor $endPos);
    background: -o-radial-gradient(center, ellipse cover, $startColor $startPos,$endColor $endPos);
    background: -ms-radial-gradient(center, ellipse cover, $startColor $startPos,$endColor $endPos);
    background: radial-gradient(ellipse at center, $startColor $startPos,$endColor $endPos);
}

// BACKGROUND SIZE
@mixin background-size($width: 100%, $height: $width) {
    @if type-of($width) == 'number' and $height != null {
        @include css3-prefix('background-size', $width $height);
    } @else {
        @include css3-prefix('background-size', $width);
    }
}

// BACKGROUND COLOR OPACITY
@mixin background-opacity($color: #000, $opacity: 0.85) {
    background: $color;
    background: rgba($color, $opacity);
}

// BORDER RADIUS
@mixin border-radius($radius: 5px) {
    @include css3-prefix('border-radius', $radius);
}

@mixin border-radius-separate($topLeftRadius: 5px, $topRightRadius: 5px, $bottomLeftRadius: 5px, $bottomRightRadius: 5px) {
    -webkit-border-top-left-radius:     $topLeftRadius;
    -webkit-border-top-right-radius:    $topRightRadius;
    -webkit-border-bottom-right-radius: $bottomRightRadius;
    -webkit-border-bottom-left-radius:  $bottomLeftRadius;

    -moz-border-radius-topleft:     $topLeftRadius;
    -moz-border-radius-topright:    $topRightRadius;
    -moz-border-radius-bottomright: $bottomRightRadius;
    -moz-border-radius-bottomleft:  $bottomLeftRadius;

    border-top-left-radius:     $topLeftRadius;
    border-top-right-radius:    $topRightRadius;
    border-bottom-right-radius: $bottomRightRadius;
    border-bottom-left-radius:  $bottomLeftRadius;
}

// BOX
@mixin box($orient: horizontal, $pack: center, $align: center) {
    display: -webkit-box;
    display: -moz-box;
    display: box;

    @include css3-prefix('box-orient', $orient);
    @include css3-prefix('box-pack', $pack);
    @include css3-prefix('box-align', $align);
}

// BOX RGBA
@mixin box-rgba($r: 60, $g: 3, $b: 12, $opacity: 0.23, $color: #3C3C3C) {
    background-color: transparent;
    background-color: rgba($r, $g, $b, $opacity);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$color}',endColorstr='#{$color}');
    zoom:   1;
}


// BOX SHADOW
@mixin box-shadow($shadow) {
    @include css3-prefix('box-shadow', #{$shadow});
}

// BOX SIZING
@mixin box-sizing($type: border-box) {
    @include css3-prefix('box-sizing', $type);
}

// COLUMNS
@mixin columns($count: 3, $gap: 10) {
    @include css3-prefix('column-count', $count);
    @include css3-prefix('column-gap', $gap);
}

// DOUBLE BORDERS
@mixin double-borders($colorOne: #3C3C3C, $colorTwo: #999999, $radius: 0) {
    border: 1px solid $colorOne;

    @include css3-prefix('box-shadow', 0 0 0 1px $colorTwo);

    @include border-radius( $radius );
}

// FLEX
@mixin flex($value: 1) {
    @include css3-prefix('box-flex', $value);
}

// FLIP
@mixin flip($scaleX: -1) {
    @include css3-prefix('transform', scaleX($scaleX));
    filter:            FlipH;
    -ms-filter:        "FlipH";
}

// FONT FACE
@mixin font-face($fontFamily: myFont, $eotFileSrc: 'myFont.eot', $woffFileSrc: 'myFont.woff', $ttfFileSrc: 'myFont.ttf', $svgFileSrc: 'myFont.svg', $svgFontID: '#myFont') {
    font-family: $fontFamily;
    src: url($eotFileSrc)  format('eot'),
    url($woffFileSrc) format('woff'),
    url($ttfFileSrc)  format('truetype'),
    url($svgFileSrc + $svgFontID) format('svg');
}

// OPACITY
@mixin opacity($opacity: 0.5) {
    //$opacityMultiplied: ($opacity * 100);

    //filter:         alpha(opacity=$opacityMultiplied);
    //-ms-filter:     "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + $opacityMultiplied + ")";
    @include css3-prefix('opacity', $opacity);
}


// OUTLINE RADIUS
@mixin outline-radius($radius: 5px) {
    @include css3-prefix('outline-radius', $radius);
}

// RESIZE
@mixin resize($direction: both) {
    @include css3-prefix('resize', $direction);
}

// ROTATE
@mixin rotate($deg: 0, $m11: 0, $m12: 0, $m21: 0, $m22: 0) {
    @include css3-prefix('transform', rotate($deg + deg));
    filter: progid:DXImageTransform.Microsoft.Matrix(
                    M11=#{$m11}, M12=#{$m12}, M21=#{$m21}, M22=#{$m22}, sizingMethod='auto expand');
    zoom: 1;
}

// TEXT SHADOW
@mixin text-shadow($x: 2px, $y: 2px, $blur: 5px, $color: rgba(0,0,0,.4)) {
    text-shadow: $x $y $blur $color;
}

// TRANSFORM
@mixin transform($params) {
    @include css3-prefix('transform', $params);
}

// TRANSFORM STYLE
@mixin transform-style($style: preserve-3d) {
    @include css3-prefix('transform-style', $style);
}

// TRANSITION
@mixin transition($properties...) {

    @if length($properties) >= 1 {
        @include css3-prefix('transition', $properties);
    }

    @else {
        @include css3-prefix('transition', 'all 300ms ease-in-out');
    }
}
// SCALE
@mixin scale($params) {
    @include transform(scale($params));
}
// TRIPLE BORDERS
@mixin triple-borders($colorOne: #3C3C3C, $colorTwo: #999999, $colorThree: #000000, $radius: 0) {
    border: 1px solid $colorOne;

    @include border-radius($radius);

    @include css3-prefix('box-shadow', 0 0 0 1px $colorTwo, 0 0 0 2px $colorThree);
}

// KEYFRAMES
@mixin keyframes($animation-name) {
    @-webkit-keyframes #{$animation-name} {
        @content;
    }
    @-moz-keyframes #{$animation-name} {
        @content;
    }
    @-ms-keyframes #{$animation-name} {
        @content;
    }
    @-o-keyframes #{$animation-name} {
        @content;
    }
    @keyframes #{$animation-name} {
        @content;
    }
}

// ANIMATION
@mixin animation($str) {
    @include css3-prefix('animation', $str);
}
/* MouseWheel */
@mixin cms-mousewheel($selected : '.cms-mousewheel', $scroll_bar_w : 34px){
    #{$selected} {
        overflow: hidden;
        height: 100%;
        max-height: 100vh;
        > *{
            overflow-x: hidden;
            overflow-y: scroll;
            width: calc( 100% + #{$scroll_bar_w});
            padding-right: #{$scroll_bar_w};
            height: 100%;
            max-height: 100vh;
            padding-bottom: 50px;
            select,
            table{
                width: calc(100% - #{$scroll_bar_w});
            }
            [dir='rtl'] &{
                padding-right: 0;
                padding-left: #{$scroll_bar_w};
            }
        }
    }
}

// Rem output with px fallback
@mixin font-size($sizeValue: 1) {
    font-size: ($sizeValue * 16) * 1px;
    font-size: $sizeValue * 1rem;
}

// Center block
@mixin center-block {
    display: block;
    margin-left: auto;
    margin-right: auto;
}

// Clearfix
@mixin clearfix() {
    content: "";
    display: table;
}

// Clear after (not all clearfix need this also)
@mixin clearfix-after() {
    clear: both;
}

// font icon
@mixin font-cmsi($icon, $size : ''){
    font-family: "cmsi";
    content: $icon;
    @if $size !=''{
        font-size: $size;
    }
}
// text ellipsis
@mixin text-ellipsis(){
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  max-width: 100%;
}

// Socails Colors
$social-colors: (
    'facebook'   : #0857de,
    'twitter'    : #28b6f6,
    'youtube'    : #df2926,
    'google'     : #dd4b39,
    'rss'        : #ffa500,
    'skype'      : #0ebaee,
    'yahoo'      : #690a7b,
    'dribbble'   : #ff70b7,
    'flickr'     : #ff0084,
    'linkedin'   : #087ec0,
    'vimeo'      : #27bcf1,
    'pinterest'  : #ca1f27,
    'github'     : #3f91cb,
    'instagram'  : #0092ff,
    'tumblr'     : #426d9b,
    'behance'    : #1879fd,
    'stumbleupon': #eb4924,
    'dropbox'    : #17a3eb,
    'soundcloud' : #ff7e30,
    'lastfm'     : #d6063e,
    'deviantart' : #6a8a7b,
    'digg'       : #75788d,
    'xing'       : #1a8e8c,
    'sharethis'  : #25a774,
    'wordpress'  : #2187b5,
    'delicious'  : #ff9233,
    'reddit'     : #377bda,
    'apple'      : #3dd0f5,
    'vk'         : #4778ac,
    'android'    : #a3c537,
    'amazon'     : #fc9a06,
    'edge'       : #327ec9,
    'vine'       : #16cc91,
    'whatsapp'   : #2fc631,
    'renren'     : #0663b7,
    'windows'    : #07b0f1,
    'modx'       : #7ac343,
    'tel'        : #042b6f,
    'mail'       : #ffa500
);
//'sharethis'  : $accent_color
// loop, to style social media links
@mixin chemlabs_social_color($tag1 : color, $text_color: white, $text_color_hover: white, $priority : ''){
    @each $name, $color in $social-colors {
        &[href*='#{$name}']{
            @if $priority != '' {
                #{$tag1}: $color $priority;
            } @else {
                #{$tag1}: $color;
            }
            color: #{$text_color};
            &:hover{
                color: #{$text_color_hover};
                #{$tag1}: darken($color, 20%);
            }
        }
    }
}