var hintInParent = false;
var hintTimeout = 1000;
var hintLeft = 0;
var hintTop = 0;
var hintObj;
var hintObjSpan;
var hintCaller;
var hintParam;
var hintMethod;
var mouseX;
var mouseY;
var abortRequest = false;
var mouseOnHintObj = false;
var hintValue = '';

function showHint(sender, method, param) {
    mouseX = window.event.x;
    mouseY = window.event.y;
    if (!hintInParent) {
        hintObj = document.getElementById("hintObj");
        hintObjSpan = document.getElementById("hintObjSpan");
    } else {
        hintObj = window.parent.document.getElementById("hintObj");
        hintObjSpan = window.parent.document.getElementById("hintObjSpan");
    }
    hintCaller = sender;
    hintParam = param;
    hintMethod = method;
    abortRequest = false;
    mouseOnHintObj = false;
    window.setTimeout("hintRequest()", hintTimeout);
}

function aaa() {
	alert(1);
}

function showHintStr(sender, str) {
    mouseX = window.event.x;
    mouseY = window.event.y;
    if (!hintInParent) {
        hintObj = document.getElementById("hintObj");
        hintObjSpan = document.getElementById("hintObjSpan");
    } else {
        hintObj = window.parent.document.getElementById("hintObj");
        hintObjSpan = window.parent.document.getElementById("hintObjSpan");
    }
    hintCaller = sender;
    mouseOnHintObj = false;
	doHideHint();
    abortRequest = false;
	hintValue = str;
    window.setTimeout("hintCallback1()", hintTimeout);
}

function hintRequest() {
    if (abortRequest)
        return;
    jsrsExecute("temp.hint", hintCallback, hintMethod, Array(hintParam));
}

function hintCallback1() {
    abortRequest = false;
    hintCallback(hintValue);
}
function hintCallback(result) {
    if (abortRequest)
        return;
    hintLeft = findPosX(hintCaller);
    hintTop = findPosY(hintCaller);

    hintObj.style.left = hintLeft;
    hintObj.style.top = hintTop;
    hintObj.style.display = "";
    if (hintObjSpan)
        hintObjSpan.innerHTML = result;
    else
        hintObj.value = result;

    if (hintInParent) {
        //		alert(hintLeft);
        var obj = window.parent.document.getElementById("mainFrame");
        hintLeft -= document.body.scrollLeft;
        hintLeft += findPosX(obj);
        hintTop -= document.body.scrollTop;
        hintTop += findPosY(obj);

    }

    var cW = document.body.clientWidth;
    var cH = document.body.clientHeight;
    var sT = document.body.scrollTop;
    var sL = document.body.scrollLeft;
    if (hintTop - sT > cH / 2)
        hintTop = hintTop - hintObj.offsetHeight - 3;
    else
        hintTop += hintCaller.offsetHeight + 10;
    if (hintLeft - sL > cW / 2)
        hintLeft = hintLeft - hintObj.offsetWidth - 3;
    else
        hintLeft += hintCaller.offsetWidth / 2 + 3;

    hintObj.style.top = hintTop;
    hintObj.style.left = hintLeft;

}

function hideHint() {
    window.setTimeout("doHideHint()", hintTimeout);
}

function doHideHint(){
    if (mouseOnHintObj)
        return;
    abortRequest = true;
    hintObj.style.display = "none";
}

function hintObjMouseOver(){
    mouseOnHintObj = true;
}

function hintObjMouseOut(){
    mouseOnHintObj = false;
    hideHint();
}

function findPosX(obj)
{
    var curleft = 0;
    if (obj.offsetParent) {
        while (obj.offsetParent) {
            curleft += obj.offsetLeft
            obj = obj.offsetParent;
        }
    } else
        if (obj.x) curleft += obj.x;
    return curleft;
}

function findPosY(obj)
{
    var curtop = 0;
    if (obj.offsetParent) {
        while (obj.offsetParent) {
            curtop += obj.offsetTop
            obj = obj.offsetParent;
        }
    } else
        if (obj.y) curtop += obj.y;
    return curtop;
}

