
YUI().use('node','stylesheet', function(Y) {
	var links = Y.all('a'),
		body = Y.one('body'),
		bgColor = body.getStyle('backgroundColor').match(/\d{1,3}/g),
		color1, color2, color3,
		ss = new Y.StyleSheet();
	
	function generateColor(alterWith) {
		var newColor = [], i = 0, l = bgColor.length;
		for (;i<l;i++) {
			newColor[i] = alterWith(bgColor[i]);
		}
		return generateColorString(newColor);
	}

	function generateColorString (colorArray) {
		var c = '#' + generateHex(colorArray[0]) + 
					  generateHex(colorArray[1]) +
					  generateHex(colorArray[2]);
		return c;
	}

	function generateHex (dec) {
		var hexChars = "0123456789ABCDEF", i, j;
		
		if (dec < 0) {
			return "00";
		}
		if (dec > 255) {
			return "FF";
		}

		i = Math.floor(dec / 16);
		j = dec % 16;
		
		return hexChars.charAt(i) + hexChars.charAt(j);
	}

	color1 = generateColor(function(colorIndex) {
		var diff = colorIndex - 128;
		return 128 - diff;
	});

	color2 = generateColor(function(colorIndex) {
		return (colorIndex > 128 ? colorIndex - 50 : colorIndex + 50);
	});

	color3 = generateColor(function(colorIndex) {
		var diff = colorIndex - 128,
			newColor = 128 - diff;

		return (newColor > 128 ? newColor -50 : newColor + 50);
	});
	
	ss.set('h1', {
		backgroundColor : generateColorString(bgColor),
		color : color1
	});

	ss.set('h2', {
		backgroundColor : color2,
		color : color3
	});

	ss.set('li a', {
		backgroundColor : generateColorString(bgColor),
		color : color3
	});

	ss.set('li a:hover', {
		backgroundColor : color2,
		color: color1
	});

	links.on('click', function(e) {
		e.preventDefault();
		window.open(e.target.get('href'));
	});

});
