AttachEvent(window,'load',function(){
	function Init(){
		var l,f,o,tip;
		var lbls = document.getElementsByTagName('label');
		for (var i=lbls.length-1;i>=0;i--){
			if (!(f=((l=lbls[i]).htmlFor || l.getAttribute('for')))) continue;
			if (!(l.title || l.getAttribute('title'))) continue;
			if (!(o=document.getElementById(f))) continue;
			if (!tip) (tip=document.body.appendChild(document.createElement('div'))).className = 'label_tip';
			l.label_l = o.label_l = l;
			l.label_o = o.label_o = o;
			l.label_t = o.label_t = tip;
			AttachEvent(l,'mouseover',ShowLabelTitle,false);
			AttachEvent(o,'mouseover',ShowLabelTitle,false);
			AttachEvent(o,'focus'    ,ShowLabelTitle,false);

			AttachEvent(l,'mouseout' ,HideLabelTitle,false);
			AttachEvent(o,'mouseout' ,HideLabelTitle,false);
			AttachEvent(o,'blur'     ,HideLabelTitle,false);
		}
		if (tip){
			tip.style.position='absolute';
			tip.style.display='none';
			tip.appendChild(document.createTextNode('empty tip'));
		}
	}

    function FindXY(obj){
    	var x=0,y=0;
    	while (obj!=null){
    		x+=obj.offsetLeft-obj.scrollLeft;
    		y+=obj.offsetTop-obj.scrollTop;
    		obj=obj.offsetParent;
    	}
    	return {x:x,y:y};
    }

	function FindXYWH(obj){
	var objXY = FindXY(obj);
	return objXY?{ x:objXY.x, y:objXY.y, w:obj.offsetWidth, h:obj.offsetHeight }:{ x:0, y:0, w:0, h:0 };
    }

	function ShowLabelTitle(e){
		var l,o,tip;
		if (!e && window.event) e=event;
		var o = e.currentTarget || e.target || e.srcElement;
		AddClass(FindLabel(o),'active');
		while (o && !o.label_l) o=o.parentNode;
		if (!o) return alert("Ack! Can't find the object for ShowLabelTitle!");
		l=o.label_l; tip=o.label_t; o=o.label_o;
		var t = l.title || l.getAttribute('title');
		//tip.innerHTML = t.replace(/\r|\n|\r\n/g,'<br>');
		tip.firstChild.nodeValue = t;
		tip.style.display='block';
		tip.className = 'formtip';
		xywh = FindXYWH(o);
		tip.style.top=xywh.y-11+'px';
		tip.style.left=xywh.x+8+'px';
		//tip.style.left=xywh.x+xywh.w+4+'px';
	}
	function HideLabelTitle(e){
		var l,o,tip;
		if (!e && window.event) e=event;
		var o = e.currentTarget || e.target || e.srcElement;
		KillClass(FindLabel(o),'active');
		while (o && !o.label_l) o=o.parentNode;
		if (!o) return alert("Ack! Can't find the object for ShowLabelTitle!");
		l=o.label_l; tip=o.label_t; o=o.label_o;
		tip.style.display='none';
	}
	Init();
},false);