//Hints javascript

//after <body>
//<div id="cssHint">hint</div>

var defaultXOffset = 0;
var defaultYOffset = 0;
var hintDiv = "cssHint"

function showHint(obj) {
    showHint(obj, null, null, null);
}
function showHint(obj, xOffset, yOffset) {
    showHint(obj, xOffset, yOffset, null)
}
function showHintWithReference(obj, referenceObject) {
    showHint(obj, null, null, referenceObject)
}

function showHint(obj, xOffset, yOffset, referenceObject) {
    var x = 0;
    var y = 0;
    if (!referenceObject) {
        x = getX(obj);
        y = getY(obj);
        if (xOffset == null) {
            x += obj.offsetWidth + 5;
        }
    } else {
        x = getX(referenceObject);
        y = getY(referenceObject);
        if (xOffset == null) {
            x += referenceObject.offsetWidth + 5;
        }
    }

    var hintHtml = "";

    //Get culture XML hint

    if (obj.getAttribute("hint") != null) {
        hintHtml += obj.getAttribute("hint");
    }

    //Get server hint

    if (obj.getAttribute("serverHint") != null) {
        if (obj.getAttribute("hintPriority") != null) {
            if (obj.hintPriority == "server") {
                hintHtml = obj.getAttribute("serverHint") + hintHtml;
            } else {
                hintHtml += obj.getAttribute("serverHint");
            }
        } else {
            hintHtml += obj.getAttribute("serverHint");
        }
    }
    getObject(hintDiv).innerHTML = hintHtml;
    getStyle(hintDiv).visibility = "visible";
    xOffset = xOffset != null ? xOffset : defaultXOffset;
    yOffset = yOffset != null ? yOffset : defaultYOffset;
    getStyle(hintDiv).left = xOffset + x + "px";
    getStyle(hintDiv).top = yOffset + y + "px";
    //getStyle(hintDiv).height = 50;
}

function hideHint(obj) {
    getStyle(hintDiv).visibility = "hidden";
}

function getX(obj) {
    var pos = 0;
    if (obj.x) // netscape 4
    {
        pos += obj.x;
    } else if (obj.offsetParent) {
        while (obj.offsetParent) {
            pos += obj.offsetLeft;
            obj = obj.offsetParent;
        }
    }
    return pos;
}

function getY(obj) {
    var count = 0;
    var pos = 0;
    if (obj.y) // netscape 4
    {
        pos += obj.y;
    } else if (obj) {
        while (obj) {
            pos += obj.offsetTop;
            obj = obj.offsetParent;
        }
    }
    return pos;
}

function getObject(name) {
    if (document.getElementById) {
        return document.getElementById(name);
    }
    if (document.all) {
        return document.all[name];
    }
    if (document.layers) {
        if (document.layers[name]) {
            return document.layers[name];
        } else {
            return document.layers[name].layers[name];
        }
    }
}

function getStyle(name) {
    if (document.getElementById) {
        return document.getElementById(name).style;
    }
    if (document.all) {
        return document.all[name].style;
    }
    if (document.layers) {
        if (document.layers[name]) {
            return document.layers[name];
        } else {
            return this.style = document.layers[name].layers[name];
        }
    }
}

//End of hints
