//Nome do objecto do painel da pesquisa
var PANELCONTROL = "panel1"

//Número de registos de cadapágina da pesquisa
var PAGE_RECORDS = 40;

var gPanelIsBusy = false;

function ChangePanelStatusToLoading()
{
	gPanelIsBusy=true;
	
    setMousePointer(PANELCONTROL, "wait");   
}
function ChangePanelStatusToMain()
{
	gPanelIsBusy=false;

    setMousePointer(PANELCONTROL, "default");
}

function btn_searchPlaces_onclick(button, controlUpdate)
{     
	DoSearchPlaces(1, controlUpdate)
}

function DoSearchPlaces(page, controlUpdate)
{
    var controlPrefix = "";
    controlPrefix = getControlPrefix();
    
    document.getElementById(controlUpdate).innerHTML = "";
    doWaitingSearch(controlUpdate);

	var placeName = "";
	var adminUnit = "";
	var geometry = ""; 
	var id = "";	
	
	placeName = document.getElementById(controlPrefix + "_txt_places_name").value;
	adminUnit = document.getElementById(controlPrefix + "_ddl_places_admin").value;
	
	
    if (document.getElementById(controlPrefix + "_chkAreaVisivelPlaces").checked)
    {
        var MapRange=DoGetMapRange();
        
        geometry = MapRange[0] + " " + MapRange[1] + ", " +
           MapRange[2] + " " + MapRange[1] + ", " +
           MapRange[2] + " " + MapRange[3] + ", " +
           MapRange[0] + " " + MapRange[3] + ", " +
           MapRange[0] + " " + MapRange[1];
           
        geometry = "POLYGON ((" + geometry + "))";
    } 	
	
	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}

    if (ADMIN_LEVEL == 1)
    {
         ChangePanelStatusToLoading();
        
        Geo.AjaxRequests.panelLocations.DoSearchPlaces(id, placeName, adminUnit, "", geometry, page, PAGE_RECORDS, lang, controlUpdate, DoSearchPlaces_CallBack);
	} else {
	     ChangePanelStatusToLoading();
	    
	    Geo.AjaxRequests.panelLocations.DoSearchPlaces(id, placeName, "", adminUnit, geometry, page, PAGE_RECORDS, lang, controlUpdate, DoSearchPlaces_CallBack);
	}  
}
function DoSearchPlaces_CallBack(response)
{	
     ChangePanelStatusToMain();

	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}
	
	
	document.getElementById(response.value[0]).innerHTML = "";
	document.getElementById(response.value[0]).innerHTML = response.value[1];
		
	if (document.getElementById("Info") != null)
	{
	    document.getElementById("Info").innerHTML = "";	
	}
}


function btn_searchStreets_onclick(button, controlUpdate)
{
	DoSearchStreets(1, controlUpdate)
}
function DoSearchStreets(page, controlUpdate)
{
    var controlPrefix = "";
    controlPrefix = getControlPrefix();

    document.getElementById(controlUpdate).innerHTML = "";
    doWaitingSearch(controlUpdate);

	var streetName = "";
	var adminUnit= "";
	var placeName = "";
	
	var streetNumber = "";
	var CP4 = "";
	var CP3 = ""
	
	var geometry = "";
	
	var id = "";
	
	streetName = trim(document.getElementById(controlPrefix + "_txt_streets_name").value);
	adminUnit = document.getElementById(controlPrefix + "_ddl_streets_admin").value;
		
	if (document.getElementById(controlPrefix + "_txt_streets_number") != null)
	{
	    streetNumber = trim(document.getElementById(controlPrefix + "_txt_streets_number").value);
	}

	if (document.getElementById(controlPrefix + "_txt_streets_cp4") != null)
	{
	    CP4 = trim(document.getElementById(controlPrefix + "_txt_streets_cp4").value);
	}
	if (document.getElementById(controlPrefix + "_txt_streets_cp3") != null)
	{
	    CP3 = trim(document.getElementById(controlPrefix + "_txt_streets_cp3").value);
	}

	
	
	if (CP3.length > 0  && CP4.length == 0)
	{
	    alert("Tem que indicar os quatro primeiro digitos do codigo postal.");
	    
	    return false;
	}

	
    if (streetNumber.length > 0)
    {
        if (streetName.length == 0 && CP3.length == 0)
        {
            alert("Tem que indicar o nome do arruamento ou o codigo postal.");
            
            return false;
        }
        else if(streetName.length < 4 && CP3.length == 0)
        {
            alert("Nome de arruamento muito pequeno.");
            
            return false;
        }      
    }
    
    if (document.getElementById(controlPrefix + "_chkAreaVisivelStreets").checked)
    {
        var MapRange=DoGetMapRange();
        
        geometry = MapRange[0] + " " + MapRange[1] + ", " +
           MapRange[2] + " " + MapRange[1] + ", " +
           MapRange[2] + " " + MapRange[3] + ", " +
           MapRange[0] + " " + MapRange[3] + ", " +
           MapRange[0] + " " + MapRange[1];
           
        geometry = "POLYGON ((" + geometry + "))";
    }    
    
	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}    
	
	if (ADMIN_LEVEL == 1)
    {
        ChangePanelStatusToLoading();
        
	    Geo.AjaxRequests.panelLocations.DoSearchStreets(id, streetName, streetNumber, adminUnit, "", placeName, CP4, CP3, geometry, page, PAGE_RECORDS, lang, controlUpdate, DoSearchStreets_CallBack);
	} else {
	    ChangePanelStatusToLoading();
	
        Geo.AjaxRequests.panelLocations.DoSearchStreets(id, streetName, streetNumber, "", adminUnit, placeName, CP4, CP3, geometry, page, PAGE_RECORDS, lang, controlUpdate, DoSearchStreets_CallBack);	    	 	    
	}
}
function DoSearchStreets_CallBack(response)
{	
    ChangePanelStatusToMain();

	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}

	document.getElementById(response.value[0]).innerHTML = response.value[1];
	
	//Para mostrar logo no painel de informação os dados do primeiro registo devolvido pela pesquisa
	//document.getElementById("info").innerHTML = response.value[2];
    if (document.getElementById("Info") != null)
	{
	    document.getElementById("Info").innerHTML = "";	
	}	
}

function DoShowInfoStreet(ID, controlUpdate)
{
    if (document.getElementById(controlUpdate)== null)
    {
        return;
    }
		
	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}
	
	Geo.forms.searchPanel.DoShowInfoStreet(ID, lang, controlUpdate, DoShowInfoStreet_CallBack);		
}
function DoShowInfoStreet_CallBack(response)
{	
	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}

	document.getElementById(response.value[0]).innerHTML = response.value[1];
}

function ddl_poi_class_onchange(control, controlUpdate, controlID)
{	   
    control.title = control.options[control.selectedIndex].text;
    
	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}    
    
    Geo.AjaxRequests.panelLocations.DoSelectPOIClass(control.options[control.selectedIndex].value, lang, controlUpdate, controlID, DoSelectPOIClass_CallBack);
}
function DoSelectPOIClass_CallBack(response)
{	
	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}

	document.getElementById(response.value[0]).innerHTML = response.value[1];	
}

function ddl_poi_subclass_onchange(control)
{	
    control.title = control.options[control.selectedIndex].text;
}

function btn_searchPOI_onclick(button, controlUpdate)
{
    activePOISearch = null;
	DoSearchPOI(1, controlUpdate)
}
function DoSearchPOI(page, controlUpdate)
{
    var controlPrefix = "";
    controlPrefix = getControlPrefix();
   
    document.getElementById(controlUpdate).innerHTML = "";
    doWaitingSearch(controlUpdate);
    
    var poiID = "";
	var classCod = "";
	var subclassCod = "";
	var poiName = "";
	var poiAddress = "";
	var adminUnit = "";
	var geometry = "";
	
	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}
	
	if (activePOISearch == null)
	{
	    classCod = document.getElementById(controlPrefix + "_ddl_poi_class").value;
	    subclassCod = document.getElementById(controlPrefix + "_ddl_poi_subclass").value;
	    poiName = document.getElementById(controlPrefix + "_txt_poi_name").value;
	    poiAddress = document.getElementById(controlPrefix + "_txt_poi_address").value;
	    adminUnit = document.getElementById(controlPrefix + "_ddl_poi_admin").value;  
	  
        if (document.getElementById(controlPrefix + "_chkAreaVisivelPOI").checked)
        {
            var MapRange=DoGetMapRange();
            
            geometry = MapRange[0] + " " + MapRange[1] + ", " +
               MapRange[2] + " " + MapRange[1] + ", " +
               MapRange[2] + " " + MapRange[3] + ", " +
               MapRange[0] + " " + MapRange[3] + ", " +
               MapRange[0] + " " + MapRange[1];
               
            geometry = "POLYGON ((" + geometry + "))";
        }
        
        activePOISearch = new poiSearch(classCod, subclassCod, poiName, poiAddress, adminUnit, adminUnit, geometry);     
    } else {        
	    classCod = activePOISearch.Class;
	    subclassCod = activePOISearch.SubClass;
	    poiName = activePOISearch.Name;
	    poiAddress = activePOISearch.Address;
	    adminUnit = activePOISearch.MainAdminUnit;
	    geometry = activePOISearch.Geometry;  	    	    	           
    }
   			
	ChangePanelStatusToLoading();
       
    if (ADMIN_LEVEL == 1)
    {
        Geo.AjaxRequests.panelLocations.DoSearchPOI(poiID, classCod, subclassCod, poiName, poiAddress, adminUnit, "", geometry, lang, page, PAGE_RECORDS, controlUpdate, DoSearchPOI_CallBack);        
    } else {
        Geo.AjaxRequests.panelLocations.DoSearchPOI(poiID, classCod, subclassCod, poiName, poiAddress, "", adminUnit, geometry, lang, page, PAGE_RECORDS, controlUpdate, DoSearchPOI_CallBack);
    }

}	
function DoSearchPOI_CallBack(response)
{	
    ChangePanelStatusToMain();

	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}

    if (document.getElementById(response.value[0]) != null)
    {        
	    document.getElementById(response.value[0]).innerHTML = response.value[1];
    }	    
	
	//Para mostrar logo no painel de informação os dados do primeiro registo devolvido pela pesquisa
	//document.getElementById("info").innerHTML = response.value[2];
	if (document.getElementById("Info") != null)
	{
	    document.getElementById("Info").innerHTML = "";	
	}
	
	$(".testepoi").bind("mouseover", function () {
	    var id = "#poi" + $(this).attr("poi"); 
	    	    
	    $(id).children("img").attr("src", "images/map/poi_search_selected.gif");
	    $(id).parent().css("z-index","100000");	       
	    
	    return false;
	  }
	).bind("mouseout", function () {
	    var id = "#poi" + $(this).attr("poi"); 
	    	    	    
	    $(id).children("img").attr("src", "images/map/poi_search2.gif")
	    $(id).parent().css("z-index","");
	    
	    return false;
	  }
	).hoverIntent({
       sensitivity: 1, // number = sensitivity threshold (must be 1 or higher)
       interval: 550, // number = milliseconds for onMouseOver polling interval
       over: showTooltip, // function = onMouseOver callback (required)
       timeout: 0, // number = milliseconds delay before onMouseOut
       out: hideTooltip // function = onMouseOut callback (required)
    });
	
	//Desenhar POI Seleccionados	
	var pois = response.value[3];
	
	var vpois = pois.split("#");
    
    var features = new Array();    
    var num = vpois.length
                               
    features.length = num;
	
	for (i=0; i < num; i++)
	{
	    sData =  vpois[i].split("|");	
	    
	    var feature = new Feature(sData[1], sData[2], null, drawPOIFeature, sData[0], sData);
        
        features[i] = feature;
    }
    
    var feaCol = gMC.doGetFeaturesCollectionById("POI");    
    feaCol.Features = features;
    
    var MapRange = DoGetMapRange();
    
    var tlp = tooltip;

	tlp.width = 300;
	tlp.height = 300;     
    tlp.showPage = "infoPOI.aspx?poiID=";
    tlp.showFunction = showTooltip;
    tlp.hideFunction = hideTooltip;
    tlp.title = "Ponto de Interesse";

    //Desenhar as Features		
    feaCol.Draw(MapRange[0], MapRange[1], MapRange[2], MapRange[3]);
}

function DoSearchPOIByPoint(x, y, buffer, classes, separator, records, controlUpdate)
{
    document.getElementById(controlUpdate).innerHTML = "";
    doWaitingSearch(controlUpdate);

	var mapState = ""
	
	if( document.getElementById(MAPCONTROL + "_map_state") != null)
		mapState = document.getElementById(MAPCONTROL + "_map_state").value;
		
   	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}		

	Geo.forms.searchPanel.DoSearchPOIByPoint(x, y, buffer, classes, separator, records, mapState, lang, controlUpdate, DoSearchPOIByPoint_CallBack);
}
function DoSearchPOIByPoint_CallBack(response)
{	
	if (response == null)
	{
		ChangeToMain();	
		
		return;		
	}
	
	if (response.error != null)
	{
		alert(response.error);
		
		ChangeToMain();	
		
		return;
	}	
	
	if (response.value == null)
	{	
		ChangeToMain();	
		
		return;
	}	

	document.getElementById(response.value[0]).innerHTML = response.value[1];
	
	//Para mostrar logo no painel de informação os dados do primeiro registo devolvido pela pesquisa
	if (document.getElementById("Info") != null)
	{
	    document.getElementById("Info").innerHTML = response.value[2];;	
	}
		
	//Actualiza os controlos do Mapa
	if (response.value[3] != null && response.value[3] != "")
	{
	    document.getElementById(MAPCONTROL + "_map_state").value = response.value[3];
	        
        var feature = new _Feature(response.value[4], response.value[5], null, drawPOISelectedFeature);
    
        gMC.Features = new Array();
        gMC.Features.length = 1;
    
        gMC.Features[0] = feature;  
    
        var MapRange = DoGetMapRange();
    
        //Desenhar as Features
        gMC.doDrawFeatures(MapRange[0], MapRange[1], MapRange[2], MapRange[3]);	    
	}
	    
	ChangeToMain();			
}


function DoSearchPOIByPolygon(polyCoords, classes, separator, page, drawMap, controlUpdate)
{
    document.getElementById(controlUpdate).innerHTML = "";
    doWaitingSearch(controlUpdate);

	var mapState = ""
	
	if (drawMap)
	{
	    if( document.getElementById(MAPCONTROL + "_map_state") != null)
		    mapState = document.getElementById(MAPCONTROL + "_map_state").value;
    }
    
   	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}    

	Geo.forms.searchPanel.DoSearchPOIByPolygon(polyCoords, classes, separator, page, PAGE_RECORDS, drawMap, mapState, lang, controlUpdate, DoSearchPOIByPolygon_CallBack);
}
function DoSearchPOIByPolygon_CallBack(response)
{	
	if (response == null)
	{
		ChangeToMain();	
		
		return;		
	}
	
	if (response.error != null)
	{
		alert(response.error);
		
		ChangeToMain();	
		
		return;
	}	
	
	if (response.value == null)
	{	
		ChangeToMain();	
		
		return;
	}	

	document.getElementById(response.value[0]).innerHTML = response.value[1];
	
	//Para mostrar logo no painel de informação os dados do primeiro registo devolvido pela pesquisa
	//document.getElementById("info").innerHTML = response.value[2];
	if (document.getElementById("Info") != null)
	{
	    document.getElementById("Info").innerHTML = "";	
	}	
	
	//Actualiza o estado do Mapa
	if (response.value.length > 3)
	{	
		var mapValues=new Array();
		mapValues.length=response.value.length-3;	
	
		for (i=3;i<response.value.length;i++)
		{
			mapValues[i-3] = response.value[i];
		}
		
		//Object - Classe definida pelo AjaxPro.Net
		var responseMap = new Object();
	
		responseMap.error = null;
		responseMap.value = mapValues;
		
		updateMapControls(responseMap);
	} else {
		ChangeToMain();
	}
}


function DoShowInfoPOI(id, controlUpdate)
{	
    if (document.getElementById(controlUpdate)== null)
    {
        return;
    }

	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}
	
	Geo.forms.searchPanel.DoShowInfoPOI(id, lang, controlUpdate, DoShowInfoPOI_CallBack);
}
function DoShowInfoPOI_CallBack(response)
{	
	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}
	
	document.getElementById(response.value[0]).innerHTML = response.value[1];
}

function btn_searchItineraries_onclick(button, controlUpdate)
{
	DoSearchItineraries(1, controlUpdate)	
}
function DoSearchItineraries(page, controlUpdate)
{
    var controlPrefix = "";

    if (document.getElementById("panelControlPrefix") != null)
    {
        controlPrefix = document.getElementById("panelControlPrefix").value;
    }
    
    document.getElementById('pnl_Lista_Percurso').style.display = 'none';
    document.getElementById('searchArea41').style.display = 'block';
   
    document.getElementById(controlUpdate).innerHTML = "";
    doWaitingSearch(controlUpdate);

	var adminUnit = "";
	var itineraryType = ""
	var geometry = "";
	
	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}

	adminUnit = document.getElementById(controlPrefix + "_ddl_itinerary_admin").value;  
    itineraryType = document.getElementById(controlPrefix + "_ddl_itinerary_type").value;
	  
    if (document.getElementById(controlPrefix + "_chkAreaVisivel").checked)
    {
        var MapRange=DoGetMapRange();
        
        geometry = MapRange[0] + " " + MapRange[1] + ", " +
           MapRange[2] + " " + MapRange[1] + ", " +
           MapRange[2] + " " + MapRange[3] + ", " +
           MapRange[0] + " " + MapRange[3] + ", " +
           MapRange[0] + " " + MapRange[1];
           
        geometry = "POLYGON ((" + geometry + "))";
    }
   			
	ChangePanelStatusToLoading();
	
	$("#searchArea411").hide(500);
    $("searchHeaderNav").css("background-image","url('http://localhost:2540/Geo/images/page/nav_band_expand.gif')");           	

       
    if (ADMIN_LEVEL == 1)
    {
        Geo.AjaxRequests.panelItineraries.DoSearchItineraries(itineraryType, adminUnit, "", geometry, lang, page, PAGE_RECORDS, controlUpdate, DoSearchItineraries_CallBack);        
    } else {
        Geo.AjaxRequests.panelItineraries.DoSearchItineraries(itineraryType, "", adminUnit, geometry, lang, page, PAGE_RECORDS, controlUpdate, DoSearchItineraries_CallBack);
    }

}	
function DoSearchItineraries_CallBack(response)
{	
    ChangePanelStatusToMain();

	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}

	document.getElementById(response.value[0]).innerHTML = response.value[1];
	
	//Para mostrar logo no painel de informação os dados do primeiro registo devolvido pela pesquisa
	//document.getElementById("info").innerHTML = response.value[2];
	if (document.getElementById("Info") != null)
	{
	    document.getElementById("Info").innerHTML = "";	
	}						
}
function DoShowInfoItinerary(id, controlUpdate)
{
    if (document.getElementById(controlUpdate)== null)
    {
        return;
    }

	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}
	
	document.getElementById("searchArea41").style.display = "none";
	document.getElementById('pnl_Lista_Percurso').style.display = 'block';
	
	Geo.AjaxRequests.panelItineraries.DoShowItineraryInfo(id, lang, controlUpdate, DoShowInfoItinerary_CallBack);
}
function DoShowInfoItinerary_CallBack(response)
{
	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}
	
	//document.getElementById(response.value[0]).innerHTML = response.value[1];
	$("#" + response.value[0]).html(response.value[1]);
	
	$('#searchArea4111').css('display','block');	


	//Para mostrar logo no painel de informação os dados do primeiro registo devolvido pela pesquisa
	//document.getElementById("info").innerHTML = response.value[2];
    if (document.getElementById("Info") != null)
	{
	    document.getElementById("Info").innerHTML = "";	
	}
	
	
	$(".testepoi").bind("mouseover", function () {
	    var id = "#poi" + $(this).attr("poi"); 
	    	    
	    $(id).children("img").attr("src", "images/map/poi_search_selected.gif");
	    $(id).parent().css("z-index","100000");	       
	    
	    return false;
	  }
	).bind("mouseout", function () {
	    var id = "#poi" + $(this).attr("poi"); 
	    	    	    
	    $(id).children("img").attr("src", "images/map/poi_search2.gif")
	    $(id).parent().css("z-index","");
	    
	    return false;
	  }
	);
	
	//Desenhar POI Seleccionados	
	var pois = response.value[2];
	
	var vpois = pois.split("#");        
    var features = new Array();    
    var num = vpois.length
    
    //gMC.POIFeatures.length = num;                         
    features.length = num;
	
	for (i=0; i < num; i++)
	{
	    sData =  vpois[i].split("|");	
	    
	    var feature = new Feature(sData[1], sData[2], null, drawPOIItineraryFeature, sData[0], sData);
        
        //gMC.POIFeatures[i] = feature;                       
        features[i] = feature;
    }
            
    tooltip.showPage = "";
    tooltip.showFunction = highlightTooltip;

    //Desenhar as Features    
    var feaCol = gMC.doGetFeaturesCollectionById("POI");    
    feaCol.Features = features;  
    
    var MapRange = DoGetMapRange();    

    //Desenhar as Features
    feaCol.Draw(MapRange[0], MapRange[1], MapRange[2], MapRange[3]);               	
}

function DoSearchAlgarvianaSectores(page, controlUpdate)
{
    var controlPrefix = "";

    if (document.getElementById("panelControlPrefix") != null)
    {
        controlPrefix = document.getElementById("panelControlPrefix").value;
    }
   
    document.getElementById(controlUpdate).innerHTML = "";
    doWaitingSearch(controlUpdate);

	var adminUnit = "";	
	var geometry = "";
	
	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}
	
	ChangePanelStatusToLoading();
       
    if (ADMIN_LEVEL == 1)
    {
        Geo.AjaxRequests.panelItineraries.DoSearchAlgarvianaSectores("", geometry, lang, page, PAGE_RECORDS, controlUpdate, DoSearchAlgarvianaSectores_CallBack);        
    } else {
        Geo.AjaxRequests.panelItineraries.DoSearchAlgarvianaSectores("", geometry, lang, page, PAGE_RECORDS, controlUpdate, DoSearchAlgarvianaSectores_CallBack);
    }	
}
function DoSearchAlgarvianaSectores_CallBack(response)
{
    ChangePanelStatusToMain();

	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}	

	document.getElementById(response.value[0]).innerHTML = response.value[1];
}

function DoSearchEcovia(page, controlUpdate)
{
    var controlPrefix = "";

    if (document.getElementById("panelControlPrefix") != null)
    {
        controlPrefix = document.getElementById("panelControlPrefix").value;
    }
   
    document.getElementById(controlUpdate).innerHTML = "";
    doWaitingSearch(controlUpdate);

	var adminUnit = "";	
	var geometry = "";
	
	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}
	
	ChangePanelStatusToLoading();
	
	Geo.AjaxRequests.panelItineraries.DoSearchEcovia("F", "F8", "", "", geometry, lang, page, PAGE_RECORDS, controlUpdate, DoSearchPOI_CallBack);
}
function DoSearchEcovia_CallBack(response)
{
    ChangePanelStatusToMain();

	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}	

	$("#" + response.value[0]).html(response.value[1]);
}



function btn_searchPatrimonio_onclick(button, controlUpdate)
{
	DoSearchPatrimonio(1, controlUpdate);	
}
function DoSearchPatrimonio(page, controlUpdate)
{
    var controlPrefix = "";

    if (document.getElementById("panelControlPrefix") != null)
    {
        controlPrefix = document.getElementById("panelControlPrefix").value;
    }
    
    document.getElementById('pnl_Lista_Percurso').style.display = 'none';
    document.getElementById('searchArea31').style.display = 'block';
   
    document.getElementById(controlUpdate).innerHTML = "";
    doWaitingSearch(controlUpdate);

    var patrimName = "";
	var adminUnit = "";
	var patrimClass = ""
	var geometry = "";
	
	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}
    
    patrimName = document.getElementById(controlPrefix + "_txt_patrim_nome").value;
	adminUnit = document.getElementById(controlPrefix + "_ddl_patrim_admin").value;  
    patrimClass = document.getElementById(controlPrefix + "_ddl_patrim_class").value;
	  
    if (document.getElementById(controlPrefix + "_chk_patrim_AreaVisivel").checked)
    {
        var MapRange=DoGetMapRange();
        
        geometry = MapRange[0] + " " + MapRange[1] + ", " +
           MapRange[2] + " " + MapRange[1] + ", " +
           MapRange[2] + " " + MapRange[3] + ", " +
           MapRange[0] + " " + MapRange[3] + ", " +
           MapRange[0] + " " + MapRange[1];
           
        geometry = "POLYGON ((" + geometry + "))";
    }
   			
	ChangePanelStatusToLoading();
	
	$("#searchArea311").hide(500);
    $("searchHeaderNav").css("background-image","url('http://localhost:2540/Geo/images/page/nav_band_expand.gif')");           	
  
    if (ADMIN_LEVEL == 1)
    {
        Geo.AjaxRequests.panelItineraries.DoSearchPatrimonio(patrimName, patrimClass, adminUnit, "", geometry, lang, page, PAGE_RECORDS, controlUpdate, DoSearchPatrimonio_CallBack);        
    } else {
        Geo.AjaxRequests.panelItineraries.DoSearchPatrimonio(patrimName, patrimClass, "", adminUnit, patrimClass, geometry, lang, page, PAGE_RECORDS, controlUpdate, DoSearchPatrimonio_CallBack);
    }

}	
function DoSearchPatrimonio_CallBack(response)
{	
    ChangePanelStatusToMain();

	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}			

	//document.getElementById(response.value[0]).innerHTML = response.value[1];
	$("#" + response.value[0]).html(response.value[1]);
	
	//height: 150px	
	var hh =$("#sidebar").height() - $("#pnl_Header").height() - 5;
	
	//document.getElementById(response.value[0]).style.height = hh + "px";	
	
	//$("#pnl_Lista").height( $("#sidebar").height() - $("#pnl_Header").height() );	
	
	//Para mostrar logo no painel de informação os dados do primeiro registo devolvido pela pesquisa
	//document.getElementById("info").innerHTML = response.value[2];
	if (document.getElementById("Info") != null)
	{
	    document.getElementById("Info").innerHTML = "";	
	}
	
	$(".testepoi").bind("mouseover", function () {
	    var id = "#poi" + $(this).attr("poi"); 
	    	    
	    $(id).children("img").attr("src", "images/map/poi_search_selected.gif");
	    $(id).parent().css("z-index","100000");	       
	    
	    return false;
	  }
	).bind("mouseout", function () {
	    var id = "#poi" + $(this).attr("poi"); 
	    	    	    
	    $(id).children("img").attr("src", "images/map/poi_search2.gif")
	    $(id).parent().css("z-index","");
	    
	    return false;
	  }
	).hoverIntent({	
       sensitivity: 1, // number = sensitivity threshold (must be 1 or higher)
       interval: 550, // number = milliseconds for onMouseOver polling interval
       over: showTooltip, // function = onMouseOver callback (required)
       timeout: 0, // number = milliseconds delay before onMouseOut
       out: hideTooltip // function = onMouseOut callback (required)	
    });
    
	//Desenhar POI Seleccionados	
	var pois = response.value[3];
	
	var vpois = pois.split("#");
    
    var features = new Array();    
    var num = vpois.length                             
    features.length = num;
	
	for (i=0; i < num; i++)
	{
	    sData =  vpois[i].split("|");	
	    
	    var feature = new Feature(sData[1], sData[2], null, drawPOIFeature, sData[0], sData);
        
        features[i] = feature;
    }
     
    var tlp = tooltip; 

	tlp.width = 450;
	tlp.height = 350;           
    tlp.showPage = "infoPatrimonioPOI.aspx?poiID=";
    tlp.showFunction = showTooltip;					
    tlp.title = "Património Cultural";
    
    var feaCol = gMC.doGetFeaturesCollectionById("POI");        
    feaCol.Features = features;      
    
    var MapRange = DoGetMapRange();

    //Desenhar as Features
    feaCol.Draw(MapRange[0], MapRange[1], MapRange[2], MapRange[3]);         
}

function btn_searchEvents_onclick(button, controlUpdate)
{
	DoSearchEvents(1, controlUpdate)	
}
function DoSearchEvents(page, controlUpdate)
{
    var controlPrefix = "";

    if (document.getElementById("panelControlPrefix") != null)
    {
        controlPrefix = document.getElementById("panelControlPrefix").value;
    }
   
    document.getElementById(controlUpdate).innerHTML = "";
    doWaitingSearch(controlUpdate);

    var beginDate = "";
    var endDate = "";
    var domain = ""
	var adminUnit = "";	
	var geometry = "";
	
	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}

    beginDate = document.getElementById(controlPrefix + "_beginDate").value;
    endDate = document.getElementById(controlPrefix + "_endDate").value;
	adminUnit = document.getElementById(controlPrefix + "_ddl_event_admin").value; 
	domain = document.getElementById(controlPrefix + "_ddl_event_domain").value; 
	  
    if (document.getElementById("chkAreaVisivel").checked)
    {
        var MapRange=DoGetMapRange();
        
        geometry = MapRange[0] + " " + MapRange[1] + ", " +
           MapRange[2] + " " + MapRange[1] + ", " +
           MapRange[2] + " " + MapRange[3] + ", " +
           MapRange[0] + " " + MapRange[3] + ", " +
           MapRange[0] + " " + MapRange[1];
           
        geometry = "POLYGON ((" + geometry + "))";
    }
   			
	ChangePanelStatusToLoading();
       
    if (ADMIN_LEVEL == 1)
    {
        Geo.AjaxRequests.panelEvents.DoSearchEvents(beginDate, endDate, domain, adminUnit, "", geometry, lang, page, PAGE_RECORDS, controlUpdate, DoSearchEvents_CallBack);        
    } else {
        Geo.AjaxRequests.panelEvents.DoSearchEvents(beginDate, endDate, domain, "", adminUnit, geometry, lang, page, PAGE_RECORDS, controlUpdate, DoSearchEvents_CallBack);
    }

}	
function DoSearchEvents_CallBack(response)
{	
    ChangePanelStatusToMain();

	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}	

	document.getElementById(response.value[0]).innerHTML = response.value[1];
	
	//height: 150px	
	var hh =$("#sidebar").height() - $("#pnl_Header").height() - 5;
	document.getElementById("pnl_Lista").style.height = hh + "px";	
	//$("#pnl_Lista").height( $("#sidebar").height() - $("#pnl_Header").height() );	
	
	//Para mostrar logo no painel de informação os dados do primeiro registo devolvido pela pesquisa
	//document.getElementById("info").innerHTML = response.value[2];
	if (document.getElementById("Info") != null)
	{
	    document.getElementById("Info").innerHTML = "";	
	}
	
	$(".testepoi").bind("mouseover", function () {
	    var id = "#poi" + $(this).attr("poi"); 
	    	    
	    $(id).children("img").attr("src", "images/map/poi_search_selected.gif");
	    $(id).parent().css("z-index","100000");	       
	    
	    return false;
	  }
	).bind("mouseout", function () {
	    var id = "#poi" + $(this).attr("poi"); 
	    	    	    
	    $(id).children("img").attr("src", "images/map/poi_search2.gif")
	    $(id).parent().css("z-index","");
	    
	    return false;
	  }
	)/*.hoverIntent({
       sensitivity: 1, // number = sensitivity threshold (must be 1 or higher)
       interval: 550, // number = milliseconds for onMouseOver polling interval
       over: showTooltip, // function = onMouseOver callback (required)
       timeout: 0, // number = milliseconds delay before onMouseOut
       out: hideTooltip // function = onMouseOut callback (required)
    })*/;
    
	//Desenhar POI Seleccionados	
	var pois = response.value[3];
	
	var vpois = pois.split("#");
	   
    var features = new Array();    
    var num = vpois.length
    features.length = num                         
	
	for (i=0; i < num; i++)
	{
	    sData =  vpois[i].split("|");	
	    
	    var feature = new Feature(sData[1], sData[2], null, drawPOIFeature, sData[0], sData);
        
        features[i] = feature;                      
    }
       
    tooltip.showPage = "infoEvent.aspx?eventID=";
    tooltip.showFunction = showTooltipEvent;

    //Desenhar as Features        
    var feaCol = gMC.doGetFeaturesCollectionById("POI");    
    feaCol.Features = features;
    
    var MapRange = DoGetMapRange();    

    //Desenhar as Features
    feaCol.Draw(MapRange[0], MapRange[1], MapRange[2], MapRange[3]);            
}


function ddl_cadastro_freguesia_onchange(control, controlUpdate, controlID)
{	   
    control.title = control.options[control.selectedIndex].text;
	    
    Geo.AjaxRequests.panelLocations.DoSelectCadastroFreguesia(control.options[control.selectedIndex].value, controlUpdate, controlID, DoSelectCadastroFreguesia_CallBack);
}
function DoSelectCadastroFreguesia_CallBack(response)
{	
	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}

	document.getElementById(response.value[0]).innerHTML = response.value[1];	
}

function DoZoomSeccao(controlPrefix)
{
    
    var index;

	var seccaoId = "";
	var extent = "";

	if (document.getElementById(controlPrefix + "_ddl_cadastro_seccao") != null)
	{
	
	    index = document.getElementById(controlPrefix + "_ddl_cadastro_seccao").selectedIndex;
	    
	    try
	    {
	        seccaoId = document.getElementById(controlPrefix + "_ddl_cadastro_seccao").options[index].attributes["gid"].value;	       	        
	        
	        extent = document.getElementById(controlPrefix + "_ddl_cadastro_seccao").options[index].attributes["extent"].value;	   	    
	    
            var coords = extent.split(" ");	
                
            DoHilightFeature("seccaoid", seccaoId, coords[0], coords[1], coords[2], coords[3], 100);
        } catch (err) {}        
    }	
}

function DoUpdateLink(controlPrefix, controlUpdate)
{
    if(gIsBusy) return;	
	
    var qstring = "";
    var label = "";
    
    qstring = document.getElementById(controlPrefix + "_lnk_querystring").value;
    label = document.getElementById(controlPrefix + "_txt_area").value;
		
	var lang;
	
	if (document.getElementById("language") != null && document.getElementById("language").value != "")
	{
	    lang = document.getElementById("language").value;
	}		
		
    var data = {
     id: 'link',
     lang: lang,
     qstring: qstring,
     label : label
    };
		
	showPanel('link', data);
}

function DoCopyLink(controlId)
{

    var s = document.getElementById(controlId).innerHTML;

	if( window.clipboardData && clipboardData.setData )
	{
		clipboardData.setData("Text", s);
	}
	else
	{
		// You have to sign the code to enable this or allow the action in about:config by changing
		user_pref("signed.applets.codebase_principal_support", true);
		netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

		var clip = Components.classes["@mozilla.org/widget/clipboard;[[[[1]]]]"].createInstance(Components.interfaces.nsIClipboard);
        if (!clip) return;

		// create a transferable
		var trans = Components.classes['@mozilla.org/widget/transferable;[[[[1]]]]'].createInstance(Components.interfaces.nsITransferable);
		if (!trans) return;

		// specify the data we wish to handle. Plaintext in this case.
		trans.addDataFlavor('text/unicode');

		// To get the data from the transferable we need two new objects
		var str = new Object();
		var len = new Object();

		var str = Components.classes["@mozilla.org/supports-string;[[[[1]]]]"].createInstance(Components.interfaces.nsISupportsString);

		var copytext=meintext;

		str.data=copytext;

		trans.setTransferData("text/unicode",str,copytext.length*[[[[2]]]]);

		var clipid=Components.interfaces.nsIClipboard;

		if (!clip) return false;

		clip.setData(trans,null,clipid.kGlobalClipboard);	   
	}

}