// Licensed Materials - Property of IBM
//
// IBM Cognos Products: cogadmin
//
// (C) Copyright IBM Corp. 2005, 2010
//
// US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
//
//
// Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
// Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
//----------------------------------------------------------
com.cognos.admin.ObjectFactory("com.cognos.admin.widget");
com.cognos.admin.widget.Tooltip = function (tag,e,param) {
this.tag = tag;
this.tools = com.cognos.admin.util.Tools;
this.event = new xEvent(e);
this.tooltip;
this.timeoutId;
this.param = param;
this.interval = this.param.interval || 30;
this.fadePace = this.param.fadePace || 20;
this.timeout = this.param.timeout || 200;
};
com.cognos.admin.widget.Tooltip.VERSION = "0.1.0";
com.cognos.admin.widget.Tooltip.prototype = {
/*
*
*/
create : function (){
//id for the tooltip container
var tooltipId = this.tag.id + "_tooltip";
//id for the basic content container
var basicDivId = tooltipId + "_basic";
var self = this;
if ($(tooltipId))
xParent($(tooltipId),true).removeChild($(tooltipId));
var div = document.createElement("div");
div.id = tooltipId;
div.className = "popup-tooltip";
document.body.appendChild(div);
this.tooltip = div;
xAddEventListener(div,"mouseover",_F_Document.associate(div,this,"_evt_mouseOver"),false);
xAddEventListener(div,"mouseout",_F_Document.associate(div,this,"_evt_mouseOut"),false);
var basicDiv = document.createElement("div");
basicDiv.id = basicDivId;
this.tooltip.appendChild(basicDiv);
this.setContent(this.param);
this.tooltip.style.display = "none";
},
setContent : function (param){
this.tools.parseContent(param,this.tooltip.id+"_basic");
if (param.extension){
this.setExtendContent (param.extension);
} else {
this.setOffset();
}
},
setExtendContent : function (param){
//id of the extend content container
var extensionDivId = this.tooltip.id+"_extension";
var promptDivId = this.tooltip.id+"_prompt";
var extendHTML = "" +
"" +param.prompt + ":" +
"" +
"";
var extensionDiv = document.createElement("div");
extensionDiv.innerHTML = extendHTML;
this.tooltip.appendChild(extensionDiv);
this.tools.parseContent(param,this.tooltip.id+"_extension");
this.setOffset();
$(extensionDivId).style.display = "none";
},
_evt_mouseOver : function (e,tag){
clearTimeout(this.timeoutId);
this.tooltip.style.display = "block";
_F_log("D","mouseOver:"+tag.id);
},
_evt_mouseOut : function (e,tag) {
this.hide(e,tag);
_F_log("D","mouseOut:"+tag.id);
},
show : function (){
var self = this;
clearTimeout(this.timeoutId);
if (!this.tooltip)
this.create();
this.timeoutId = setTimeout(function (){
//self.tooltip.style.display = "block";
self.fade(true);
},this.timeout);
},
fade : function (isFadeIn){
var objId = this.tooltip.id;
for (var i = 0; i <= 100; i += this.fadePace){
var fadeTime = (isFadeIn) ? ((this.interval*i)/this.fadePace) : ((this.interval*(100-i))/this.fadePace);
setTimeout("com.cognos.admin.util.Tools.dspOpacity('"+objId+"',"+i+","+isFadeIn+")",fadeTime);
}
},
hide : function (){
var self = this;
clearTimeout(this.timeoutId);
this.timeoutId = setTimeout(function (){
//self.tooltip.style.display = "none";
self.fade(false);
},this.timeout);
//setTimeout(self.destroy,0);
//this.destroy();
},
destroy : function (){
var tooltip = this.tooltip;
xRemoveEventListener (tooltip,"mouseover",_F_Document.associate(tooltip,this,"_evt_mouseOver"),false);
xRemoveEventListener (tooltip,"mouseout",_F_Document.associate(tooltip,this,"_evt_mouseOut"),false);
if (this.tooltip)
document.body.removeChild(this.tooltip);
this.tooltip = null;
},
setOffset : function (){
xDisplay(this.tooltip,"block");
xVisibility(this.tooltip,"hidden");
var widthTooltip = xWidth(this.tooltip);
var heightTooltip = xHeight(this.tooltip);
var x = (this.event.pageX != undefined) ? this.event.pageX : (this.tools.getAbsolutePosition(this.tag).left + this.tag.clientWidth);
var y = (this.event.pageY != undefined) ? this.event.pageY : (this.tools.getAbsolutePosition(this.tag).top + this.tag.clientHeight);
if (document.body.dir == "rtl")
{
var windowLeft =0;
if (typeof window.pageXOffset != "undefined"){
windowLeft = window.pageXOffset;
}else if (typeof document.documentElement.scrollLeft != "undefined" ){
windowLeft = document.documentElement.scrollLeft;
}else if (typeof document.body.scrollLeft != "undefined"){
windowLeft = document.body.scrollLeft;
}
if((x - widthTooltip)> windowLeft){
x = x - widthTooltip;
}
// test for the existence of left scroll
if (xWidth(document.body) > document.body.clientWidth)
x = x- (xWidth(document.body) - document.body.clientWidth);
}
if ((x + widthTooltip) > xWidth(document.body)) {
x = xClientWidth() - widthTooltip;
}
if ((y + heightTooltip) > xHeight(document.body)) {
y = xHeight(document.body) - heightTooltip - xScrollTop();
} else {
y += 10;
}
xLeft(this.tooltip,x);
xTop(this.tooltip,y);
xDisplay(this.tooltip,"none");
xVisibility(this.tooltip,"visible");
}
};