function getTransitionProperties(element) {
	var $$ = $(element);
	return ($$.css("transition-property") || $$.css("-moz-transition-property") || $$.css("-webkit-transition-property") || $$.css("-o-transition-property") || $$.css("-ms-transition-property") || "").split(/,\s*/);
}

function hasTransitionProperty(element, prop) {
	return getTransitionProperties(element).indexOf(prop) > -1;
}

$(document).ready(function() {
	function fade(element, color) {
		if (element.fadetimer) window.clearInterval(element.fadetimer);
		element.fadetimer = null;

		var s = hex2rgb($(element).css("color")), e = hex2rgb(color);

		if (!s || !e) return;

		if (!element.fadeinit) {
			element.fadesteps = 10;
			element.fadecolors = [];
			$(element).css("color", $(element).css("borderTopColor"));
			element.fadeinit = true;
			s = hex2rgb($(element).css("color"));
		}

		var fadesteps = Math.max(element.fadesteps - element.fadecolors.length, 1);
		element.fadecolors = [];

		for (var i = 0; i <= fadesteps; i++) {
			element.fadecolors.push(rgb2hex({
				r: Math.round(s.r * (fadesteps - i) / fadesteps + e.r * i / fadesteps),
				g: Math.round(s.g * (fadesteps - i) / fadesteps + e.g * i / fadesteps),
				b: Math.round(s.b * (fadesteps - i) / fadesteps + e.b * i / fadesteps)
			}));
		}

		element.fadetimer = window.setInterval(function() {
			$(element).css("color", element.fadecolors.shift());

			if (element.fadecolors.length < 1) window.clearInterval(element.fadetimer);
		}, 20);
	}

	$("a")
		.live("mouseover", function() {
			var $$ = $(this);
			if (!hasTransitionProperty($$, "color") && $$.css("borderLeftColor")) fade(this, $$.css("borderLeftColor"));
		})
		.live("mouseout", function() {
			var $$ = $(this);
			if (!hasTransitionProperty($$, "color") && $$.css("borderTopColor")) fade(this, $$.css("borderTopColor"));
		});
});

