@mixin animation($name, $duration: 2s, $easing: ease-in-out, $delay: 0s, $iteration-count: infinite, $direction: normal, $fill-mode: none, $play-state: running)
{
	@if ($play-state == running)
	{
		-moz-animation: $name $duration $easing $delay $iteration-count $direction $fill-mode;
		-ms-animation: $name $duration $easing $delay $iteration-count $direction $fill-mode;
		-o-animation: $name $duration $easing $delay $iteration-count $direction $fill-mode;
		-webkit-animation: $name $duration $easing $delay $iteration-count $direction $fill-mode;
		animation: $name $duration $easing $delay $iteration-count $direction $fill-mode;
	}
	@else
	{
		-moz-animation: $name $duration $easing $delay $iteration-count $direction $fill-mode $play-state;
		-ms-animation: $name $duration $easing $delay $iteration-count $direction $fill-mode $play-state;
		-o-animation: $name $duration $easing $delay $iteration-count $direction $fill-mode $play-state;
		-webkit-animation: $name $duration $easing $delay $iteration-count $direction $fill-mode $play-state;
		animation: $name $duration $easing $delay $iteration-count $direction $fill-mode $play-state;
	}
}

@mixin border-box()
{
	@include box-sizing(border-box);
}

@mixin border-radius($top-left: 50%, $top-right: false, $bottom-right: false, $bottom-left: false)
{
	@if ($top-right == false)
	{
		-webkit-border-radius: $top-left;
		border-radius: $top-left;
	}
	@elseif ($bottom-right == false)
	{
		-webkit-border-radius: $top-left $top-right;
		border-radius: $top-left $top-right;
	}
	@elseif ($bottom-left == false)
	{
		-webkit-border-radius: $top-left $top-right $bottom-right;
		border-radius: $top-left $top-right $bottom-right;
	}
	@else
	{
		-webkit-border-radius: $top-left $top-right $bottom-right $bottom-left;
		border-radius: $top-left $top-right $bottom-right $bottom-left;
	}
}

@mixin box-shadow($x, $y: 0, $blur: 0, $color: rgba(black, .25), $inset: false)
{
	@if ($x == none)
	{
		-webkit-box-shadow: $x;
		box-shadow: $x;
	}
	@elseif ($inset)
	{
		-webkit-box-shadow: inset $x $y $blur 0 $color;
		box-shadow: inset $x $y $blur 0 $color;
	}
	@else
	{
		-webkit-box-shadow: $x $y $blur 0 $color;
		box-shadow: $x $y $blur 0 $color;
	}
}

@mixin box-sizing($box-sizing)
{
	-moz-box-sizing: $box-sizing;
	-webkit-box-sizing: $box-sizing;
	box-sizing: $box-sizing;
}

@mixin flip-horizontally()
{
	@include transform(scaleX(-1));
	@include transform-style();
	
	filter: FlipH;
	-ms-filter: 'FlipH';
}

@mixin keyframes($name)
{
	@-moz-keyframes #{$name}
	{
		@content;
	}
	
	@-ms-keyframes #{$name}
	{
		@content;
	}
	
	@-o-keyframes #{$name}
	{
		@content;
	}
	
	@-webkit-keyframes #{$name}
	{
		@content;
	}
	
	@keyframes #{$name}
	{
		@content;
	}
}

@mixin popup-color($color, $class: '')
{
	body#{$class}
	{
		#fm-faucet-popup
		{
			border-color: $color;
		}

		#fm-faucet-navigation
		{
			background: mix($color-black, $color, 25%);
		}
	}
}

@mixin rotate-z($degrees)
{
	@include transform(rotateZ($degrees));
	@include transform-style();
}

@mixin transform($value)
{
	-moz-transform: $value;
	-ms-transform: $value;
	-o-transform: $value;
	-webkit-transform: $value;
	transform: $value;
}

@mixin transform-style($style: preserve-3d)
{
	-moz-transform-style: $style;
	-ms-transform-style: $style;
	-o-transform-style: $style;
	-webkit-transform-style: $style;
	transform-style: $style;
}

@mixin transition($properties, $speed: 125ms, $easing: ease-in-out)
{
	$transition-list: ();
	
	@if ($properties == none)
	{
		$transition-list: none !important;
	}
	@else
	{
		@each $transition in to-array($properties)
		{
			@if (type-of($transition) == list)
			{
				$nested: to-array($transition);
				
				@if (length($nested) == 1)
				{
					$nested: append($nested, $speed, space);
				}
				
				@if (length($nested) == 2)
				{
					$nested: append($nested, $easing, space);
				}
				
				$transition-list: append($transition-list, $nested);
			}
			@else
			{
				$transition-list: append($transition-list, $transition $speed $easing, comma);
			}
		}
	}
	
	-moz-transition: $transition-list;
	-ms-transition: $transition-list;
	-o-transition: $transition-list;
	-webkit-transition: $transition-list;
	transition: $transition-list;
}
