// Title: Tigra Hints // URL: http://www.softcomplex.com/products/tigra_hints/ // Version: 1.3 // Date: 09/03/2003 (mm/dd/yyyy) // Feedback: feedback@softcomplex.com (specify product title in the subject) // Note: Permission given to use this script in ANY kind of applications if // header lines are left unchanged. // About us: Our company provides offshore IT consulting services. // Contact us at sales@softcomplex.com if you have any programming task you // want to be handled by professionals. Our typical hourly rate is $20. var THintsS = []; function THints (o_cfg, items) { this.n_id = THintsS.length; THintsS[this.n_id] = this; this.top = o_cfg.top ? o_cfg.top : 0; this.left = o_cfg.left ? o_cfg.left : 0; this.n_dl_show = o_cfg.show_delay; this.n_dl_hide = o_cfg.hide_delay; this.b_wise = o_cfg.wise; this.b_follow = o_cfg.follow; this.x = 0; this.y = 0; this.divs = []; this.show = TTipShow; this.showD = TTipShowD; this.hide = TTipHide; this.move = TTipMove; // register the object in global collection this.n_id = THintsS.length; THintsS[this.n_id] = this; // filter Netscape 4.x out if (document.layers) return; var b_IE = navigator.userAgent.indexOf('MSIE') > -1, s_tag = [''].join(''); this.getElem = function (id) { return document.all ? document.all[id] : document.getElementById(id); }; this.showElem = function (id, hide) { this.divs[id].o_css.visibility = hide ? 'hidden' : 'visible'; }; this.getWinSz = window.innerHeight != null ? function (b_hight) { return b_hight ? innerHeight : innerWidth; } : function (b_hight) { return document.body[b_hight ? 'clientHeight' : 'clientWidth']; }; this.getWinSc = window.innerHeight != null ? function (b_hight) { return b_hight ? pageYOffset : pageXOffset; } : function (b_hight) { return document.body[b_hight ? 'scrollTop' : 'scrollLeft']; }; if (window.opera) { this.getSize = function (id, b_hight) { return this.divs[id].o_css[b_hight ? 'pixelHeight' : 'pixelWidth'] }; document.onmousemove = function () { for (var n_i in THintsS) { THintsS[n_i].x = event.clientX; THintsS[n_i].y = event.clientY; if (THintsS[n_i].b_follow && THintsS[n_i].visible) THintsS[n_i].move(THintsS[n_i].visible); } return true; }; } else { this.getSize = function (id, b_hight) { return this.divs[id].o_obj[b_hight ? 'offsetHeight' : 'offsetWidth'] }; document.onmousemove = b_IE ? function () { for (var n_i in THintsS) { THintsS[n_i].x = event.clientX + document.body.scrollLeft; THintsS[n_i].y = event.clientY + document.body.scrollTop; if (THintsS[n_i].b_follow && THintsS[n_i].visible) THintsS[n_i].move(THintsS[n_i].visible); } return true; } : function (e) { for (var n_i in THintsS) { THintsS[n_i].x = e.pageX; THintsS[n_i].y = e.pageY; if (THintsS[n_i].b_follow && THintsS[n_i].visible) THintsS[n_i].move(THintsS[n_i].visible) } return true; }; } for (i in items) { document.write (s_tag.replace(/%text%/, items[i]).replace(/%name%/, i)); this.divs[i] = { 'o_obj' : this.getElem('TTip' + i) }; this.divs[i].o_css = this.divs[i].o_obj.style; } } function TTipShow (id) { if (document.layers) return; this.hide(); if (this.divs[id]) { if (this.n_dl_show) this.divs[id].timer = setTimeout("THintsS[" + this.n_id + "].showD(" + id + ")", this.n_dl_show); else this.showD(id); this.visible = id; } } function TTipShowD (id) { this.move(id); this.showElem(id); if (this.n_dl_hide) this.timer = setTimeout("THintsS[" + this.n_id + "].hide()", this.n_dl_hide); } function TTipMove (id) { var n_x = this.x + this.left, n_y = this.y + this.top; if (this.b_wise) { var n_w = this.getSize(id), n_h = this.getSize(id, true), n_win_w = this.getWinSz(), n_win_h = this.getWinSz(true), n_win_l = this.getWinSc(), n_win_t = this.getWinSc(true); if (n_x + n_w > n_win_w + n_win_l) n_x = n_win_w + n_win_l - n_w; if (n_x < n_win_l) n_x = n_win_l; if (n_y + n_h > n_win_h + n_win_t) n_y = n_win_h + n_win_t - n_h; if (n_y < n_win_t) n_y = n_win_t; } this.divs[id].o_css.left = n_x; this.divs[id].o_css.top = n_y; } function TTipHide () { if (this.timer) clearTimeout(this.timer); if (this.visible != null) { if (this.divs[this.visible].timer) clearTimeout(this.divs[this.visible].timer); setTimeout("THintsS[" + this.n_id + "].showElem(" + this.visible + ", true)", 10); this.visible = null; } }