(function($) {

	jQuery.fn.colorPop = function(settings) {
		
		settings = jQuery.extend({
			callback:function () { },
			init:function () {},
			onclick:function () {  },
			offsetFix: false,
			padding: 5,
			offsetX: -5,
			offsetY: -5,
			backgroundColor: 'inherit',
			fontSize: 	'inherit',
			fontFamily: 'inherit',
			style: 'colorPop',
			zIndex: 99
			
		}, settings);
		
		return $(this)
				.each(
						function() {
							settings.zIndex = settings.zIndex+1;
							
							var pop = $(this);
							//alert((pop.position().top - settings.offsetX));
							var flower = jQuery("<div class="+settings.style+" style='" 
									+ " xwidth: "+(pop.outerWidth()-20)+"px; "
									+ " xheight: "+(pop.outerHeight())+"px; top: -5px; left: -5px;" 
									+ " position: absolute; "
									+ " z-index: "+( settings.zIndex)+"; " 
									+ " background-color: "+ (settings.backgroundColor=='inherit' ? pop.css('backgroundColor'):(settings.backgroundColor!='false'?settings.backgroundColor:'')) + ";"
									+ " xtop: "	+ (pop.position().top - (settings.offsetX)) + "px;"
									+ " xleft:"	+ (pop.position().left - (settings.offsetY)) + "px; "
									+ " xfont-family: " + (settings.fontFamily=='inherit' ? pop.css('fontFamily'):(settings.fontFamily!='false'?settings.fontFamily:'')) + ";"
									+ " xfont-size: " + (settings.fontSize=='inherit' ? pop.css('fontSize'):(settings.fontSize!='false'?settings.fontSize:'')) + ";"
									+ " xpadding-top: " 		+ (pop.padding().top + settings.padding) + "px;"
									+ " xpadding-right: " 	+ (pop.padding().right+ settings.padding) + "px;"
									+ " xpadding-bottom: " + (pop.padding().bottom+ settings.padding) + "px;"
									+ " xpadding-left: " 	+ (pop.padding().left+ settings.padding) + "px;"
									+ " xmargin: " 		+ pop.css("margin") + ";"
									+ " xvertical-align: text-bottom;"
									+ "'>" + pop.text() +"</div>");
							var flowerx = flower.clone();
							pop.mouseenter(function() {
								
								//alert(flowerx.padding().top);
								flowerx.css("top", (pop.position().top + (settings.offsetX)) + "px");
								flowerx.css("left", (pop.position().left + (settings.offsetY)) + "px");
								
								if(typeof settings.init == 'function') settings.init(pop, flowerx);
								//$("body").append('1');
								//alert(flowerx.html());
								pop.prepend(flowerx);
								
								flowerx.click(function() { 
									if(typeof settings.onclick == 'function') settings.onclick(pop);
								});
								
								//Does not need te work
								if(settings.offsetFix == true)
								pop.mouseout(function() {
									flowerx.remove();
									if(typeof settings.callback == 'function') settings.callback(pop);
								});
								flowerx.mouseout(function() {
									flowerx.remove();
									if(typeof settings.callback == 'function') settings.callback(pop);
								});
								
							});


						});
	}
})(jQuery);