//Nome do objecto do painel da pesquisa
var PANELCONTROL = "panel1"

//Número de registos de cadapágina da pesquisa
var PAGE_RECORDS = 20;

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)
{    
    document.getElementById(controlUpdate).innerHTML = "";

	var placeName = "";
	var adminUnit = "";	
	
	placeName = document.getElementById(controlPrefix + "_txt_places_name").value;
	adminUnit = document.getElementById(controlPrefix + "_ddl_places_admin").value;

    if (ADMIN_LEVEL == 1)
    {
         ChangePanelStatusToLoading();
    
	    MapaInteractivo.forms.searchPanel.DoSearchPlaces(placeName, adminUnit, "", page, PAGE_RECORDS, controlUpdate, DoSearchPlaces_CallBack);
	} else {
	     ChangePanelStatusToLoading();
	
	    MapaInteractivo.forms.searchPanel.DoSearchPlaces(placeName, "", adminUnit, page, PAGE_RECORDS, 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 = 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];
	document.getElementById("info").innerHTML = "";	
}


function btn_searchStreets_onclick(button, controlUpdate)
{
	DoSearchStreets(1, controlUpdate)
}
function DoSearchStreets(page, controlUpdate)
{
    document.getElementById(controlUpdate).innerHTML = "";

	var streetName = "";
	var adminUnit= "";
	var placeName = "";
	
	var streetNumber = "";
	var CP4 = "";
	var CP3 = ""
	
	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 (ADMIN_LEVEL == 1)
    {
        ChangePanelStatusToLoading();
        
	    //MapaInteractivo.forms.searchPanel.DoSearchStreets(streetName, adminUnit, "", placeName, page, PAGE_RECORDS, controlUpdate, DoSearchStreets_CallBack);
	    MapaInteractivo.forms.searchPanel.DoSearchStreets(streetName, streetNumber, adminUnit, "", placeName, CP4, CP3, page, PAGE_RECORDS, controlUpdate, DoSearchStreets_CallBack);
	} else {
	    ChangePanelStatusToLoading();
	
	    //MapaInteractivo.forms.searchPanel.DoSearchStreets(streetName, "", adminUnit, placeName, page, PAGE_RECORDS, controlUpdate, DoSearchStreets_CallBack);
        MapaInteractivo.forms.searchPanel.DoSearchStreets(streetName, streetNumber, "", adminUnit, placeName, CP4, CP3, page, PAGE_RECORDS, 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];
	document.getElementById("info").innerHTML = "";	
}

function DoShowInfoStreet(ID, controlUpdate)
{	
	MapaInteractivo.forms.searchPanel.DoShowInfoStreet(ID, 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)
{	
	MapaInteractivo.forms.searchPanel.DoSelectPOIClass(control.options[control.selectedIndex].value, controlUpdate, 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]).outerHTML = response.value[1];	
}

function btn_searchPOI_onclick(button, controlUpdate)
{
	DoSearchPOI(1, controlUpdate)
}
function DoSearchPOI(page, controlUpdate)
{
    document.getElementById(controlUpdate).innerHTML = "";

	var classCod = "";
	var subclassCod = "";
	var poiName = "";
	var poiAddress = "";
	var adminUnit = "";

	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;
	
	ChangePanelStatusToLoading();

	if (ADMIN_LEVEL == 1)
    {        
	    MapaInteractivo.forms.searchPanel.DoSearchPOI(classCod, subclassCod, poiName, poiAddress, adminUnit, "", page, PAGE_RECORDS, controlUpdate, DoSearchPOI_CallBack);
	} else {
	    MapaInteractivo.forms.searchPanel.DoSearchPOI(classCod, subclassCod, poiName, poiAddress, "", adminUnit, 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;
	}

	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];
	document.getElementById("info").innerHTML = "";
}

function DoSearchPOIByPoint(x, y, buffer, classes, separator, records, controlUpdate)
{
    document.getElementById(controlUpdate).innerHTML = "";

	var mapState = ""
	
	if( document.getElementById(MAPCONTROL + "_map_state") != null)
		mapState = document.getElementById(MAPCONTROL + "_map_state").value;

	MapaInteractivo.forms.searchPanel.DoSearchPOIByPoint(x, y, buffer, classes, separator, records, mapState, 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
	document.getElementById("info").innerHTML = response.value[2];
	//document.getElementById("info").innerHTML = "";	
	
	
	//Actualiza os controlos do Mapa
	if (response.value.length > 3)
	{
		var mapValues=new Array();
		mapValues.length=10;	
	
		for (i=3;i<13;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 DoSearchPOIByPolygon(polyCoords, classes, separator, page, drawMap, controlUpdate)
{
    document.getElementById(controlUpdate).innerHTML = "";

	var mapState = ""
	
	if (drawMap)
	{
	    if( document.getElementById(MAPCONTROL + "_map_state") != null)
		    mapState = document.getElementById(MAPCONTROL + "_map_state").value;
    }

	MapaInteractivo.forms.searchPanel.DoSearchPOIByPolygon(polyCoords, classes, separator, page, PAGE_RECORDS, drawMap, mapState, 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];
	document.getElementById("info").innerHTML = "";	
	
	
	//Actualiza os controlos do Mapa
	if (response.value.length > 3)
	{
		var mapValues=new Array();
		mapValues.length=10;	
	
		for (i=3;i<13;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)
{	
	MapaInteractivo.forms.searchPanel.DoShowInfoPOI(id, 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];
}