/******************************
*                             *
*   Name:   toolTips          *
*   Author: Aken li           *
*   Date:   2008.07.10        *
*   Blog:   www.kxbd.com      *
*                             *
******************************/
var toolTips = Class.create();
toolTips.prototype = {
	initialize:function(container,delayDur){
		this.wrapperId = "toolTipsWrapper";
		this.container = container || document.body;
		this.show = false;
		this.xGap = 10;
		this.yGap = 10;
		this.opacity = 0.9;
		this.delayDur = delayDur || 0;
		this.init();
	},
	init:function() {
		this.insertWrapper();
		var clzObj = this;
		var tags = ['a','span','p','div'];
		var nodes=[];
		if(typeof this.container == 'string'){
			this.container=	this.container.split(',');
			this.container.each(function(node){
				var ele = $(node);
				if(!ele) return;
				$(tags).each(function(tag){
					objs = $(node).getElementsByTagName(tag);
					nodes = nodes.concat($A(objs));
				});
			});
		}else{
			$(tags).each(function(tag){
				objs = $(clzObj.container).getElementsByTagName(tag);
				nodes = nodes.concat($A(objs));
			});
		}
		nodes.each(function(node){
			$(node).observe("mouseover", clzObj.showToolTips.bind(clzObj));
			$(node).observe("mouseout", clzObj.hideToolTips.bind(clzObj));
			$(node).observe("mousemove", clzObj.moveToolTips.bind(clzObj));
		});
	},
	insertWrapper:function() {
		var ele =document.createElement("div");
		Element.extend(ele);
		ele.id=this.wrapperId
		ele.setStyle("position: absolute;display: none;width:auto;z-index: 10000;");
		$(document.body).insert(ele);
	},

	showToolTips:function(e) {
		var el = e.element();
		var o = $(this.wrapperId);
	//	if(el.title){
	//		el.toolTip = el.title;
	//		el.title = "";
	//	};
		if(el.toolTip){
			el.title = "";
			this.show = true;
			o.update('正在载入数据...').show.bind(o).delay(this.delayDur);
			var xslt = el.getAttribute('xslt')
			if(xslt && xslt!=null){
					var myajax = new Ajax.XsltlUpdater(this.wrapperId,el.toolTip,xslt,{method:'post',asynchronous:false,
						onFailure:function(response){
							alert(response.status+'  '+response.getHeader("Content-type"))
						}
					});
			}else{
				new Ajax.Request(el.toolTip,{method:'post',asynchronous:false,
					onSuccess:function(response){
						o.update(response.responseText);	
					},
					onFailure:function(response){
						o.update('载入数据出错');
					}
				});
			}
		}
	},

	hideToolTips:function(e) {
		var el = e.element();
		var o = $(this.wrapperId);
		o.setStyle({left:"-1000px",display:"none"})
		this.show = false;
	},

	moveToolTips:function(e) {
		if(this.show){
			var x = e.pointerX();
			var y = e.pointerY();
			var x1 = this.xGap;
			var y1 = this.yGap;
			var o = $(this.wrapperId);
			var dims = o.getDimensions();
			var oW = dims.width;
			var oH = dims.height;
			var docDims = document.viewport.getDimensions();
			var docW = docDims.width;
			var docH = docDims.height;
			var docScroll = document.viewport.getScrollOffsets();
			var docLeft = docScroll.left;
			var docTop = docScroll.top;
			
			//var posX=(x+x1+oW-docLeft>docW) ? docW+docLeft-oW : x+x1;
			//var posY=(y+y1+oH-docTop>docH) ? docH+docTop-oH : y+y1;

			var posX=(x+x1+oW-docLeft>docW) ? x-oW-x1 : x+x1;
			var posY=(y+y1+oH-docTop>docH) ? y-oH-y1 : y+y1;

			o.setStyle({
				left: posX+"px",
				top: posY+"px"
			})
		}
	}
};