var ns6 = false; // modern firefox
var ns4 = false;
var ie5 = false;
var ie4 = false;
var op5 = false;

init();

function init() {
    ns6 = (document.getElementById && !document.all) ? true : false;
    ns4 = (!document.getElementById && !document.all) ? true : false;
    ie5 = (document.all && document.getElementById) ? true : false;
    ie4 = (document.all && !document.getElementById) ? true : false;
    op5 = ((typeof window.opera != "undefined") && (/opera[\/ ][5]/.test(navigator.userAgent.toLowerCase()))) ? true : false;
}

function xb_getElement(elementId) {
    var element;
    if (ns4) {
        element = getObjNN4(document, elementId);
    } else if (document.all) {
        element = document.all[elementId];
    } else if (document.getElementById) {
        element = document.getElementById(elementId);
    }
    return element;
}

function xb_getHttpRequestObject() {
    var requestObject;
    var browser = navigator.appName;
    if (browser == "Microsoft Internet Explorer") {
        requestObject = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        requestObject = new XMLHttpRequest();
    }
    return requestObject;
}

function xb_getIeVersion() {
    return (navigator.appName == 'Microsoft Internet Explorer')
        ? parseFloat((new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})")).exec(navigator.userAgent)[1])
        : -1;
}

function xb_getPosition(oElement) {
    if (typeof (oElement.offsetParent) != 'undefined') {
        for (var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent) {
            if (xb_getIeVersion() == 6) {
                if ((oElement.currentStyle.borderTopWidth != "") && (oElement.currentStyle.borderTopStyle != "none")) {
                    var borderWidth = parseInt(oElement.currentStyle.borderTopWidth);
                    if (!isNaN(borderWidth)) {
                        posY += borderWidth;
                    }
                }
                if ((oElement.currentStyle.borderLeftWidth != "") && (oElement.currentStyle.borderLeftStyle != "none")) {
                    var borderWidth = parseInt(oElement.currentStyle.borderLeftWidth);
                    if (!isNaN(borderWidth)) {
                        posX += borderWidth;
                    }
                }
            }
            posX += oElement.offsetLeft;
            posY += oElement.offsetTop;
        }

        return [posX, posY];
    } else {
        return [oElement.x, oElement.y];
    }
}
