/**
 * @author alessandro
 * @version beta, no version number
 */

var firstTime = true;

jQuery(document).ready(function(){
jQuery(".typeface-hover").hover(hover, reset);
jQuery(".typeface-parent-hover").hover(parentHover, parentReset);
});


function hover(event){
	if (firstTime) {		
		var anchor = jQuery(this).children().eq(0);
		setTimeout(function(){
		e = (jQuery(anchor)[0]).childNodes[0];
		replaceText((jQuery(anchor)[0]), "hover");
		}, 1);	
		firstTime = false;
	}	
}

function reset(event){

	var anchor = jQuery(this).children().eq(0);	
	setTimeout(function(){
		replaceText((jQuery(anchor)[0]), "out");
	}, 1);
	
	firstTime = true;
}

function parentHover(event){
	if (firstTime) {		
		var anchor = jQuery(this).children().eq(0);	
		setTimeout(function(){
		e = (jQuery(anchor)[0]).childNodes[0];		
		parentReplaceText((jQuery(anchor)[0]).parentNode, "hover");
		}, 1);	
		firstTime = false;
	}	
}

function parentReset(event){
	var anchor = jQuery(this).children().eq(0);
	setTimeout(function(){
		parentReplaceText((jQuery(anchor)[0]).parentNode, "out");
	}, 1);	
	firstTime = true;
}


var replaceText = function (e, action) {
	if ($.browser.msie && $.browser.version < 9) { //IE
		//alert($.browser.version);
		//	e = e.parentNode;		
		if (action == "hover") {
			e.hoverTimer = setTimeout(function () {
				for (var i = 0; i < e.childNodes.length; i++) {
					var vectorElement = e.childNodes[i];
					vectorElement.fillColor = (jQuery(e.parentNode)).css('color'); //parentNode.currentStyle.color;
				}
			}, 5);
		}
		else {
			if (action == "out") {
				e.resetTimer = setTimeout(function () {
					for (var i = 0; i < e.childNodes.length; i++) {
						var vectorElement = e.childNodes[i];
						vectorElement.fillColor = (jQuery(e.parentNode)).css('color'); //parentNode.currentStyle.color;
					}
				}, 5);
			}
		}
	}

	else if ($.browser.mozilla && parseInt($.browser.version) <= 7) {
		//try { alert($.browser.mozilla + $.browser.version + "asd"); } catch (errss) { }
		if (action == "hover") {
			e.hoverTimer = setTimeout(function () {
				for (var i = 0; i < e.childNodes.length; i++) {
					try {
						var vectorElement = e.childNodes[i];
						var ctx = vectorElement.getContext('2d');
						var y = document.defaultView.getComputedStyle(e.parentNode, hover).getPropertyValue('color');
						if (ctx.fillStyle.toUpperCase() != y) {
							ctx.fillStyle = y;
							ctx.clearRect(-100000, -3000, 50000000, 50000000);
							ctx.globalCompositeOperation = 'copy';
							ctx.fill();
						}
					}
					catch (err) { }
				}

			}, 5);
		}
		else {
			if (action == "out") {
				e.resetTimer = setTimeout(function () {
					for (var i = 0; i < e.childNodes.length; i++) {
						var vectorElement = e.childNodes[i];
						try 
						{
							var ctx = vectorElement.getContext('2d');
							if (window.getComputedStyle) {
								var y = document.defaultView.getComputedStyle(e.parentNode, null).getPropertyValue('color');
								var bg = document.defaultView.getComputedStyle(e.parentNode, null).getPropertyValue('background-color');
							}
							if (ctx.fillStyle.toUpperCase() != y) {
								ctx.clearRect(-100000, -3000, 50000000, 50000000);
								ctx.globalCompositeOperation = 'copy';
								ctx.fillStyle = y;
								ctx.fill();
							}
						} 
						catch (err1) { }
					}
				}, 5);
			}
		}

	}

	else { //FIREFOX/ NEWEST
		if (action == "hover") {
			for (var i = 0; i < e.childNodes.length; i++) {
				try {
					var vectorElement = e.childNodes[i];
					var ctx = vectorElement.getContext('2d');
					var y = document.defaultView.getComputedStyle(e.parentNode, hover).getPropertyValue('color');
					var rC = (y[4] + y[5] + y[6]);  // red
					var gC = (y[9] + y[10] + y[11]); // green 
					var bC = (y[14] + y[15] + y[16]); //blue
					var imdata = ctx.getImageData(0, 0, vectorElement.width, vectorElement.height);
					var pix = imdata.data;

					for (var j = 0, n = pix.length; j < n; j += 4) {
						pix[j] = rC;   // red
						pix[j + 1] = gC;   // green
						pix[j + 2] = bC;   // blue
					}
					ctx.putImageData(imdata, 0, 0);
				}
				catch (err) { }
			}
		}
		else {
			if (action == "out") {
				e.resetTimer = setTimeout(function () {
					for (var i = 0; i < e.childNodes.length; i++) {
						var vectorElement = e.childNodes[i];
						try {
							var ctx = vectorElement.getContext('2d');
							if (window.getComputedStyle) {
								var y = document.defaultView.getComputedStyle(e.parentNode, null).getPropertyValue('color');
								var bg = document.defaultView.getComputedStyle(e.parentNode, null).getPropertyValue('background-color');
							}
							if (ctx.fillStyle.toUpperCase() != y) {
								var vectorElement = e.childNodes[i];
								var ctx = vectorElement.getContext('2d');
								var y = document.defaultView.getComputedStyle(e.parentNode, hover).getPropertyValue('color');
								var rC = (y[4] + y[5] + y[6]);  // red
								var gC = (y[9] + y[10] + y[11]); // green 
								var bC = (y[14] + y[15] + y[16]); //blue
								var imdata = ctx.getImageData(0, 0, vectorElement.width, vectorElement.height);
								var pix = imdata.data;

								for (var j = 0, n = pix.length; j < n; j += 4) {
									pix[j] = rC;   // red
									pix[j + 1] = gC;   // green
									pix[j + 2] = bC;   // blue
								}
								ctx.putImageData(imdata, 0, 0);
							}
						} catch (err1) { }
					}

				}, 5);
			}
		}
	}

};

var parentReplaceText = function (e, action) {
	if ($.browser.msie && $.browser.version < 9) { //IE
		if (action == "hover") {
			e.hoverTimer = setTimeout(function () {
				var children = jQuery(e).children(".typeface-child-hover");
				for (var i = 0; i < children.length; i++) {
					var vshapeParent = children[i].childNodes[0];
					for (var j = 0; j < vshapeParent.childNodes.length; j++) {
						var vectorElement = vshapeParent.childNodes[j];
						vectorElement.fillColor = (jQuery(vshapeParent.parentNode)).css('color'); //parentNode.currentStyle.color;
					}
				}
			}, 5);
		}
		else {
			if (action == "out") {
				e.resetTimer = setTimeout(function () {
					var children = jQuery(e).children(".typeface-child-hover");
					for (var i = 0; i < children.length; i++) {
						var vshapeParent = children[i].childNodes[0];
						for (var j = 0; j < vshapeParent.childNodes.length; j++) {
							var vectorElement = vshapeParent.childNodes[j];
							vectorElement.fillColor = (jQuery(vshapeParent.parentNode)).css('color'); //parentNode.currentStyle.color;
						}
					}
				}, 5);
			}
		}
	}
	else if ($.browser.mozilla && parseInt($.browser.version) <= 7) {
		if (action == "hover") {
			e.hoverTimer = setTimeout(function () {
				var children = (jQuery(e)).children(".typeface-child-hover");
				for (var i = 0; i < children.length; i++) {
					var container = children[i].childNodes[0];
					for (var j = 0; j < container.childNodes.length; j++) {
						try {
							var vectorElement = container.childNodes[j];
							var ctx = vectorElement.getContext('2d');								
							var y = (jQuery(container.parentNode)).css('color');
							if (ctx.fillStyle.toUpperCase() != y) 
							{			
								ctx.fillStyle = y;
								ctx.clearRect( -100000, -3000, 50000000, 50000000);
								ctx.globalCompositeOperation = 'copy';
								ctx.fill();			
							}
						} catch (err) { }
					}
				}
			}, 5);
		}
		else
			if (action == "out") {
				e.resetTimer = setTimeout(function () {
					var children = (jQuery(e)).children(".typeface-child-hover");
					for (var i = 0; i < children.length; i++) {
						var container = children[i].childNodes[0];
						for (var j = 0; j < container.childNodes.length; j++) {
							try {
								var vectorElement = container.childNodes[j];
								var ctx = vectorElement.getContext('2d');
								if (window.getComputedStyle)
								var y = (jQuery(container.parentNode)).css('color');
								if (ctx.fillStyle.toUpperCase() != y) {
									ctx.clearRect(-100000, -3000, 50000000, 50000000);
									ctx.globalCompositeOperation = 'copy';
									ctx.fillStyle = y;
									ctx.fill();
								}
							} catch (err1) { }
						}
					}
				}, 5);
			}
	}
	else { //FIREFOX/ 	NEWEST
		if (action == "hover") {
			e.hoverTimer = setTimeout(function () {
				var children = (jQuery(e)).children(".typeface-child-hover");
				for (var i = 0; i < children.length; i++) {
					var container = children[i].childNodes[0];
					for (var j = 0; j < container.childNodes.length; j++) {
						try {
							var vectorElement = container.childNodes[j];
							var ctx = vectorElement.getContext('2d');
							var y = (jQuery(container.parentNode)).css('color');
							var rC = (y[4] + y[5] + y[6]);  // red
							var gC = (y[9] + y[10] + y[11]); // green 
							var bC = (y[14] + y[15] + y[16]); //blue
							var imdata = ctx.getImageData(0, 0, vectorElement.width, vectorElement.height);
							var pix = imdata.data;

							for (var c = 0, n = pix.length; c < n; c += 4) {
								pix[c] = rC;   // red
								pix[c + 1] = gC;   // green
								pix[c + 2] = bC;   // blue
							}
							ctx.putImageData(imdata, 0, 0);
						} catch (err) { }
					}
				}
			}, 5);
		}
		else
			if (action == "out") {
				e.resetTimer = setTimeout(function () {
					var children = (jQuery(e)).children(".typeface-child-hover");
					for (var i = 0; i < children.length; i++) {
						var container = children[i].childNodes[0];
						for (var j = 0; j < container.childNodes.length; j++) {
							try {
								var vectorElement = container.childNodes[j];
								var ctx = vectorElement.getContext('2d');
								var y = (jQuery(container.parentNode)).css('color');
								var rC = (y[4] + y[5] + y[6]);  // red
								var gC = (y[9] + y[10] + y[11]); // green 
								var bC = (y[14] + y[15] + y[16]); //blue
								var imdata = ctx.getImageData(0, 0, vectorElement.width, vectorElement.height);
								var pix = imdata.data;

								for (var d = 0, n = pix.length; d < n; d += 4) {
									pix[d] = rC;   // red
									pix[d + 1] = gC;   // green
									pix[d + 2] = bC;   // blue
								}
								ctx.putImageData(imdata, 0, 0);
							} catch (err1) { }
						}
					}
				}, 5);
			}
	}

};





