var _TipIDCounter = 0;
function Tip(ele, msg, position, autoClose, withObject) {
this.ElementID = ele;
this.withObject = withObject;
if (!position) {
position = "top";
}
this.Position = position;
this.Element = null;
if(typeof ele == "object"){
this.Element =ele.get(0);
}
else{
if(ele.substr(0,1)!="#" && ele.substr(0,1)!="." && ele.substr(0,1)!=":"){
this.Element = $("#" + this.ElementID).get(0);
}
else{
this.Element= $(this.ElementID).get(0);
}
}
this.Message = msg;
if (!autoClose) {
autoClose = true;
}
this.AutoClose = autoClose;
this.X = 0;
this.Y = 0;
}
Tip.AutoCloseTips = [];
Tip.Tips = [];
Tip.prototype.init = function() {
}
Tip.prototype.show = function() {
var el = null;
if(typeof this.ElementID=="object"){
el = this.ElementID;
}
else{
if(this.ElementID.substr(0,1)!="#" && this.ElementID.substr(0,1)!="." && this.ElementID.substr(0,1)!=":"){
el = $("#" + this.ElementID);
}
else{
el = $(this.ElementID);
}
}
if (this.withObject != null && this.withObject != undefined) {
if(typeof this.withObject=="object"){
el = this.withObject;
}
else{
if(this.withObject.substr(0,1)!="#" && this.withObject.substr(0,1)!="." && this.withObject.substr(0,1)!=":"){
el = $("#" + this.withObject);
}
else{
el = $(this.withObject);
}
}
}
if( el.length<=0){
alert( this.ElementID + " is null" );
return;
}
var arr = [];
var divid = "tooltipbox_" + _TipIDCounter++;
arr.push("
");
arr.push(this.Message);
arr.push("
");
this.Html = arr.join('');
$(this.Html).appendTo($(document.body));
var dl = $("#" + divid);
var p = el.offset();
var fixLeft = parseInt(el.css("margin-left")) || 0;
var fixTop = parseInt(el.css("margin-top")) || 0;
var fixTopPadding = parseInt(el.css("padding-top")) || 0;
var fixLeftPadding = parseInt(el.css("padding-left")) || 0;
var fixRightPadding = parseInt(el.css("padding-right")) || 0;
var x = 0;
var y = 0;
// $("#" + this.ElementID).css("background","#f9fcde");
switch (this.Position) {
case "left":
x = p.left +el.width();
y = p.top + (el.height() - dl.height()) / 2 + 3;
break;
case "right":
x = p.left + el.width() + fixLeftPadding+fixLeft;
y = p.top + (el.height() - dl.height()) / 2;
break;
case "top":
x = p.left;
y = p.top - el.height() - fixTopPadding - fixTop - 5;
break;
case "bottom":
x = p.left;
y = p.top + el.height() + fixTopPadding + fixTop + 5;
y += 10;
break;
}
dl.css({
left: x+"px" ,
top: y+"px"
});
this.Div =dl;
if (this.AutoClose) {
Tip.AutoCloseTips.push(this);
}
Tip.Tips.push(this);
}
Tip.prototype.close = function() {
this.Div.remove();
}
Tip.show = function(ele, msg, pos, autoClose, withObject) {
var tip = new Tip(ele, msg, pos, autoClose, withObject);
tip.show();
if (!tip.AutoClose) {
if (!tip.Element._Tips) {
tip.Element._Tips = [];
}
tip.Element._Tips.push(tip);
}
return tip;
}
Tip.focus = function(ele, msg, pos, autoClose, withObject) {
if(typeof ele=="object"){
ele.focus();
}
else{
if(ele.substr(0,1)!="#" && ele.substr(0,1)!="." && ele.substr(0,1)!=":"){
$("#" + ele).focus();
}
else{
$(ele).focus();
}
}
return Tip.show(ele, msg, pos, autoClose, withObject);
}
Tip.select = function(ele, msg, pos, autoClose, withObject) {
if(typeof ele=="object"){
ele.focus();
ele.select();
}
else if(ele.substr(0,1)!="#" && ele.substr(0,1)!="." && ele.substr(0,1)!=":"){
$("#" + ele).focus();
$("#" + ele).select();
}
else{
$(ele).focus();
$(ele).select();
}
return Tip.show(ele, msg, pos, autoClose, withObject);
}
Tip.getTipCount = function(ele) {
ele = $(ele);
if (!ele._Tips) {
return 0;
}
return ele._Tips.length;
}
Tip.closeAll = function() {
var arr = Tip.Tips;
for (var i = arr.length; i > 0; i--) {
arr[i - 1].close();
arr.splice(i - 1, 1)
}
};
Tip.close = function(ele) {//将与ele有关的Tip都关闭掉
ele = document.getElementById(ele);
if (ele._Tips) {
for (var i = 0; i < ele._Tips.length; i++) {
if (ele._Tips[i]) {
ele._Tips[i].close();
}
}
ele._Tips = [];
}
}
$(document).mousedown(function() {
var arr = Tip.AutoCloseTips;
for (var i = arr.length; i > 0; i--) {
// $("#" + arr[i-1].ElementID).css("background","#fff");
arr[i - 1].close();
arr.splice(i - 1, 1)
}
});
$(document).keydown(function() {
var arr = Tip.AutoCloseTips;
for (var i = arr.length; i > 0; i--) {
// $("#" + arr[i-1].ElementID).css("background","#fff");
arr[i - 1].close();
arr.splice(i - 1, 1)
}
});