137 lines
3.9 KiB
JavaScript
137 lines
3.9 KiB
JavaScript
var tooltip = (function () {
|
|
var id = 'tt'
|
|
var top = 3
|
|
var left = 3
|
|
var maxw = 500
|
|
var speed = 10
|
|
var timer = 20
|
|
var endalpha = 95
|
|
var alpha = 0
|
|
var tt, t, c, b, h
|
|
var ie = document.all ? true : false
|
|
return {
|
|
show: function (v, w, below) {
|
|
if (tt == null) {
|
|
tt = document.createElement('div')
|
|
tt.setAttribute('id', id)
|
|
t = document.createElement('div')
|
|
t.setAttribute('id', id + 'top')
|
|
c = document.createElement('div')
|
|
c.setAttribute('id', id + 'cont')
|
|
b = document.createElement('div')
|
|
b.setAttribute('id', id + 'bot')
|
|
tt.appendChild(t)
|
|
tt.appendChild(c)
|
|
tt.appendChild(b)
|
|
document.body.appendChild(tt)
|
|
tt.style.opacity = 0
|
|
tt.style.filter = 'alpha(opacity=0)'
|
|
}
|
|
document.onmousemove = below ? this.pos2 : this.pos
|
|
tt.style.display = 'block'
|
|
c.innerHTML = v
|
|
tt.style.width = w ? w + 'px' : 'auto'
|
|
if (!w && ie) {
|
|
t.style.display = 'none'
|
|
b.style.display = 'none'
|
|
tt.style.width = tt.offsetWidth
|
|
t.style.display = 'block'
|
|
b.style.display = 'block'
|
|
}
|
|
if (tt.offsetWidth > maxw) {
|
|
tt.style.width = maxw + 'px'
|
|
}
|
|
h = parseInt(tt.offsetHeight) + top
|
|
clearInterval(tt.timer)
|
|
tt.timer = setInterval(function () {
|
|
tooltip.fade(1)
|
|
}, timer)
|
|
},
|
|
pos: function (e) {
|
|
var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY
|
|
var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX
|
|
var w =
|
|
window.innerWidth ||
|
|
document.documentElement.clientWidth ||
|
|
document.body.clientWidth
|
|
var o =
|
|
window.pageXOffset ||
|
|
document.documentElement.scrollLeft ||
|
|
document.body.scrollLeft ||
|
|
0
|
|
var scroll =
|
|
window.pageYOffset ||
|
|
document.documentElement.scrollTop ||
|
|
document.body.scrollTop ||
|
|
0
|
|
var top = u - h
|
|
if (top < scroll + 10) {
|
|
top = scroll + 10
|
|
}
|
|
tt.style.top = top + 'px'
|
|
if (w > maxw && l + maxw > w + o) {
|
|
tt.style.right = w - l - left + 10 + 'px'
|
|
tt.style.left = 'auto'
|
|
} else {
|
|
tt.style.left = l + left + 10 + 'px'
|
|
tt.style.right = 'auto'
|
|
}
|
|
},
|
|
pos2: function (e) {
|
|
var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY
|
|
var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX
|
|
var w =
|
|
window.innerWidth ||
|
|
document.documentElement.clientWidth ||
|
|
document.body.clientWidth
|
|
var o =
|
|
window.pageXOffset ||
|
|
document.documentElement.scrollLeft ||
|
|
document.body.scrollLeft ||
|
|
0
|
|
var scroll =
|
|
window.pageYOffset ||
|
|
document.documentElement.scrollTop ||
|
|
document.body.scrollTop ||
|
|
0
|
|
var top = u + 24
|
|
if (top < scroll + 10) {
|
|
top = scroll + 10
|
|
}
|
|
tt.style.top = top + 'px'
|
|
if (w > maxw && l + maxw > w + o) {
|
|
tt.style.right = w - l - left + 10 + 'px'
|
|
tt.style.left = 'auto'
|
|
} else {
|
|
tt.style.left = l + left + 10 + 'px'
|
|
tt.style.right = 'auto'
|
|
}
|
|
},
|
|
fade: function (d) {
|
|
var a = alpha
|
|
if ((a != endalpha && d == 1) || (a != 0 && d == -1)) {
|
|
var i = speed
|
|
if (endalpha - a < speed && d == 1) {
|
|
i = endalpha - a
|
|
} else if (alpha < speed && d == -1) {
|
|
i = a
|
|
}
|
|
alpha = a + i * d
|
|
tt.style.opacity = alpha * 0.01
|
|
tt.style.filter = 'alpha(opacity=' + alpha + ')'
|
|
} else {
|
|
clearInterval(tt.timer)
|
|
if (d == -1) {
|
|
tt.style.display = 'none'
|
|
}
|
|
}
|
|
},
|
|
hide: function () {
|
|
clearInterval(tt.timer)
|
|
tt.timer = setInterval(function () {
|
|
tooltip.fade(-1)
|
|
}, timer)
|
|
},
|
|
}
|
|
})()
|