var g_bIE = (navigator.appName == "Microsoft Internet Explorer") ? true : false;

function showDesc( img, desc ) {

    desc = document.getElementById( desc );
    if( desc.innerHTML == '' )
        return;

    desc.style.display = 'block';

    if( g_bIE && document.documentElement )
        var width = img.clientWidth;
    else 
        width = img.offsetWidth;
    desc.style.width = width + "px";

    if( g_bIE && document.documentElement ) {
        var top = getAbsoluteBottom( img.id ) - desc.clientHeight;
    } else
        top = getAbsoluteBottom( img.id ) - desc.offsetHeight;
    desc.style.top = top + "px";

    desc.style.left = getAbsoluteLeft( img.id ) + "px";

}

function hideDesc( desc ) {
    document.getElementById( desc ).style.display = 'none';
}

function getAbsoluteLeft( objectId ) {
    // Get an object left position from the upper left viewport corner
    // Tested with relative and nested objects
    var oParent;
    var o = document.getElementById(objectId);
    var oLeft = o.offsetLeft;                // Get left position from the parent object
    while( o.offsetParent!=null ) {       // Parse the parent hierarchy up to the document element
        oParent = o.offsetParent;        // Get parent object reference
        oLeft += oParent.offsetLeft;     // Add parent left position
        o = oParent;
    }
    // Return left postion
    return oLeft;
}

function getAbsoluteTop( objectId ) {
    // Get an object top position from the upper left viewport corner
    // Tested with relative and nested objects
    var oParent;
    var o = document.getElementById(objectId);
    var oTop = o.offsetTop;            // Get top position from the parent object
    while( o.offsetParent!=null ) { // Parse the parent hierarchy up to the document element
        oParent = o.offsetParent;  // Get parent object reference
        oTop += oParent.offsetTop; // Add parent top position
        o = oParent
    }
    // Return top position
    return oTop;
}

function getAbsoluteBottom( objectId ) {
    if( g_bIE && document.documentElement )
        var oBottom = document.getElementById( objectId ).clientHeight + getAbsoluteTop( objectId );
    else
        var oBottom = document.getElementById( objectId ).offsetHeight + getAbsoluteTop( objectId );
    return oBottom;
}

function getAbsoluteRight( objectId ) {
    if( g_bIE && document.documentElement ) {
        oRight = getAbsoluteLeft( objectId ) + document.getElementById(objectId).clientWidth;
    } else {
        oRight = getAbsoluteLeft( objectId ) + document.getElementById(objectId).offsetWidth;
    }
    return oRight;
}

