var left_top;
var right_bottom;

var factor;
function initShowMapXY(){
    left_top = new EsriPoint();
    right_bottom = new EsriPoint();
    showMapXYRequest(map1);
    document.getElementById("EsriMapCell_map1").onmousemove = showMapXYonStatus;
    map1.addUpdateListener("showMapXYListener",showMapXYRequest);
}


function showMapXYRequest(map) {
     //URL
     var url = EsriUtils.getServerUrl(map.formId);
     //
     var params = "showMapXY=showMapXY&formId="+ map.formId + "&mapId=" + map.id + "&"
              + EsriUtils.buildRequestParams(map.formId);
     //AJAX
     var xmlHttp ;
     xmlHttp = EsriUtils.sendAjaxRequest(url, params, true, function() { updateShowMapXYResponse(xmlHttp);});
}

function updateShowMapXYResponse(xmlHttp){ 
    try{
   
        if (xmlHttp!== null && xmlHttp != undefined && xmlHttp.readyState == 4 && xmlHttp.status == 200) {
            //XML
            var xml = EsriUtils.getXmlDocument(xmlHttp);
            /*if (newLevel <=4)
            factor = 1- 0.2*newLevel;
            else if (newLevel <=14)
            factor = 0.1- 0.01*(newLevel-5);
            else if (newLevel <20)
            factor = 0.0091- 0.001*(newLevel-15);
            else
            factor = 0.0001;*/
            try{
                var factor = xml.getElementsByTagName("factor").item(0).firstChild.nodeValue;
            
                if (factor <= 0.0001)
                    map1.zoomScale = 20;
                else if (factor <= 0.01)
                    map1.zoomScale = Math.round((0.007-factor)*1000 + 15);
                else if (factor <= 0.1)
                    map1.zoomScale = Math.round((0.1-factor)*100 + 5);
                else if (factor <= 1)
                    map1.zoomScale = Math.round((1-factor)*5);
                else
                    map1.zoomScale = 0;
            //   alert(factor + " -> "+ map1.zoomScale );
                mapSlider.setValue(map1.zoomScale, true);
            }catch(e1){
                }
            left_top.x = xml.getElementsByTagName("minx").item(0).firstChild.nodeValue;
            left_top.y = xml.getElementsByTagName("miny").item(0).firstChild.nodeValue;
            right_bottom.x = xml.getElementsByTagName("maxx").item(0).firstChild.nodeValue;
            right_bottom.y = xml.getElementsByTagName("maxy").item(0).firstChild.nodeValue;
        
        } // end of if
    }catch(e){
        left_top.x = NaN;
        alert( "error on getting extend " + e.message + " " + xmlHttp);
    }
}

function showMapXYonStatus(event){
    if (isNaN(left_top.x))
        return;
        
    var mapcell = document.getElementById("EsriMapCell_map1");
    var bounds = EsriUtils.getElementPageBounds(mapcell);
    var mousePoint = EsriUtils.getXY(event).offset(-bounds.left, -bounds.top);

    var mapx = mousePoint.x;
    var mapy = mousePoint.y;   
    var lat = document.getElementById("Lat");
    
    var longitude = document.getElementById("Long");
    var height = mapcell.offsetHeight >= map1.height? mapcell.offsetHeight: map1.height;
    var width = mapcell.offsetWidth >= map1.width? mapcell.offsetWidth: map1.width;
    if(mapx > 0 && mapx < width && mapy > 0 && mapy < height){
        var uX = calculateX(mapx,width);
        var uY =  calculateY(mapy,height);
        var utm = new Point();
        utm.x = uX;
        utm.y = uY;
        var cord = UTMToGeographic(11, utm)
//          window.status = "[" + mapx +"," + mapy + "]="  + " **" + convertSP2(uX, uY);
        lat.innerHTML= cord.y;
        longitude.innerHTML= cord.x;
    }
    else{
          longitude.innerHTML="";
          lat.innerHTML="";
    }
    
   
}

function calculateX(screenX,screenWidth){
    var mapwidth = right_bottom.x - left_top.x;
    return parseFloat((screenX*mapwidth)/screenWidth) + parseFloat(left_top.x); 
}

function calculateY(screenY,screenHeight){
    var mapheight = left_top.y - right_bottom.y ;
    return parseFloat((screenY*mapheight)/screenHeight) + parseFloat(right_bottom.y); 
}

