﻿// JScript File
var currentPageIndex = 0 ;
var currentMaxRecords = 10;
var LoadingHTML = "<div style=\"padding:4px;\" class=\"SearchLbl\"><img src=\"img/loading2.gif\" alt=\"Loading...\" /> Loading...</div>";
var myNewObj =  null;
function Button1_onclick() {
var divFloating = document.createElement('DIV');
var ajaxMap = document.getElementById("<%=ajaxMap.ClientID%>");
divFloating.innerHTML = "fedja";
divFloating.style.position = "absolute";
divFloating.style.backgroundColor = "#cccc66"
divFloating.style.top = 60;
divFloating.style.left = 500;
divFloating.style.zIndex  = 1000;
alert(divFloating.style.zIndex);
ajaxMap.appendChild(divFloating);
}

var defaultProjekat;

// this method is called when a user clicks on 'Search' button
function btnSearch_Ulice_onclick()
{
    currentPageIndex= 0;
    doSearch(0, currentMaxRecords)
}

// NE KORISTI SE VISE
function setNaseljeOnStartupByIDandTipAdreseID(id, tipAdrese)
{
   // set selected naselje in ddlNaselje
   var ddlNaselje = document.getElementById("ddlNaselje");
   ddlNaselje.selectedIndex = id - 1;    
   
   var txtBroj = document.getElementById("tbSearchQueryBroj");    
   var txtUlica = document.getElementById("tbSearchQueryUlica");
    
   // clear previous search results if any...
   var divSearch = document.getElementById("divSearchResult");
   divSearch.innerHTML = "";
    
   // set styles and some controls properties values depending on tipAdrese
   switch (tipAdrese)
   {
       case "1":
           txtUlica.setAttribute("class", "search_textbox");
           txtUlica.setAttribute("className", "search_textbox");
           txtUlica.disabled = false;
           // enable txtBroj so streets can be searched by names & numbers
           txtBroj.setAttribute("class", "search_textbox");
           txtBroj.setAttribute("className", "search_textbox");
           txtBroj.cssclass = "search_textbox";
           txtBroj.disabled = false;
           break;        
       case "2":
           txtUlica.setAttribute("class", "search_textbox");
           txtUlica.setAttribute("className", "search_textbox");
           txtUlica.disabled = false;
           // disable txtBroj so streets can be searched only by names
           txtBroj.setAttribute("class", "search_textbox_disabled");
           txtBroj.setAttribute("className", "search_textbox_disabled");
           txtBroj.disabled = true;
           break;
       case "3":
           txtUlica.setAttribute("class", "search_textbox_disabled");
           txtUlica.setAttribute("className", "search_textbox_disabled");
           txtUlica.disabled = true;
           txtUlica.cssclass = "search_textbox_disabled";
           txtBroj.setAttribute("class", "search_textbox");
           txtBroj.setAttribute("className", "search_textbox");
           txtBroj.cssclass = "search_textbox";
           txtBroj.disabled = false;           
           break;        
       default:  
           // decide what default behaviour should be
           txtUlica.setAttribute("class", "search_textbox");
           txtUlica.setAttribute("className", "search_textbox");
           txtUlica.disabled = false;
           txtBroj.setAttribute("class", "search_textbox");
           txtBroj.setAttribute("className", "search_textbox");
           txtBroj.cssclass = "search_textbox";
           txtBroj.disabled = false;
           break;      
   }
}

// this method sets naselje on startup but does not set x and y of the current map view
function setNaseljeOnStartupNoXYSet(naselje)
{
    // set selected naselje in ddlNaselje
    var ddlNaselje = document.getElementById("ddlNaselje");
    
    // try to reach element having ID=Naselje from query string
    var currentNaseljeOption = document.getElementById(naselje);
        
    // set selected property to true
    if (currentNaseljeOption != null)
    {
        currentNaseljeOption.selected = true;
    }
    
    // call web method and change naselje
    PageMethods.ChangeNaselje(ddlNaselje.options[ddlNaselje.selectedIndex].value, onGetCompleteChangeNaseljeNoXYSet);
}

// this method sets selected naselje value if query string contains "Naselje" string
// function setNaseljeOnStartup(naselje, clearValues)
function setNaseljeOnStartup(mestoId, clearValues)
{
    // set selected naselje in ddlNaselje
    var ddlNaselje = document.getElementById("ddlNaselje");
    
    // try to reach element having ID=Naselje from query string
    // var currentNaseljeOption = document.getElementById(naselje);
            
    // set selected property to true
    // if (currentNaseljeOption != null)
    // {
    //     currentNaseljeOption.selected = true;    
    // }
    
    //ddlNaselje.selectedIndex = mestoId - 1;
    ddlNaselje.selectedIndex = mestoId ;
    if (clearValues == true)
    {
        // call web method and change naselje
        PageMethods.ChangeNaselje(ddlNaselje.options[ddlNaselje.selectedIndex].value, onGetCompleteChangeNaseljeClearValues);
    }
    else
    {
        // call web method and change naselje
        PageMethods.ChangeNaselje(ddlNaselje.options[ddlNaselje.selectedIndex].value, onGetCompleteChangeNaselje);        
    }
}

// this method is called when a user changes value in DropDownList ddlNaselje
function ddlNaselje_onchange()
{       
    // get a value of selected drop down list item
    var ddlNaselje = document.getElementById("ddlNaselje");
    
    // get auto complete extender element...
    var extender = $find('Extender');
    
    // ... and set context key to selected project id
    extender.set_contextKey(ddlNaselje.options[ddlNaselje.selectedIndex].value);
    
    // delete hidNaselje value if not null
    var hidNaselje = document.getElementById("hidNaselje");
    if (hidNaselje != null) 
    {
        hidNaselje.value="";
    }
    
    // call web method at Map.aspx.cs to catch proper Projekat
    PageMethods.ChangeNaselje(ddlNaselje.options[ddlNaselje.selectedIndex].value, onGetCompleteChangeNaseljeClearValues);        
}

// this method is called after PageMethods.ChangeNaselje is called and executed
// parameter: result is object typeof Projekat class
// method clears ulica and broj textboxes and divsearchresult
function onGetCompleteChangeNaseljeClearValues(result)
{   
    // get fileds values from Projekat
    var minX = result.MinX;
    var maxX = result.MaxX;
    var minY = result.MinY;
    var maxY = result.MaxY;
    var minZoom = result.MinZoom;
    var maxZoom = result.MaxZoom;
    
    // set project-specific initial zoom value
    var initialZoom = result.MaxZoom; // ...
    
    var naziv = result.Naziv;
    var projekatID = result.ProjekatID;
    var tipAdreseId = result.TipAdreseID;
    
    // clear street name query string if any...
    var txtUlica = document.getElementById("tbSearchQueryUlica");
    txtUlica.value = "";
    
    // clear street number query string if any...
    var txtBroj= document.getElementById("tbSearchQueryBroj");
    txtBroj.value = "";
    
    // clear previous search results if any...
    var divSearch = document.getElementById("divSearchResult");
    divSearch.innerHTML = "";
    
    // set styles and some controls properties values depending on tipAdreseId
    switch (tipAdreseId)
    {
        case 1:
            txtUlica.setAttribute("class", "search_textbox");
            txtUlica.setAttribute("className", "search_textbox");
            txtUlica.disabled = false;
            txtUlica.cssclass = "search_textbox";
            // enable txtBroj so streets can be searched by names & numbers
            txtBroj.setAttribute("class", "search_textbox");
            txtBroj.setAttribute("className", "search_textbox");
            txtBroj.cssclass = "search_textbox";
            txtBroj.disabled = false;
            break;        
        case 2:
            txtUlica.setAttribute("class", "search_textbox");
            txtUlica.setAttribute("className", "search_textbox");
            txtUlica.disabled = false;
            txtUlica.cssclass = "search_textbox";
            // disable txtBroj so streets can be searched only by names
            txtBroj.setAttribute("class", "search_textbox_disabled");
            txtBroj.setAttribute("className", "search_textbox_disabled");
            txtBroj.cssclass = "search_textbox_disabled";
            txtBroj.disabled = true;
            break;
        case 3:
           txtUlica.setAttribute("class", "search_textbox_disabled");
           txtUlica.setAttribute("className", "search_textbox_disabled");
           txtUlica.disabled = true;
           txtUlica.cssclass = "search_textbox_disabled";
           txtBroj.setAttribute("class", "search_textbox_disabled");
            txtBroj.setAttribute("className", "search_textbox_disabled");
           txtBroj.cssclass = "search_textbox_disabled";
           txtBroj.disabled = true;           
           break;        
        default:          
            // decide what default behaviour should be
            txtUlica.setAttribute("class", "search_textbox");
            txtUlica.setAttribute("className", "search_textbox");
            txtUlica.disabled = false;
            txtUlica.cssclass = "search_textbox";
            txtBroj.setAttribute("class", "search_textbox");
            txtBroj.setAttribute("className", "search_textbox");
            txtBroj.cssclass = "search_textbox";
            txtBroj.disabled = false;
            break;      
    }
        
    // set AjaxMap object project-specific properties
    ajaxMapObj.minx = minX;    
    ajaxMapObj.maxX = maxX;    
    ajaxMapObj.minY = minY;    
    ajaxMapObj.maxY = maxY;
         
    ajaxMapObj.defMinX = minX;
    ajaxMapObj.defMaxY = maxY; 
        
    ajaxMapObj.mapSmall = document.getElementById("imgMapSmall");
             
    // set maxZoom value to initial zoom value...
    ajaxMapObj.maxZoom = initialZoom;
    
    // ... extent map...
    SharpMap_ZoomExtents(ajaxMapObj);        
        
    // clear markers
    ajaxMapObj.ToolTips = new Array();
}

// this method is called after PageMethods.ChangeNaselje is called and executed
// parameter: result is object typeof Projekat class
// method does not clear ulica and broj textboxes and divsearchresult
function onGetCompleteChangeNaselje(result)
{   
    // get fileds values from Projekat
    var minX = result.MinX;
    var maxX = result.MaxX;
    var minY = result.MinY;
    var maxY = result.MaxY;
    var minZoom = result.MinZoom;
    var maxZoom = result.MaxZoom;
    
    // set project-specific initial zoom value
    var initialZoom = result.MaxZoom; // ...
    
    var naziv = result.Naziv;
    var projekatID = result.ProjekatID;
    var tipAdreseId = result.TipAdreseID;
        
    var txtUlica = document.getElementById("tbSearchQueryUlica");
    var txtBroj= document.getElementById("tbSearchQueryBroj");
        
    // set styles and some controls properties values depending on tipAdreseId
    switch (tipAdreseId)
    {
        case 1:
            txtUlica.setAttribute("class", "search_textbox");
            txtUlica.setAttribute("className", "search_textbox");
            txtUlica.disabled = false;
            txtUlica.cssclass = "search_textbox";
            // enable txtBroj so streets can be searched by names & numbers
            txtBroj.setAttribute("class", "search_textbox");
            txtBroj.setAttribute("className", "search_textbox");
            txtBroj.cssclass = "search_textbox";
            txtBroj.disabled = false;
            break;        
        case 2:
            txtUlica.setAttribute("class", "search_textbox");
            txtUlica.setAttribute("className", "search_textbox");
            txtUlica.disabled = false;
            txtUlica.cssclass = "search_textbox";
            // disable txtBroj so streets can be searched only by names
            txtBroj.setAttribute("class", "search_textbox_disabled");
            txtBroj.setAttribute("className", "search_textbox_disabled");
            txtBroj.cssclass = "search_textbox_disabled";
            txtBroj.disabled = true;
            break;
        case 3:
           txtUlica.setAttribute("class", "search_textbox_disabled");
           txtUlica.setAttribute("className", "search_textbox_disabled");
           txtUlica.disabled = true;
           txtUlica.cssclass = "search_textbox_disabled";
           txtBroj.setAttribute("class", "search_textbox_disabled");
           txtBroj.setAttribute("className", "search_textbox_disabled");
           txtBroj.cssclass = "search_textbox_disabled";
           txtBroj.disabled = true;           
           break;        
        default:          
            // decide what default behaviour should be
            txtUlica.setAttribute("class", "search_textbox");
            txtUlica.setAttribute("className", "search_textbox");
            txtUlica.disabled = false;
            txtUlica.cssclass = "search_textbox";
            txtBroj.setAttribute("class", "search_textbox");
            txtBroj.setAttribute("className", "search_textbox");
            txtBroj.cssclass = "search_textbox";
            txtBroj.disabled = false;
            break;      
    }
        
      // set AjaxMap object project-specific properties
    ajaxMapObj.minx = minX;    
    ajaxMapObj.maxX = maxX;    
    ajaxMapObj.minY = minY;     
    ajaxMapObj.maxY = maxY;     
    
    ajaxMapObj.defMinX = minX;  
    ajaxMapObj.defMaxY = maxY; 
        
    ajaxMapObj.mapSmall = document.getElementById("imgMapSmall");
             
    // set maxZoom value to initial zoom value...
    ajaxMapObj.maxZoom = initialZoom;    
}

// this method is called after PageMethods.ChangeNaselje is called and executed
// parameter: result is object typeof Projekat class
// method does not set x and y values of the current view
function onGetCompleteChangeNaseljeNoXYSet(result)
{   
    // get fileds values from Projekat
    var minX = result.MinX;
    var maxX = result.MaxX;
    var minY = result.MinY;
    var maxY = result.MaxY;
    var minZoom = result.MinZoom;
    var maxZoom = result.MaxZoom;
    
    // set project-specific initial zoom value
    var initialZoom = result.MaxZoom; // ...
    
    var naziv = result.Naziv;
    var projekatID = result.ProjekatID;
    var tipAdreseId = result.TipAdreseID;
        
    var txtUlica = document.getElementById("tbSearchQueryUlica");
    var txtBroj= document.getElementById("tbSearchQueryBroj");
        
    // set styles and some controls properties values depending on tipAdreseId
    switch (tipAdreseId)
    {
        case 1:
            txtUlica.setAttribute("class", "search_textbox");
            txtUlica.setAttribute("className", "search_textbox");
            txtUlica.disabled = false;
            txtUlica.cssclass = "search_textbox";
            // enable txtBroj so streets can be searched by names & numbers
            txtBroj.setAttribute("class", "search_textbox");
            txtBroj.setAttribute("className", "search_textbox");
            txtBroj.cssclass = "search_textbox";
            txtBroj.disabled = false;
            break;        
        case 2:
            txtUlica.setAttribute("class", "search_textbox");
            txtUlica.setAttribute("className", "search_textbox");
            txtUlica.disabled = false;
            txtUlica.cssclass = "search_textbox";
            // disable txtBroj so streets can be searched only by names
            txtBroj.setAttribute("class", "search_textbox_disabled");
            txtBroj.setAttribute("className", "search_textbox_disabled");
            txtBroj.cssclass = "search_textbox_disabled";
            txtBroj.disabled = true;
            break;
        case 3:
           txtUlica.setAttribute("class", "search_textbox_disabled");
           txtUlica.setAttribute("className", "search_textbox_disabled");
           txtUlica.disabled = true;
           txtUlica.cssclass = "search_textbox_disabled";
           txtBroj.setAttribute("class", "search_textbox_disabled");
           txtBroj.setAttribute("className", "search_textbox_disabled");
           txtBroj.cssclass = "search_textbox_disabled";
           txtBroj.disabled = true;           
           break;        
        default:          
            // decide what default behaviour should be
            txtUlica.setAttribute("class", "search_textbox");
            txtUlica.setAttribute("className", "search_textbox");
            txtUlica.disabled = false;
            txtUlica.cssclass = "search_textbox";
            txtBroj.setAttribute("class", "search_textbox");
            txtBroj.setAttribute("className", "search_textbox");
            txtBroj.cssclass = "search_textbox";
            txtBroj.disabled = false;
            break;      
    }
        
    // set AjaxMap object project-specific properties    
    ajaxMapObj.defMinX = minX;  
    ajaxMapObj.defMaxY = maxY; 
        
    ajaxMapObj.mapSmall = document.getElementById("imgMapSmall");
             
    // set maxZoom value to initial zoom value...
    ajaxMapObj.maxZoom = initialZoom;    
}

// this method is called when a user clicks on 'Search' button
function doSearch(pageIndex, MaxRecords)
{
    document.getElementById("divSearchResult").innerHTML = LoadingHTML;
 
    var tbSearchQueryUlica = document.getElementById("tbSearchQueryUlica");
    var tbSearchQueryBroj = document.getElementById("tbSearchQueryBroj");
    var ddlNaselje = document.getElementById("ddlNaselje");
       //hidNaselje
   var hidNaselje=  document.getElementById("hidNaselje") ;
   if ((hidNaselje!=null) && (hidNaselje.value != ""))
        {
             PageMethods.ProccesAddressSearchRequest(hidNaselje.value, tbSearchQueryUlica.value, tbSearchQueryBroj.value,  pageIndex,MaxRecords, onGetCompleteProccesSearchRequest);
        
        }
    else{
             PageMethods.ProccesSearchRequest(tbSearchQueryUlica.value, tbSearchQueryBroj.value, ddlNaselje.options[ddlNaselje.selectedIndex].value, pageIndex,MaxRecords, onGetCompleteProccesSearchRequest);
        }
}

function RefreshToolTips()
{
    var hidToolTip = document.getElementById("hidToolTip");
    
    if (hidToolTip!=null)
    {
        ajaxMapObj.ToolTips = new Array();
        var values = hidToolTip.value.split('|');
        
        for(i=0;i<values.length;i++)
        {
            var tooltipData = values[i].split('#');
            AddToolTip(ajaxMapObj,tooltipData[0],tooltipData[1],tooltipData[2],tooltipData[3]);
        }        
        return true;
    }
    return false;
}

// this method is called after PageMethods.ProccesSearchRequest is executed
function onGetCompleteProccesSearchRequest(result)
{   
    var gridHTML = result; 
    document.getElementById("divSearchResult").innerHTML = gridHTML;  
    var hidPositionTo = document.getElementById("hidPositionTo");
    RefreshToolTips();
    if (hidPositionTo!=null)
    {       
        var values = hidPositionTo.value.split('|'); 
        GotToMapAndZoom(ajaxMapObj,parseFloat(values[0]),parseFloat(values[1]),parseFloat(values[2]));
        
//        // added for small map handling
//        SetSmallMapImageSrc(ajaxMapObj);
    }
}

// This method is called when a user clicks one of the buttons refering to type of view
// (mapa, hibrid, fotokarta)
function ChangeViewAndRefresh(obj, ViewName, elem)
{
    var lnkPrikaz_Mapa = document.getElementById("lnkPrikaz_Mapa");
    var lnkPrikaz_Hibrid= document.getElementById("lnkPrikaz_Hibrid");
    var lnkPrikaz_FotoKarta= document.getElementById("lnkPrikaz_FotoKarta");
    
    var imgPrikaz_Mapa = document.getElementById("imgPrikaz_Mapa");
    var imgPrikaz_Hibrid= document.getElementById("imgPrikaz_Hibrid");
    var imgPrikaz_FotoKarta= document.getElementById("imgPrikaz_FotoKarta");
    
    lnkPrikaz_Mapa.style.fontWeight = "normal";
    lnkPrikaz_Hibrid.style.fontWeight = "normal";
    lnkPrikaz_FotoKarta.style.fontWeight = "normal";
    
    imgPrikaz_Mapa.src = "img/DugmePlavo.png";
    imgPrikaz_Hibrid.src = "img/DugmePlavo.png";
    imgPrikaz_FotoKarta.src = "img/DugmePlavo.png";
    
    if (ViewName == "Mapa")
    {
        lnkPrikaz_Mapa.style.fontWeight = "bold";  
        imgPrikaz_Mapa.src = "img/DugmeOrange.png";
    }
    else if (ViewName == "Hibrid")
        {
            lnkPrikaz_Hibrid.style.fontWeight = "bold";           
            imgPrikaz_Hibrid.src = "img/DugmeOrange.png";      
        }
        else if (ViewName == "FotoKarta")
            {
                lnkPrikaz_FotoKarta.style.fontWeight = "bold";           
                imgPrikaz_FotoKarta.src = "img/DugmeOrange.png";    
            }        
    obj.LayerActive = ViewName;
    SharpMap_BeginRefreshMap(obj,1);
    
    PageMethods.ChangeLayerActive(ViewName);
}

function AjaxMap_OnViewChanging(obj)
{    
    obj.ImageLoading.style.visibility = "visible";
}

function AjaxMap_OnViewChange(obj)
{
    obj.ImageLoading.style.visibility = "hidden";
    if (obj.VisibleMap().style.visibility=="hidden")
        obj.VisibleMap().style.visibility = "visible";
}

function ChangeRecordNum(value)
{
    currentMaxRecords = value;
    doSearch(currentPageIndex, value);  
}

function FeatureLayerSelect_onChange(element)
{
    var divs = element.parentNode.getElementsByTagName("DIV");
    for(i=0;i<divs.length;i++) {        
        if (divs[i].id == "div_"+element.options[element.selectedIndex].value)
        {
            divs[i].style.display ='block'
            
        }        
        else
          if (divs[i].style.display =='block')
            divs[i].style.display ='none'
    }       
}

function btnGoTo_onclick() {
 //   ShowToolTip();
    var txtLon = document.getElementById("txtLon");
    var txtLat = document.getElementById("txtLat");
    GoToMap(ajaxMapObj, parseFloat(txtLon.value) , parseFloat(txtLat.value))
    
//    // refresh small map image if needed
//    SetSmallMapImageSrc(ajaxMapObj);
}

function OnLoadBody()
{
    if (ajaxMapObj.currTool=="pan")
        ajaxMapObj.container.style.cursor = "url('img/grab.cur'), pointer";
    //ajaxMapObj.mapSmall = document.getElementById("imgMapSmall");
    //ajaxMapObj.mapSmall.onmousedown = function(event) { SmallMap_MouseDown(event,ajaxMapObj); return false; }
    //ajaxMapObj.mapSmall.onmouseup = function(event) { SmallMap_MouseUp(event,ajaxMapObj); return false; }
    //ajaxMapObj.mapSmall.onmousemove = function(event) { SmallMap_MapMouseOver(event,ajaxMapObj); }
    //ajaxMapObj.mapSmall.onmouseout = function(event) { SmallMap_OnMouseOut(event,ajaxMapObj); }
    //document.getElementById("divCanvasMapSmall").onmouseup = ajaxMapObj.mapSmall.onmouseup;
    //document.getElementById("divCanvasMapSmall").onmousedown = ajaxMapObj.mapSmall.onmousedown;
    //ajaxMapObj.mapSmall.ondrag = function(event) { return false; }
    SharpMap_RedrawScaleBar(ajaxMapObj);    
    // SharpMap_RedrawSmallMap(ajaxMapObj, null, null);
     
    setZoomLevel(ajaxMapObj,ajaxMapObj.zoom);
    if (RefreshToolTips())
        SetToolTipLayer(ajaxMapObj);
        
    if (document.getElementById("tbSearchQueryUlica").value!="" )
    {
      document.getElementById("btnSearch_Ulice").click();
    }
      
    // ... extent map...
    // SharpMap_ZoomExtents(ajaxMapObj);
      
    // call maphandler and set small map image
    SetSmallMapImageSrc(ajaxMapObj); 
    
    // draw rectangle in the center of the small map (150 x 150)
    DrawRectangleOnSmallMap(44, 44, 63, 63, "#336699", 3);        
}

// This method sets the small map image url using current main map parameters
function SetSmallMapImageSrc(ajaxMapObj)
{   
    // get screen width to reach current map size
    var ScreenWidth = parseInt(ajaxMapObj.container.style.width.substring(0,ajaxMapObj.container.style.width.length-2));
    
    // set initial zoomString value...    
    var zoomString = ajaxMapObj.zoom * 150 * 2;
    
    // ... and set zoomString according to current view size
    switch (ScreenWidth)
    {
        case 350:
            zoomString = zoomString / 175;
            break;
        case 500:
            zoomString = zoomString / 250;
            break;
        case 670:
            zoomString = zoomString / 335;
            break;
    }
     
    // get current map center coordinates   
    var center = SharpMap_GetCenter(ajaxMapObj);
        
    // get x and y map center coordinates
    var xCenterMainMap = center.x;
    var yCenterMainMap = center.y;
        
    // set layerString (always equals "Mapa" for now)
    var layerString = "Mapa";
    
    // set thumbZoomLevelString (always equals 2 for now)
    var thumbZoomLevelString = 2;
   
    // calculate number of metres
    var deltaMetres = ajaxMapObj.zoom/20; 
    
    // set XString and YString values so maphandler is not actually called if there is cached image already
    // differing less then <deltaMetres> metres from current map (x,y) values
    var XString = xCenterMainMap - xCenterMainMap % deltaMetres;
    var YString = yCenterMainMap - yCenterMainMap % deltaMetres;
    
    // set complete imageString
    var imageString = "maphandler.ashx?Width=150&Height=150&Zoom=" + zoomString + 
                      "&X=" + XString + "&Y=" + YString + 
                      "&LayerActive=" + layerString + 
                      "&thumbnailZoomLevelAdd=" + thumbZoomLevelString;
      
    // set imgMapSmall image url
    document.getElementById("imgMapSmall").src = imageString;       
}

// this method draws rectangle on small map
function DrawRectangleOnSmallMap(left, top, width, height, color, stroke)
{
    jgSmallMap.clear();
	jgSmallMap.setColor(color);
	jgSmallMap.setStroke(stroke);
	jgSmallMap.drawRect(left, top, width, height);
	jgSmallMap.paint();
}

function btnSearch_onclick() {
    doSearch(0, 5);
}

function btnClear_onclick()
{
    document.getElementById("divSearchResult").innerHTML = LoadingHTML;
    PageMethods.ClearSearchResult(onGetCompleteClearSearchResult)
}

function onGetCompleteClearSearchResult(result)
{
    SharpMap_BeginRefreshMap(ajaxMapObj,1);
    document.getElementById("divSearchResultGrid").innerHTML = "";
    RenderSearchOption(ajaxMapObj);       
}

function onGetComplete(result) {
    var gridHTML = result; 
    document.getElementById("divSearchResult").innerHTML = gridHTML;
}

function RenderGrid(pageIndex)
{
   // alert(pageIndex);
    currentPageIndex = pageIndex;
    if (currentPageIndex<0)
        currentPageIndex = 0;     
    var ddlPager = document.getElementById("ddlPager");
    if (ddlPager!=null)
        if (ddlPager.length <=currentPageIndex)
         currentPageIndex = ddlPager.length - 1;    
    doSearch(pageIndex, currentMaxRecords);
}

function goToNextPage(){
    RenderGrid(parseInt(currentPageIndex)+1)
}

function goToPrevPage(){
    RenderGrid(parseInt(currentPageIndex)-1)
}

function ZoomTo()
{
    var tbZoomTo = document.getElementById("tbZoomTo");
    
}

function btnGetLinkXY_onclick() {    
    var center = SharpMap_GetCenter(ajaxMapObj);    
    var ScreenWidth = parseInt(ajaxMapObj.container.style.width.substring(0,ajaxMapObj.container.style.width.length-2));
    var winpops= window.open("GetLink.aspx?X="+center.x+"&Y="+center.y+"&Zoom="+ajaxMapObj.zoom+"&Size="+ScreenWidth,
    "",' toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=750,height=150,left = 390,top = 200');
}

function GetXY() {    
    var center = SharpMap_GetCenter(ajaxMapObj);    
    var ScreenWidth = parseInt(ajaxMapObj.container.style.width.substring(0,ajaxMapObj.container.style.width.length-2));
    var stringPosition= "X="+center.x+"&Y="+center.y+"&Zoom="+ajaxMapObj.zoom+"&Size="+ScreenWidth;
    return stringPosition;
    
}
function OpenPopupLinkStreet(linkToPopUp)
{
    var winpops= window.open(linkToPopUp,
    "",' toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=750,height=150,left = 390,top = 200');
}

function ZoomToXY(x , y, zoom, html)
{
//alert(ajaxMapObj);
 //   alert('XY '+map);
//   alert(map.ajaxMapObj +" "+ x +" "+  y+" "+  zoom+" "+html );
  GotToMapAndZoom(ajaxMapObj, x , y, zoom);
  AddToolTip(ajaxMapObj,0,x,y,html);
  SetToolTipLayer(ajaxMapObj);
  
//  // refresh small map image if needed
//  SetSmallMapImageSrc(ajaxMapObj);
}

function btnClear_click()
{
    document.getElementById("divSearchResult").innerHTML = LoadingHTML;
    document.getElementById("divSearchResultGrid").innerHTML = "";
    ClearToolTips(ajaxMapObj);
    RenderSearchOption(ajaxMapObj);   
    ClearResultsSearch();
}

function ClearToolTips(obj)
{
    ajaxMapObj.ToolTips = new Array();
    // SetToolTipLayer(ajaxMapObj);
}

function  ClearResultsSearch()
{
    ClearResults("search");
}

function  ClearResults(functionality)
{
    PageMethods.ClearResults(functionality,onGetCompleteClearResults);
}

function onGetCompleteClearResults(result)
{
    SharpMap_BeginRefreshMap(ajaxMapObj,1);
}

function SharpMap_ZoomExtents(obj)
{
    zoomval = obj.zoom/obj.maxZoom;
    
    obj.zoom = obj.maxZoom;
        	
	obj.minX = obj.defMinX;
	obj.maxY = obj.defMaxY;
	
	setZoomLevel(obj, obj.zoom);	
		
	SharpMap_BeginRefreshMap(obj, 1); //Start refreshing the map while we're zooming
	
	obj.zoomEnded = 0;
	
	SharpMap_DynamicZoom(obj.minX*zoomval, obj.maxY*zoomval, zoomval, 0.0, obj);
	
	SetSmallMapImageSrc(ajaxMapObj);
}