function createXmlHttpRequest() {
   try {
      if (window.XMLHttpRequest) {
         var req = new XMLHttpRequest();
         // some older versions of Moz did not support the readyState property
         // and the onreadystate event so we patch it!
         if (req.readyState == null) {
            req.readyState = 1;
            req.addEventListener("load", function () {
               req.readyState = 4;
               if (typeof req.onreadystatechange == "function")
                  req.onreadystatechange();
            }, false);
         }
         return req;
      }
      if (window.ActiveXObject) {
         return new ActiveXObject("Microsoft.XmlHttp");
      }
   }
   catch (ex) {}
   // fell through
   throw new Error("Your browser does not support XmlHttp objects");
}

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;
}

function screenToNumeric(wsnav, x, y){
    var numX = x*(wsnav.xmax-wsnav.xmin)/wsnav.mapWidth;
    var numY = y*(wsnav.ymax-wsnav.ymin)/wsnav.mapHeight;
    var point = new Array();
    point[0] = numX+wsnav.xmin;
    point[1] = numY+wsnav.ymin;
    return point;
}
function numericToScreen(wsnav, longitude, latitude) {
    var deltaX = wsnav.xmax - wsnav.xmin;
    var deltaY = wsnav.ymax - wsnav.ymin;

    var tempPointX = ((longitude - wsnav.xmin) / deltaX) * wsnav.mapWidth;
    var tempPointY = ((wsnav.ymax - latitude) / deltaY) * wsnav.mapHeight;

    tempPointX = Math.round(tempPointX);
    tempPointY = Math.round(tempPointY);

    var point = new Array();
    point[0] = tempPointX;
    point[1] = tempPointY;
    return point;
} 
