$.fn.safeHover=function(inFunction,outFunction,inDelay,outDelay,connection){
	
	var inReg = String(inFunction).replace(/\n/g, "").slice(13,-1);
	var outReg = String(outFunction).replace(/\n/g, "").slice(13,-1);
	var startOut;

	
	$.runIn=function(event,obj){
		if (connection == 'linked') {
			clearTimeout(obj.startOut);
		}
		obj.startIn=setTimeout(event,inDelay);
	}
	
	$.runOut=function(event,obj){
		clearTimeout(obj.startIn);
		obj.startOut=setTimeout(event,outDelay);
	}
	
	
	$(this).bind("mouseenter",function(){
		target = $(this);
		inReg=inReg.replace(/this/g,"target");
		$.runIn(inReg,target);
	});
	
	$(this).bind("mouseleave",function(){
		outReg=outReg.replace(/this/g,"target");
		$.runOut(outReg,target);
	});
	
};
