
/*
** Browser
*/

var Browser = new Object();
var ua = navigator.userAgent.toLowerCase();
Browser.isMozilla = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') && (typeof HTMLDocument != 'undefined');
Browser.isIE = window.ActiveXObject ? true : false;
Browser.isFirefox = (ua.indexOf("firefox") != -1);
Browser.isSafari = (ua.indexOf("safari") != -1);
Browser.isOpera = (typeof window.opera != 'undefined');
if (Browser.isMozilla) {
	HTMLElement.prototype.removeNode = function() {
		this.parentNode.removeChild(this);
	}
}
Browser.version = 1;
if (Browser.isFirefox) {
	Browser.version = parseFloat(ua.substr(ua.indexOf("firefox") + 8, 3));
}
else if (Browser.isOpera) {
	if (window.opera.version) {
		Browser.version = parseFloat(window.opera.version());
	} else {
		Browser.version = 7.5;
	}
}
else if (Browser.isIE) {
	var re = new RegExp("msie ([0-9]{1,}[\.0-9]{0,})");
	if (re.exec(ua) != null) {
		Browser.version = parseFloat(RegExp.$1);
	}
	else {
		Browser.version = 3;
	}
}
else if (Browser.isSafari) {
	var kitName = "applewebkit/";
	var kitVersion = ua.substring(ua.indexOf(kitName) + kitName.length, ua.length);
	kitVersion = parseInt(kitVersion.substring(0,kitVersion.indexOf(" ")));
	Browser.version =
		kitVersion >= 400 ? 2.0 :
		kitVersion >= 300 ? 1.3 :
		kitVersion > 100 ? 1.2 :
		1.0;
}

/*
** App.toolTip
*/
App = new Object();

App.toolTip = function (node, txt, w, align, ev) {
	var offsetxpoint = 0;
	var offsetypoint = 20;
	var enabletip = false;
	var tipobj = $('tooltip');
	if (w == null) w = 150;
	if (align == null) align = "center";

	function ietruebody(){
		return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
	}

	this.display = function(node, txt, w, align){
		document.onmousemove = positiontip;
		Event.observe(node, 'mouseout', this.hide, false);
		tipobj.style.textAlign = align;
		tipobj.innerHTML = '<div class="tooltipFrame"><div class="tooltipFrame2">' + txt + '</div></div>';
		tipobj.style.display = "block";
		if (tipobj.offsetWidth > w) tipobj.style.width = w + "px";
		enabletip = true;
	}

	function positiontip(e) {
		if (enabletip) {
			var curX = (Browser.isIE) ? event.x + ietruebody().scrollLeft:e.pageX;
			var curY = (Browser.isIE) ? event.y + ietruebody().scrollTop:e.pageY;
			var rightedge = Browser.isIE && !window.opera ? ietruebody().clientWidth - event.clientX - offsetxpoint : window.innerWidth - e.clientX - offsetxpoint - 20;
			var bottomedge = Browser.isIE && !window.opera ? ietruebody().clientHeight - event.clientY - offsetypoint : window.innerHeight - e.clientY - offsetypoint - 20;
			var leftedge = (offsetxpoint < 0) ? offsetxpoint * (-1) : -1000;
			if (rightedge < tipobj.offsetWidth) {
				tipobj.style.left = (Browser.isIE) ? ietruebody().scrollLeft + event.clientX - tipobj.offsetWidth + "px" : window.pageXOffset + e.clientX - tipobj.offsetWidth + "px"
			}
			else if (curX < leftedge) {
				tipobj.style.left = "5px";
			} else {
				tipobj.style.left = curX + offsetxpoint + "px";
			}
			if (bottomedge < tipobj.offsetHeight) {
				var d = (Browser.isSafari) ? 0 : window.pageYOffset;
				tipobj.style.top = (Browser.isIE) ? ietruebody().scrollTop + event.clientY - tipobj.offsetHeight - offsetypoint + "px" : d + e.clientY - tipobj.offsetHeight - offsetypoint + "px";
			} else {
				tipobj.style.top = curY + offsetypoint + "px";
			}
			tipobj.style.visibility = "visible";
		}
	}

	this.hide = function(){
		document.onmousemove = null;
		enabletip = false;
		tipobj.style.visibility = "hidden";
		tipobj.style.left = "-1000px";
		tipobj.style.backgroundColor = '';
		tipobj.style.width = '';
	}

	this.display(node, txt, w, align);
}

var toolCache = {};
var toolSend  = {};
var toolTimer;
var toolShow  = 500;


function dispTooltip(nodeId) {
	var content = '';
	var div     = $('tooltip');
	if (!toolCache[nodeId]) {
		return;
	}
	content = toolCache[nodeId].join('<br>');
	if (!div) {
		div     = document.createElement('div');
		div.id  = 'tooltip';
		document.getElementsByTagName('body')[0].appendChild(div);
	}
	div.style.display = 'none';
	new App.toolTip($(nodeId), content, 250, 'left');
	div.style.display = 'block';
}

function updateTooltip(req) {
	var ret = parseJson(req.responseText);
	if (typeof ret['status'] == 'undefined' || ret['status'] == 0) {
//		alert('Error!\n' + ret['data']);
        toolSend[ret['id']] = 0;
		return;
	}
	toolCache[ret['id']] = ret['data'];
	dispTooltip(ret['id']);
}

function getTooltip(nodeId) {
    toolSend[nodeId] = 1;
	var idSplit = nodeId.split('-');
	var req = new Ajax.Request(AppAjaxPath + idSplit[0], {
			method: 'get',
			parameters: 'div=' + nodeId + '&PrintPage=',
			onComplete: updateTooltip
		}
	);
}

function Tooltip(nodeId) {
//	return;
	if (!toolSend[nodeId]) {
		clearTimeout(toolTimer);
		toolTimer = setTimeout("getTooltip('"+nodeId+"');",toolShow);
		return;
	}
	if (toolCache[nodeId]) dispTooltip(nodeId);
}
