
    var bIsNN4 = (document.layers) ? true : false;
    var agid = navigator.userAgent.toLowerCase();
    var bIsIE = (agid.indexOf("msie") != -1);

    function getElementLeft(oElem)  {
        var result = 0;
        if (oElem) {
            var cssDecl, defaultView = document.defaultView;
            if (defaultView && 
            (typeof defaultView.getComputedStyle == 'function') && 
            (cssDecl=defaultView.getComputedStyle(oElem, null)) ) {
                result = cssDecl.getPropertyValue("left");
            } else if (oElem.currentStyle) {
                result = oElem.currentStyle.left;
            } else if (oElem.style) {
                result = oElem.style.left;
            } else if (bIsNN4) {
                result = oElem.left;
            }
            result = parseInt(result);
            if (isNaN(result)) {
                result = getPageElementLeft(oElem);
            }
        }
        return result;
    }

    function getElementTop(oElem)  {
        var result = 0;
        if (oElem) {
            var cssDecl, defaultView = document.defaultView;
            if (defaultView && 
            (typeof defaultView.getComputedStyle == 'function') && 
            (cssDecl=defaultView.getComputedStyle(oElem, null)) ) {
                result = cssDecl.getPropertyValue("top");
            } else if (oElem.currentStyle) {
                result = oElem.currentStyle.top;
            } else if (oElem.style) {
                result = oElem.style.top;
            } else if (bIsNN4) {
                result = oElem.top;
            }
        }
        result = parseInt(result); 
        if (isNaN(result)) {
            result = getPageElementTop(oElem);
        }
        return result;
    }

    function getElementWidth(oElem)  {
        var result = 0;
        if (oElem) {
            var cssDecl, defaultView = document.defaultView;
            if (defaultView && 
            (typeof defaultView.getComputedStyle == 'function') && 
            (cssDecl=defaultView.getComputedStyle(oElem, null)) ) {
                result = cssDecl.getPropertyValue("width");
            } else if (oElem.currentStyle) {
                result = oElem.currentStyle.width;
            } else if (oElem.style) {
                result = oElem.style.width;
            } else if (bIsNN4) {
                result = oElem.width;
            }
            result = parseInt(result);
        }
        return result;
    }

    function getElementHeight(oElem)  {
        var result = 0;
        if (oElem) {
            var cssDecl, defaultView = document.defaultView;
            if (defaultView && 
            (typeof defaultView.getComputedStyle == 'function') && 
            (cssDecl=defaultView.getComputedStyle(oElem, null)) ) {
                result = cssDecl.getPropertyValue("height");
            } else if (oElem.currentStyle) {
                result = oElem.currentStyle.height;
            } else if (oElem.style) {
                result = oElem.style.height;
            } else if (bIsNN4) {
                result = oElem.height;
            }
            result = parseInt(result);
        }
        return result;
    }

	function getPageElementLeft(elem) {
        var left=0;
        if (elem) {
            left = elem.offsetLeft;         
            var parentObj = elem.offsetParent;  
            while (parentObj != null) {
                if(bIsIE) {
                if( (parentObj.tagName != "TABLE") && (parentObj.tagName != "BODY") ) 
                    left += parentObj.clientLeft; 
                } else {
                    if(parentObj.tagName == "TABLE") {
                        var nParBorder = parseInt(parentObj.border);
                        if(isNaN(nParBorder)) { 
                            var nParFrame = parentObj.getAttribute('frame');
                            if(nParFrame != null)
                            left += 1;
                        } else if(nParBorder > 0) {
                            top += nParBorder;        
                        }
                    }
                }
                left += parentObj.offsetLeft;      
                parentObj = parentObj.offsetParent; 
            }                                      
        }
        return left;
    }

    function getPageElementTop(elem) {
        var top=0;
        if (elem) {
            top = elem.offsetTop;         
            var parentObj = elem.offsetParent;  
            while (parentObj != null) {
                if(bIsIE) {
                    if( (parentObj.tagName != "TABLE") && (parentObj.tagName != "BODY") ) 
                        top += parentObj.clientTop; 
                } else {
                    if(parentObj.tagName == "TABLE") {
                        var nParBorder = parseInt(parentObj.border);
                        if(isNaN(nParBorder)) { 
                            var nParFrame = parentObj.getAttribute('frame');
                            if(nParFrame != null)
                                top += 1;
                        } else if(nParBorder > 0) {
                            top += nParBorder;        
                        }
                    }
                }
                top += parentObj.offsetTop;      
                parentObj = parentObj.offsetParent; 
            }                                      
        }
        return top;                           
    }
