@mixin linear-gradient($pos, $G1, $G2: null,
                       $G3: null, $G4: null,
                       $G5: null, $G6: null,
                       $G7: null, $G8: null,
                       $G9: null, $G10: null,
                       $fallback: null) {
	// Detect what type of value exists in $pos
	$pos-type: type-of(nth($pos, 1));
	$pos-spec: null;
	$pos-degree: null;

	// If $pos is missing from mixin, reassign vars and add default position
	@if ($pos-type == color) or (nth($pos, 1) == "transparent") {
		$G10: $G9;
		$G9: $G8;
		$G8: $G7;
		$G7: $G6;
		$G6: $G5;
		$G5: $G4;
		$G4: $G3;
		$G3: $G2;
		$G2: $G1;
		$G1: $pos;
		$pos: null;
	}

	@if $pos {
		$positions: _linear-positions-parser($pos);
		$pos-degree: nth($positions, 1);
		$pos-spec: nth($positions, 2);
	}

	$full: $G1, $G2, $G3, $G4, $G5, $G6, $G7, $G8, $G9, $G10;

	// Set $G1 as the default fallback color
	$fallback-color: nth($G1, 1);

	// If $fallback is a color use that color as the fallback color
	@if (type-of($fallback) == color) or ($fallback == "transparent") {
		$fallback-color: $fallback;
	}

	background-color: $fallback-color;
	background-image: -webkit-linear-gradient($pos-degree $full); // Safari 5.1+, Chrome
	background-image: unquote("linear-gradient(#{$pos-spec}#{$full})");
}
