﻿/*
 * 鼠标提示(jTitle)插件
 * 江鸿宾(QQ33080907)
 * 最近修改：2011-9-22
 * 本插件只用于作者参与的项目，未经许可请勿转载
 */

//绑定插件用法
//;$(function(){$("[title]").jTitle({style:"yellow"});});

//插件
;(function($){
	$.fn.jTitle=function(options){
		//默认参数
		var defaults={style:"yellow"};				
		var opts=$.extend(defaults,options);
		
		//风格（借鉴：http://tutorialzine.com/2010/07/colortips-jquery-tooltip-plugin/）
		if(opts.style=="yellow"){var style={background:"#f9f2ba",border:"1px solid #e9d315",color:"#5b5316"};}
		else if(opts.style=="blue"){var style={background:"#d9f1fb",border:"1px solid #7fcdee",color:"#1b475a"};}
		else if(opts.style=="green"){var style={background:"#f2fdf1",border:"1px solid #b6e184",color:"#558221"};}
		else if(opts.style=="red"){var style={background:"#bb3b1d",border:"1px solid #8f2a0f",color:"#fcfcfc"};}
		else if(opts.style=="black"){var style={background:"#333",border:"1px solid #111",color:"#fcfcfc"};}
		else if(opts.style=="white"){var style={background:"#fff",border:"1px solid #ddd",color:"#555"};}
		
		//提示框，嵌套两层是为了避免使用padding和border产生宽度计算混乱
		var jtitle=$("<div id='jtitle' style='display:none;position:absolute;'><div style='padding:2px 5px;background:"+style.background+";color:"+style.color+";border:"+style.border+";font-size:12px;line-height:150%;text-align:left;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.5);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.5);box-shadow:2px 2px 5px rgba(0,0,0,0.5);'></div></div>");
		
		//把提示框插入到文档中
		if($("jtitle").length<=0){jtitle.appendTo($("body")).mouseover(function(){$(this).hide();});}
		
		//为当前绑定的每个元素赋予hover事件
		return this.each(function(){
			var $this=$(this);
			var title=$this.attr("title");
			if(title!=undefined&&title!=""){
				title=title.replace(/\r/g,"<br />");
				$this
				.removeAttr("title")
				.hover(function(e){
					//重置宽度和位置
					jtitle.width("auto").css({"top":0,"left":0}).find("div").html(title);
					//设置宽度，非XHTML文档和IE6不支持max-width，所以用JS统一处理
					var w=jtitle.width();
					if(w>300){w=300;}
					jtitle.width(w);
					setPosition(e);
					jtitle.fadeIn("normal");
				},function(){jtitle.hide();})
				.mousemove(function(e){setPosition(e);})
			}
		});
		
		//设置提示框的位置
		function setPosition(e){
			var ww=$(window).width();
			var w=jtitle.width();
			//提示框和光标有23的垂直偏移量，但是I形光标和箭头光标提示框离得过远，暂时无法解决
			var top=e.pageY+23;
			var left=e.pageX;
			var rightmargin=ww-left;
			//debug(ww+"/"+w+"/"+left);
			//后面减1表示留有空隙，防止和浏览器右边框靠得太紧
			if(rightmargin<w){left=ww-w-1;}
			jtitle.css({"top":top,"left":left});
		}
		
		//调试
		function debug(str){
			if(jQuery("#debug").size()==0){$("body").prepend("<div id='debug' style='position:absolute;background:#F00;color:#FFF;padding:5px;filter:alpha(Opacity=80);opacity:0.8;font-size:12px'></div>");}
			jQuery("#debug").append(str+"<br />");
		}
	};
})(jQuery);

