	/************************************************************************************************************	
	(C) www.dhtmlgoodies.com, October 2005
	
	This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	
	
	Updated:	
		March, 11th, 2006 - Fixed positioning of tooltip when displayed near the right edge of the browser.
		April, 6th 2006, Using iframe in IE in order to make the tooltip cover select boxes.
		
	Terms of use:
	You are free to use this script as long as the copyright message is kept intact. However, you may not
	redistribute, sell or repost it without our permission.
	
	Thank you!
	
	www.dhtmlgoodies.com
	Alf Magne Kalleland
	
	************************************************************************************************************/
	
	/** Essentialy modified by Pavel Vlasov **/
	
function AjaxTooltip(minWidth, maxWidth, delay) {		

	var ajax_tooltip = false;
	var ajax_tooltipShadow = false;
	var dhtmlgoodies_shadowSize = 4;
	var ajax_iframe = false;
	var tooltip_is_msie = navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('opera')==-1 && document.all;
	var timerTask;
	var hideTask;
	
	this.showTooltip = function (e, tooltipUrl) {
		var ttu = tooltipUrl;
		var ths = this;
		var clientX = e.clientX;
		var clientY = e.clientY;
		if (delay) {
			timerTask = window.setTimeout(function() {ths._showTooltip(clientX, clientY, ttu)}, delay);
		} else {
			this._showTooltip(clientX, clientY, ttu);
		}
	}
	
	this._showTooltip = function (clientX, clientY, tooltipUrl) {		
		if (timerTask) {
			timerTask=null;
		}
		
		var bodyWidth;
		var bodyHeight;
	
		if (window.innerWidth) {
			bodyWidth = window.innerWidth - 10;
			bodyHeight = window.innerHeight - 10;
		} else {
			bodyWidth = Math.max(document.body.clientWidth,document.documentElement.clientWidth) - 10;
			bodyHeight = Math.max(document.body.clientHeight,document.documentElement.clientHeight) - 10;
		}				
		
		if(!ajax_tooltip){
			ajax_tooltip = document.createElement('DIV');
			ajax_tooltip.className = 'dhtmlgoodies_tooltip';
			ajax_tooltipShadow = document.createElement('DIV');
			ajax_tooltipShadow.className = 'dhtmlgoodies_tooltipShadow';
			
			document.body.appendChild(ajax_tooltip);
			document.body.appendChild(ajax_tooltipShadow);	
			
			if(tooltip_is_msie){
				ajax_iframe = document.createElement('IFRAME');
				ajax_iframe.frameborder='5';
				ajax_iframe.style.backgroundColor='#FFFFFF';
				ajax_iframe.src = '#'; 	
				ajax_iframe.style.zIndex = 100;
				ajax_iframe.style.position = 'absolute';
				document.body.appendChild(ajax_iframe);
			}
			
		}
		
		var st = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
		if(navigator.userAgent.toLowerCase().indexOf('safari')>=0)st=0; 
		var leftPos = clientX + 10;
		var topPos = clientY + 10 + st;
		
		ajax_tooltip.style.width = null;	// Reset style width if it's set 		
		ajax_tooltip.innerHTML = "Loading ..."; //+tooltipUrl;
		
		ajax_tooltipShadow.style.width = ajax_tooltip.offsetWidth + 'px';
		ajax_tooltipShadow.style.height = ajax_tooltip.offsetHeight + 'px';					
				
		ajax_tooltip.style.left = leftPos + 'px';
		ajax_tooltip.style.top = topPos + 'px';
		
		ajax_tooltipShadow.style.left =  leftPos + dhtmlgoodies_shadowSize + 'px';
		ajax_tooltipShadow.style.top = topPos + dhtmlgoodies_shadowSize + 'px';

		if(tooltip_is_msie){
			ajax_iframe.style.left = ajax_tooltip.style.left;
			ajax_iframe.style.top = ajax_tooltip.style.top;
			ajax_iframe.style.width = ajax_tooltip.offsetWidth + 'px';
			ajax_iframe.style.height = ajax_tooltip.offsetHeight + 'px';
		
		}					
		
		ajax_tooltip.style.display='block';
		ajax_tooltipShadow.style.display='block';
		if(tooltip_is_msie)ajax_iframe.style.display='block';
		
		var sk = new sack();		
		//sk.method = "GET";
		sk.requestFile = tooltipUrl;	// Specifying which file to get
		sk.onCompletion = function() { 
			ajax_tooltip.innerHTML = this.response;	
			ajax_parseJs(ajax_tooltip)
			
			if(ajax_tooltip.offsetWidth>maxWidth){	/* Exceeding max width of tooltip ? */
				ajax_tooltip.style.width = maxWidth + 'px';
			}
			
			var tooltipWidth = ajax_tooltip.offsetWidth;		
			if(tooltipWidth<minWidth) tooltipWidth = minWidth;		
			
			var tooltipHeight = ajax_tooltip.offsetHeight;		
			
			ajax_tooltip.style.width = tooltipWidth + 'px';
			ajax_tooltipShadow.style.width = ajax_tooltip.offsetWidth + 'px';
			ajax_tooltipShadow.style.height = ajax_tooltip.offsetHeight + 'px';
			
			// Positioning algorithm if tooltip is bottom/right is not visible
			// a) Try to position below, move to the left
			// b) Try to position on the right, move up
			// c) Try to position above, affinity to the right
			// d) Try to position on the left, affinity to the bottom
			if((leftPos + tooltipWidth)>bodyWidth) { // Doesn't fit to the right
				if((topPos + tooltipHeight)>bodyHeight + st) { // Doesn't fit to the bottom as well (A)
					if (clientX > tooltipWidth) { // Can move to the left
						leftPos = clientX-tooltipWidth-10;
						topPos = Math.max(10, bodyHeight - tooltipHeight) + st;
						ajax_tooltip.style.left = leftPos + 'px';
						ajax_tooltipShadow.style.left = (leftPos + dhtmlgoodies_shadowSize) + 'px';								
						ajax_tooltip.style.top = topPos + 'px';
						ajax_tooltipShadow.style.top = (topPos + dhtmlgoodies_shadowSize) + 'px';
					} else if (clientY > tooltipHeight) { // Can move to the top.
						leftPos = Math.max(10, bodyWidth - tooltipWidth);
						topPos = clientY - tooltipHeight - 10 + st;				
						ajax_tooltip.style.left = leftPos + 'px';
						ajax_tooltipShadow.style.left = (leftPos + dhtmlgoodies_shadowSize) + 'px';								
						ajax_tooltip.style.top = topPos + 'px';
						ajax_tooltipShadow.style.top = (topPos + dhtmlgoodies_shadowSize) + 'px';
					}
				} else { // (B)
					leftPos = Math.max(10, bodyWidth - tooltipWidth);
					ajax_tooltip.style.left = leftPos + 'px';
					ajax_tooltipShadow.style.left = (leftPos + dhtmlgoodies_shadowSize) + 'px';								
				}
			} else if((topPos + tooltipHeight)>bodyHeight + st) { // Fits to the left, but not to the bottom (C)
				topPos = Math.max(10, bodyHeight - tooltipHeight) + st;
				ajax_tooltip.style.top = topPos + 'px';
				ajax_tooltipShadow.style.top = (topPos + dhtmlgoodies_shadowSize) + 'px';
			}
			
			if(tooltip_is_msie){
				ajax_iframe.style.left = ajax_tooltip.style.left;
				ajax_iframe.style.top = ajax_tooltip.style.top;
				ajax_iframe.style.width = ajax_tooltip.offsetWidth + 'px';
				ajax_iframe.style.height = ajax_tooltip.offsetHeight + 'px';
			
			}					
		};	
		sk.runAJAX();		// Execute AJAX function	
	}
	
	this.hideTooltip = function() {
		if (timerTask) {
			window.clearTimeout(timerTask);
			timerTask=null;
		}
		
		if (ajax_tooltip) {
			ajax_tooltip.style.display='none';
			ajax_tooltipShadow.style.display='none';		
			if(tooltip_is_msie) {
				ajax_iframe.style.display='none';		
			}
		}
	}	
}	

function Tooltip(minWidth, maxWidth) {		

	var dhtmlgoodies_tooltip = false;
	var dhtmlgoodies_tooltipShadow = false;
	var dhtmlgoodies_shadowSize = 4;
	var dhtmlgoodies_iframe = false;
	var tooltip_is_msie = navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('opera')==-1 && document.all;
	var timerTask;
	
	this.showTooltip = function(e,tooltipText) {
		
		var bodyWidth;
		var bodyHeight;
	
		if (window.innerWidth) {
			bodyWidth = window.innerWidth - 10;
			bodyHeight = window.innerHeight - 10;
		} else {
			bodyWidth = Math.max(document.body.clientWidth,document.documentElement.clientWidth) - 10;
			bodyHeight = Math.max(document.body.clientHeight,document.documentElement.clientHeight) - 10;
		}				
		
		if(!dhtmlgoodies_tooltip){
			dhtmlgoodies_tooltip = document.createElement('DIV');
			dhtmlgoodies_tooltip.className = 'dhtmlgoodies_tooltip';
			dhtmlgoodies_tooltipShadow = document.createElement('DIV');
			dhtmlgoodies_tooltipShadow.className = 'dhtmlgoodies_tooltipShadow';
			
			document.body.appendChild(dhtmlgoodies_tooltip);
			document.body.appendChild(dhtmlgoodies_tooltipShadow);	
			
			if(tooltip_is_msie){
				dhtmlgoodies_iframe = document.createElement('IFRAME');
				dhtmlgoodies_iframe.frameborder='5';
				dhtmlgoodies_iframe.style.backgroundColor='#FFFFFF';
				dhtmlgoodies_iframe.src = '#'; 	
				dhtmlgoodies_iframe.style.zIndex = 100;
				dhtmlgoodies_iframe.style.position = 'absolute';
				document.body.appendChild(dhtmlgoodies_iframe);
			}
			
		}
		
		var st = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
		if(navigator.userAgent.toLowerCase().indexOf('safari')>=0)st=0; 
		var leftPos = e.clientX + 10;
		var topPos = e.clientY + 10 + st;
		
		dhtmlgoodies_tooltip.style.width = null;	// Reset style width if it's set 		
		
		dhtmlgoodies_tooltip.innerHTML = tooltipText;	
		
		if(dhtmlgoodies_tooltip.offsetWidth>maxWidth){	/* Exceeding max width of tooltip ? */
			dhtmlgoodies_tooltip.style.width = maxWidth + 'px';
		}
		
		var tooltipWidth = dhtmlgoodies_tooltip.offsetWidth;		
		if(tooltipWidth<minWidth) tooltipWidth = minWidth;		
		
		var tooltipHeight = dhtmlgoodies_tooltip.offsetHeight;		
		
		dhtmlgoodies_tooltip.style.width = tooltipWidth + 'px';
		dhtmlgoodies_tooltipShadow.style.width = dhtmlgoodies_tooltip.offsetWidth + 'px';
		dhtmlgoodies_tooltipShadow.style.height = dhtmlgoodies_tooltip.offsetHeight + 'px';
		
		if((leftPos + tooltipWidth)>bodyWidth){
			leftPos = Math.max(10, bodyWidth - tooltipWidth);
			dhtmlgoodies_tooltip.style.left = leftPos + 'px';
			dhtmlgoodies_tooltipShadow.style.left = (leftPos + dhtmlgoodies_shadowSize) + 'px';
		} else if((topPos + tooltipHeight)>bodyHeight + st){
			topPos = Math.max(10, bodyHeight - tooltipHeight) + st;
			dhtmlgoodies_tooltip.style.top = topPos + 'px';
			dhtmlgoodies_tooltipShadow.style.top = (topPos + dhtmlgoodies_shadowSize) + 'px';
		}
		
		if(tooltip_is_msie){
			dhtmlgoodies_iframe.style.left = dhtmlgoodies_tooltip.style.left;
			dhtmlgoodies_iframe.style.top = dhtmlgoodies_tooltip.style.top;
			dhtmlgoodies_iframe.style.width = dhtmlgoodies_tooltip.offsetWidth + 'px';
			dhtmlgoodies_iframe.style.height = dhtmlgoodies_tooltip.offsetHeight + 'px';
		
		}	
						
		dhtmlgoodies_tooltip.style.display='block';
		dhtmlgoodies_tooltipShadow.style.display='block';
		if(tooltip_is_msie)dhtmlgoodies_iframe.style.display='block';		
	}
	
	this.hideTooltip = function() {
		if (dhtmlgoodies_tooltip) {
			dhtmlgoodies_tooltip.style.display='none';
			dhtmlgoodies_tooltipShadow.style.display='none';		
			if(tooltip_is_msie) {
				dhtmlgoodies_iframe.style.display='none';		
			}
		}
	}	
}	

var hammurapi_tooltip = false;
var hammurapi_tooltipShadow = false;
var hammurapi_tooltipIframe = false;

function showTooltipWindow(e,tooltipUrl, minWidth, maxWidth, imagePath) {
	
	var hammurapi_shadowSize = 4;
	var tooltip_is_msie = (navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('opera')==-1 && document.all);
	var header = "<img class=\"hammurapi_closeButton\" src=\""+imagePath+"close.gif\" onclick=\"hideTooltipWindow();\"/>";
	
	var bodyWidth;
	var bodyHeight;

	if (window.innerWidth) {
		bodyWidth = window.innerWidth - 10;
		bodyHeight = window.innerHeight - 10;
	} else {
		bodyWidth = Math.max(document.body.clientWidth,document.documentElement.clientWidth) - 10;
		bodyHeight = Math.max(document.body.clientHeight,document.documentElement.clientHeight) - 10;
	}				

	if(!hammurapi_tooltip){
		hammurapi_tooltip = document.createElement('DIV');
		hammurapi_tooltip.className = 'hammurapi_tooltipWindow';
		hammurapi_tooltipShadow = document.createElement('DIV');
		hammurapi_tooltipShadow.className = 'hammurapi_tooltipWindowShadow';
		
		document.body.appendChild(hammurapi_tooltip);
		document.body.appendChild(hammurapi_tooltipShadow);	
		
		if(tooltip_is_msie){
			hammurapi_tooltipIframe = document.createElement('IFRAME');
			hammurapi_tooltipIframe.frameborder='5';
			hammurapi_tooltipIframe.style.backgroundColor='#FFFFFF';
			hammurapi_tooltipIframe.src = '#'; 	
			hammurapi_tooltipIframe.style.zIndex = 100;
			hammurapi_tooltipIframe.style.position = 'absolute';
			document.body.appendChild(hammurapi_tooltipIframe);
		}
		
	}
	
	var st = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
	if(navigator.userAgent.toLowerCase().indexOf('safari')>=0)st=0; 
	var leftPos = e.clientX + 10;
	var topPos = e.clientY + 10 + st;
	
	hammurapi_tooltip.style.width = null;	// Reset style width if it's set 		
	hammurapi_tooltip.innerHTML = header+"Loading ...";
	
	hammurapi_tooltipShadow.style.width = hammurapi_tooltip.offsetWidth + 'px';
	hammurapi_tooltipShadow.style.height = hammurapi_tooltip.offsetHeight + 'px';					
	
	hammurapi_tooltip.style.left = leftPos + 'px';
	hammurapi_tooltip.style.top = topPos + 'px';
	
	hammurapi_tooltipShadow.style.left =  leftPos + hammurapi_shadowSize + 'px';
	hammurapi_tooltipShadow.style.top = topPos + hammurapi_shadowSize + 'px';

	if(tooltip_is_msie){
		hammurapi_tooltipIframe.style.left = hammurapi_tooltip.style.left;
		hammurapi_tooltipIframe.style.top = hammurapi_tooltip.style.top;
		hammurapi_tooltipIframe.style.width = hammurapi_tooltip.offsetWidth + 'px';
		hammurapi_tooltipIframe.style.height = hammurapi_tooltip.offsetHeight + 'px';
	
	}						
	
	hammurapi_tooltip.style.display='block';
	hammurapi_tooltipShadow.style.display='block';
	if(tooltip_is_msie) {
		hammurapi_tooltipIframe.style.display='block';
	}
	
	var sk = new sack();		
	sk.requestFile = tooltipUrl;	// Specifying which file to get
	sk.onCompletion = function() { 
		hammurapi_tooltip.innerHTML = header + this.response;	
		ajax_parseJs(hammurapi_tooltip)
		
		if(hammurapi_tooltip.offsetWidth>maxWidth){	/* Exceeding max width of tooltip ? */
			hammurapi_tooltip.style.width = maxWidth + 'px';
		}
		
		var tooltipWidth = hammurapi_tooltip.offsetWidth;		
		if(tooltipWidth<minWidth) {
			tooltipWidth = minWidth;		
		}
		
		var tooltipHeight = hammurapi_tooltip.offsetHeight;		
		
		hammurapi_tooltip.style.width = tooltipWidth + 'px';
		hammurapi_tooltipShadow.style.width = hammurapi_tooltip.offsetWidth + 'px';
		hammurapi_tooltipShadow.style.height = hammurapi_tooltip.offsetHeight + 'px';		
		
		if((leftPos + tooltipWidth)>bodyWidth){
			leftPos = Math.max(10, bodyWidth - tooltipWidth);
			hammurapi_tooltip.style.left = leftPos + 'px';
			hammurapi_tooltipShadow.style.left = (leftPos + hammurapi_shadowSize) + 'px';
		} 
		
		if((topPos + tooltipHeight)>bodyHeight+st){
			topPos = Math.max(10, bodyHeight - tooltipHeight) + st;
			hammurapi_tooltip.style.top = topPos + 'px';
			hammurapi_tooltipShadow.style.top = (topPos + hammurapi_shadowSize) + 'px';
		}
		
		if(tooltip_is_msie){
			hammurapi_tooltipIframe.style.left = hammurapi_tooltip.style.left;
			hammurapi_tooltipIframe.style.top = hammurapi_tooltip.style.top;
			hammurapi_tooltipIframe.style.width = hammurapi_tooltip.offsetWidth + 'px';
			hammurapi_tooltipIframe.style.height = hammurapi_tooltip.offsetHeight + 'px';
		
		}					
	};	
	sk.runAJAX();		// Execute AJAX function				
}

function hideTooltipWindow() {
	hammurapi_tooltip.style.display='none';
	hammurapi_tooltipShadow.style.display='none';		
	if(hammurapi_tooltipIframe) {
		hammurapi_tooltipIframe.style.display='none';		
	}
}
