/*---------------------------------------------------------------------------*\
|  title:         提示信息控件                                                |
|  Author:        谢昕                                                        |
|  Created:       2009-07-23                                                  |
|  LastModified:  2009-07-23                                                  |
|  2009-9-25 加入IE8判断。。。。                                              |
|  使用如:        XRTip.init('aaaa',{title:'ddadhawhdawhdha的解开挖决定瓦'}); |
|  aaaa 需要提示的对象可以传入ID，也可以传入对象,op:={title:'',width:''}      |
|   op中定义提示的TITLE及提示宽度  notitle=true不要标题栏                     |
|  在控件中通过titleText(普通文本)和titleurl(数据通过AJAX读取，地址为titleurl)|
|  如:<span id='bbbb' titleurl='ajax.htm'>测试二</span>-这里取ajax.htm内容    |
|  <span id='aaaa' titleText="测试一">测试一</span>-这里取titleText中的内容   |
\*---------------------------------------------------------------------------*/
var XRTip={
     loading:'&nbsp;数据加载中...', //提示语言
	 IE8:(function(){return document.all&&document.documentMode})(),
	 right:2, //右显示减去像素
	 init:function(obj,op){//初始化方法
         if(typeof(obj)=='string')
		   obj=$(obj);
		 op=op||{};
		 if(obj){
			 EventManager.Add(obj,"onmouseover", function(){
				  if(obj.notip) return;//没有提示信息
				  if($('XRTip')) return;//提示层已存在
                  XRTip.show(obj,op);//显示提示
				  obj.style.cursor='help';
				  EventManager.Add(document.body,"onmousemove", mousemove); //注册隐藏帮助控件的方法
			 }); //注册隐藏帮助控件的方法
			 EventManager.Add(obj,"onmousemove", function(){
				  if(obj.notip) return;//没有提示信息
				  if($('XRTip')) return;//提示层已存在
                  XRTip.show(obj,op);//显示提示
				  obj.style.cursor='help';
				  EventManager.Add(document.body,"onmousemove", mousemove); //注册隐藏帮助控件的方法
			 }); //注册隐藏帮助控件的方法
		  }
		  //定义隐藏帮助控件的嵌套方法
	     function mousemove(){
			if(!position(event)){//当前鼠标在提示层内或需要显示对象内，不关闭该层
				hide();
			}
	     };
		 function hide(){//隐藏帮助控件
            removeUtil.remove($('XRTip'));
			XRTip.unsetBackground();//关闭iframe背景
			obj.style.cursor='default';
			document.body.detachEvent("onmousemove", mousemove);
		 };
		 function position(event){//鼠标位置判断
            var div=$('XRTip');
			if(!div) return false;
			var scroll=XRTip.IE8?[0,0]:Position.realOffset(obj);
			var scroll2=XRTip.IE8?[0,0]:Position.realOffset(div);
			return Position.within(obj,event.x+scroll[0],event.y+scroll[1])||Position.within(div,event.x+scroll2[0],event.y+scroll2[1]);
		 };
	 },//真正的显示方法
	 show:function(obj,op){
		if(!op.title)op.title="&nbsp;";
        if(!op.width)op.width=250;
        op.width=parseInt(op.width,10);
		var de = document.documentElement;
		var w = self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
		var offset=Position.positionedOffset(obj);//对象相对位置
		var scroll=Position.realOffset(obj);//滚动位置
		var hasArea = w+scroll[0]-offset[0]-obj.offsetWidth;//计算显示屏幕大小
		var clickElementy = offset[1] - 3; 
		var html,arrowOffset,clickElementx;
		var div=document.createElement('div');
		div.id='XRTip';
		if(hasArea>(op.width+10)){//判断控件显示位置（左）
		    if(op.notitle){
				html="<div id='XRTip_arrow_left'></div>";
			}else{
				html="<div id='XRTip_arrow_left'></div><div id='XRTip_close_left'>"+op.title+"</div>";
			}
			html+="<div id='XRTip_copy'><div id='XRTip_loader'>"+XRTip.loading+"</div></div>";
			arrowOffset = obj.offsetWidth - 10;
			if(op.check){
				var value=obj.innerText;
				var l=0,temp=0;
				for(var i=0;i<value.length;i++){
					var c=value.charCodeAt(i);
					if(c>=0&&c<=128){
						l++;
					}else{
						l=l+2;
					}
					temp=l*6;
					if(temp>arrowOffset){
						temp=arrowOffset;
						break;
					}
				}
                arrowOffset=temp;  
			}
			clickElementx = offset[0] + arrowOffset-scroll[0];
			div.bearing='left';
		}else{//（右）
		    if(op.notitle){
				html="<div id='XRTip_arrow_right' style='left:"+(op.width-XRTip.right)+"px'></div>";
			}else{
				html="<div id='XRTip_close_right'>"+op.title+"</div><div id='XRTip_arrow_right' style='left:"+(op.width-XRTip.right)+"px'></div>";
			}
			html+="<div id='XRTip_copy'><div id='XRTip_loader'>"+XRTip.loading+"</div></div>";
			clickElementx =offset[0] - (op.width + 15)-scroll[0]+15;
			div.bearing='right';
		}
		div.style.width=op.width+'px';
		div.innerHTML=html;
		document.body.appendChild(div);
		Object.extend(div.style,{
			  left:clickElementx+"px",
              top:clickElementy+"px",
			  display:'block'
		});
		XRTip.setBackground(div);//打开IFRAME背景
        if(obj.titleText){//控件右内容直接显示
           $('XRTip_copy').innerHTML=obj.titleText;
		}else if(obj.titleurl){//定义了访问地址AJAX提取内容
              new _AJAX.Request(obj.titleurl,{method: "get",parameters: '',
				  onSuccess: function(req){
	                    var text = req.responseText.replace(/^\s+|\s+$/g,"");
	                    if(text == ""){
	                    	obj.notip = true;//没有提示信息
	                    	return;
	                    }
	                    obj.titleText=text;
						if($('XRTip_copy'))
                          $('XRTip_copy').innerHTML=text;
	                },
					onFailure:function(){
                        if($('XRTip_copy'))
                          $('XRTip_copy').innerHTML='网络异常，请检查！';
					}
			 });
		}else{
            obj.notip = true;
		}
	 },
	//设置iframe作为背景，以遮盖select控件
	setBackground: function(tip){
		var tipBackground = $("XRTip_iframe");
		if(!tipBackground){
			tipBackground = document.createElement("iframe");
			tipBackground.id = "XRTip_iframe";
			document.body.appendChild(tipBackground);	
		}
		//将iframe位置和大小设为和提示信息控件相同，并在其下层
		tipBackground.style.left = tip.style.left;
		tipBackground.style.top = tip.style.top;
		tipBackground.style.width = tip.offsetWidth;
		tipBackground.style.height = tip.offsetHeight;
		tipBackground.style.display = "block";
	},
	//移除iframe背景
	unsetBackground: function(){
		var tipBackground =$('XRTip_iframe');
		if(tipBackground){
			tipBackground.style.display = "none";
		}
	}
	
}
document.write('<link rel="stylesheet" type="text/css" href="/'+xrbs.WEB_APP_NAME+'/css/XRtipstyle.css">\n');//注册样式