var PANELCONTROL = "panel1" //Nome do objecto do painel da pesquisa
var PAGE_RECORDS = 40;  //Número de registos de cadapágina da pesquisa
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 geomWKT = ""; 
	var id = "";	
	
	placeName = document.getElementById(controlPrefix + "_txt_places_name").value;
	adminUnit = document.getElementById(controlPrefix + "_ddl_places_admin").value;

	
    if (document.getElementById(controlPrefix + "_chkAreaVisivelPlaces").checked)
    {
        geomWKT = map.getExtent().toGeometry().toString();
    } 	
	
	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}

    if (ADMIN_LEVEL == 1)
    {
         ChangePanelStatusToLoading();

         Geo.Plugins.Ajax.panelLocations.DoSearchPlaces(id, placeName, adminUnit, "", geomWKT, page, PAGE_RECORDS, lang, controlUpdate, DoSearchPlaces_CallBack);
	} else {
	     ChangePanelStatusToLoading();

	     Geo.Plugins.Ajax.panelLocations.DoSearchPlaces(id, placeName, "", adminUnit, geomWKT, 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 geomWKT = "";
	
	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)
    {
        geomWKT = map.getExtent().toGeometry().toString();
    }    
    
	var lang = "";
	
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value
	}    
	
	if (ADMIN_LEVEL == 1)
    {
        ChangePanelStatusToLoading();
        
        Geo.Plugins.Ajax.panelLocations.DoSearchStreets(id, streetName, streetNumber, adminUnit, "", placeName, CP4, CP3, geomWKT, page, PAGE_RECORDS, lang, controlUpdate, DoSearchStreets_CallBack);
	} else {
	    ChangePanelStatusToLoading();

	    Geo.Plugins.Ajax.panelLocations.DoSearchStreets(id, streetName, streetNumber, "", adminUnit, placeName, CP4, CP3, geomWKT, 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.Plugins.Ajax.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 geomWKT = "";
	
	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)
        {
            geomWKT = map.getExtent().toGeometry().toString();
        }

        activePOISearch = new poiSearch(classCod, subclassCod, poiName, poiAddress, adminUnit, adminUnit, geomWKT);     
    } else {        
	    classCod = activePOISearch.Class;
	    subclassCod = activePOISearch.SubClass;
	    poiName = activePOISearch.Name;
	    poiAddress = activePOISearch.Address;
	    adminUnit = activePOISearch.MainAdminUnit;
	    geomWKT = activePOISearch.Geometry;  	    	    	           
    }
   			
	ChangePanelStatusToLoading();
       
    if (ADMIN_LEVEL == 1)
    {
        Geo.Plugins.Ajax.panelLocations.DoSearchPOI(poiID, classCod, subclassCod, poiName, poiAddress, adminUnit, "", geomWKT, lang, page, PAGE_RECORDS, controlUpdate, DoSearchPOI_CallBack);        
    } else {
        Geo.Plugins.Ajax.panelLocations.DoSearchPOI(poiID, classCod, subclassCod, poiName, poiAddress, "", adminUnit, geomWKT, 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 = "";	
	}

	$j(".testepoi").bind("mouseover", function() {
	    var id = "poi_" + $j(this).attr("poi");

	    var featuresLayer = map.getLayersByName("features")[0];

	    var feature = featuresLayer.getFeatureById(id);

	    if (feature != null && feature != undefined) {
	        featuresLayer.drawFeature(feature, style_mark_sel);
	    }

	    return false;
	}
	).bind("mouseout", function() {
	    var id = "poi_" + $j(this).attr("poi");

	    var featuresLayer = map.getLayersByName("features")[0];

	    var feature = featuresLayer.getFeatureById(id);

	    if (feature != null && feature != undefined) {
	        featuresLayer.drawFeature(feature, style_mark);
	    }

	    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)
	//	    over: function() { showTooltip({ poiID: $j(this).attr("poi"), lang: 'pt' }); }, // function = onMouseOver callback (required)
	//	    timeout: 0, // number = milliseconds delay before onMouseOut
	//	    out: null// function = onMouseOut callback (required)
	//	}
    );



	var layer = map.getLayersByName("features")[0];

	layer.destroyFeatures();

	var pois = response.value[3];
		
	var vpois = pois.split("#");
	       
	var num = vpois.length	                               

	var point;
	var feature;
		
	for (i=0; i < num; i++)
	{
	    sData =  vpois[i].split("|");

	    point = new OpenLayers.Geometry.Point(sData[1], sData[2]);
	    
	    feature = new OpenLayers.Feature.Vector(point, { type: 0 }, style_mark);
	    feature.id = "poi_" + sData[0];

	    var popupHTML = "<div style='font-size:.8em'>" + "<br />" + sData[5] + "<br />" + "</div>";
	    feature.data = { html: popupHTML };	    

	    layer.addFeatures([feature]);
    }
}

function ddl_cadastro_freguesia_onchange(control, controlUpdate, controlID)
{	   
    control.title = control.options[control.selectedIndex].text;

    if (ADMIN_LEVEL == 1) {
        Geo.Plugins.Ajax.panelLocations.DoSelectCadastroFreguesia(adminUnit, control.options[control.selectedIndex].value, controlUpdate, controlID, DoSelectCadastroFreguesia_CallBack);
    } else {
        Geo.Plugins.Ajax.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 btn_searchCadastro_onclick(button, controlUpdate) {
    DoSearchPrediosCadastro(1, controlUpdate)
}
function DoSearchPrediosCadastro(page, controlUpdate) {
    var controlPrefix = "";
    controlPrefix = getControlPrefix();

    document.getElementById(controlUpdate).innerHTML = "";
    doWaitingSearch(controlUpdate);

    var freguesia = "";
    var seccao = "";
    var predio = "";
    var geomWKT = "";

    var adminUnit = "";

    var id = "";

    if (document.getElementById(controlPrefix + "_ddl_cadastro_freguesia") != null) {
        freguesia = document.getElementById(controlPrefix + "_ddl_cadastro_freguesia").value;
    }
    if (document.getElementById(controlPrefix + "_ddl_cadastro_seccao") != null) {
        seccao = document.getElementById(controlPrefix + "_ddl_cadastro_seccao").value;
    }
    if (document.getElementById(controlPrefix + "_txt_cadastro_predio") != null) {
        predio = trim(document.getElementById(controlPrefix + "_txt_cadastro_predio").value);
    }


    if (document.getElementById(controlPrefix + "_chkAreaVisivelCadastro").checked) {   
        geomWKT = map.getExtent().toGeometry().toString();
    }

    var lang = "";

    if (document.getElementById("language") != null && document.getElementById("language").value != "") {
        lang = document.getElementById("language").value
    }

    if (ADMIN_LEVEL == 1) {
        ChangePanelStatusToLoading();

        Geo.Plugins.Ajax.panelLocations.DoSearchPrediosCadastro(id, predio, seccao, freguesia, adminUnit, geomWKT, page, PAGE_RECORDS, lang, controlUpdate, DoSearchPrediosCadastro_CallBack);
    } else {
        ChangePanelStatusToLoading();

        Geo.Plugins.Ajax.panelLocations.DoSearchPrediosCadastro(id, predio, seccao, freguesia, adminUnit, geomWKT, page, PAGE_RECORDS, lang, controlUpdate, DoSearchPrediosCadastro_CallBack);
    }        
}
function DoSearchPrediosCadastro_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 = "";
    }

    $j(".testepoi").bind("mouseover", function() {
        var id = "predios_" + $j(this).attr("poi");

        var featuresLayer = map.getLayersByName("features")[0];

        var feature = featuresLayer.getFeatureById(id);

        if (feature != null) {
            featuresLayer.drawFeature(feature, style_mark_sel);
        }
    }
	).bind("mouseout", function() {
	    var id = "predios_" + $j(this).attr("poi");

	    var featuresLayer = map.getLayersByName("features")[0];

	    var feature = featuresLayer.getFeatureById(id);

	    if (feature != null) {
	        featuresLayer.drawFeature(feature, style_mark);
	    }
	}
    );


    var layer = map.getLayersByName("features")[0];

    layer.destroyFeatures();

    var pois = response.value[3];

    var vpois = pois.split("#");

    var num = vpois.length

    var point;
    var feature;

    for (i = 0; i < num; i++) {
        sData = vpois[i].split("|");

        point = new OpenLayers.Geometry.Point(sData[1], sData[2]);
        
        feature = new OpenLayers.Feature.Vector(point, { type: 0 }, style_mark);
        feature.id = "predios_" + sData[0];

        var popupHTML = "<div style='font-size:.8em'>Freguesia: " + sData[5] + "<br />";
        popupHTML += "Sec&ccedil;&atilde;o: " + sData[4] + "<br />";
        popupHTML += "Pr&eacute;dio: " + sData[3] + "</div>";

        feature.data = { html: popupHTML };             

        layer.addFeatures([feature]);
    }

}


function btn_searchObras_onclick(button, controlUpdate) {
    DoSearchObras(1, controlUpdate)
}

function DoSearchObras(page, controlUpdate) {
    var controlPrefix = "";
    controlPrefix = getControlPrefix(searchAreasUrbanismo);

    document.getElementById(controlUpdate).innerHTML = "";
    doWaitingSearch(controlUpdate);

    var id = "";
    var procObra = "";
    var tipoProc = "";
    var adminUnit = "";
    var geomWKT = "";

    procObra = document.getElementById(controlPrefix + "_txt_proc_obra").value;

    if (document.getElementById(controlPrefix + "_chkAreaVisivelProcObra").checked) {
        geomWKT = map.getExtent().toGeometry().toString();
    }

    var lang = "";

    if (document.getElementById("language") != null && document.getElementById("language").value != "") {
        lang = document.getElementById("language").value
    }


    Geo.Plugins.Ajax.panelUtils.DoSearchObras(id, procObra, tipoProc, adminUnit, "", geomWKT, page, PAGE_RECORDS, lang, controlUpdate, DoSearchObras_CallBack);
//    if (ADMIN_LEVEL == 1) {
//        Geo.Plugins.Ajax.panelLocations.DoSearchObras(id, procObra, adminUnit, "", geomWKT, page, PAGE_RECORDS, lang, controlUpdate, DoSearchObras_CallBack);
//    } else {
//        Geo.Plugins.Ajax.panelLocations.DoSearchObras(id, procObra, "", adminUnit, geomWKT, page, PAGE_RECORDS, lang, controlUpdate, DoSearchObras_CallBack);
//    }
}
function DoSearchObras_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 = "";
    }

    $j(".testepoi").bind("mouseover", function() {
        var id = "obras_" + $j(this).attr("poi");

        var featuresLayer = map.getLayersByName("features")[0];

        var feature = featuresLayer.getFeatureById(id);

        if (feature != null) {
            featuresLayer.drawFeature(feature, style_mark_sel);
        }
    }
	).bind("mouseout", function() {
	    var id = "obras_" + $j(this).attr("poi");

	    var featuresLayer = map.getLayersByName("features")[0];

	    var feature = featuresLayer.getFeatureById(id);

	    if (feature != null) {
	        featuresLayer.drawFeature(feature, style_mark);
	    }
	}
    );


    var layer = map.getLayersByName("features")[0];

    layer.destroyFeatures();

    var pois = response.value[3];

    var vpois = pois.split("#");

    var num = vpois.length

    var point;
    var feature;

    for (i = 0; i < num; i++) {
        sData = vpois[i].split("|");

        point = new OpenLayers.Geometry.Point(sData[1], sData[2]);

        feature = new OpenLayers.Feature.Vector(point, { type: 0 }, style_mark);
        feature.id = "obras_" + sData[0];

        var popupHTML = "<div style='font-size:.8em'>Processo: " + sData[3] + "<br />";
        popupHTML += "Tipo: " + sData[4] + "</div>";

        feature.data = { html: popupHTML };

        layer.addFeatures([feature]);
    }    
    
}



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);	   
	}

}




function ddl_CoordSys_onchange(obj) {
    var coordSys = obj.value;

    $j(".txtCoords").css("display", "none");
    $j("#pnl_Coordenadas").html("");
    $j("#coordM").attr("value", "");
    $j("#coordP").attr("value", "");

    if (coordSys == "4326") {
        $j("#coordsLatLon").css("display", "block");
    } else {
        $j("#coordsXY").css("display", "block");
    }
}
function btn_trans_coord_onclick() {

    var controlPrefix = "";

    if (document.getElementById("panelControlPrefix") != null) {
        controlPrefix = document.getElementById("panelControlPrefix").value;
    }
    $j("#pnl_Coordenadas").html("");

    var coordSys = $j("#" + controlPrefix + "_ddl_CoordSys").attr("value");

    var x = "0";
    var y = "0";

    var gg = "";
    var mm = "";
    var ss = "";

    var lang = "";

    if (document.getElementById("language") != null && document.getElementById("language").value != "") {
        lang = document.getElementById("language").value
    }

    if (coordSys != "4326") {
        x = ($j("#coordM").attr("value") != null) ? $j("#coordM").attr("value") : "";
        y = ($j("#coordP").attr("value") != null) ? $j("#coordP").attr("value") : "";

        if (!isNumber(x) || !isNumber(y)) {
            return false;
        }
    } else {
        gg = ($j("#lonGG").attr("value") != null) ? $j("#lonGG").attr("value") : "";
        mm = ($j("#lonMM").attr("value") != null) ? $j("#lonMM").attr("value") : "";
        ss = ($j("#lonSS").attr("value") != null) ? $j("#lonSS").attr("value") : "";

        if (!isNumber(gg) || !isNumber(mm) || !isNumber(ss)) {
            return false;
        }

        x = Math.abs(parseInt(gg));
        x = (x + (parseInt(mm) / 60) + (parseFloat(ss) / 60 / 60)) * -1;

        gg = ($j("#latGG").attr("value") != null) ? $j("#latGG").attr("value") : "";
        mm = ($j("#latMM").attr("value") != null) ? $j("#latMM").attr("value") : "";
        ss = ($j("#latSS").attr("value") != null) ? $j("#latSS").attr("value") : "";

        if (!isNumber(gg) || !isNumber(mm) || !isNumber(ss)) {
            return false;
        }

        y = Math.abs(parseInt(gg));
        y = y + (parseInt(mm) / 60) + (parseFloat(ss) / 60 / 60);
    }

    ChangePanelStatusToLoading();
    doWaitingSearch("pnl_Coordenadas");

    Geo.Plugins.Ajax.panelCoordinates.DoTransformCoordinates(x, y, coordSys, lang, DoBtnTransCoord_CallBack);
}
function btn_zoom_coord_onclick() {
    //if (gMC.IsBusy) return;

    var controlPrefix = "";

    if (document.getElementById("panelControlPrefix") != null) {
        controlPrefix = document.getElementById("panelControlPrefix").value;
    }

    var coordSys = $j("#" + controlPrefix + "_ddl_CoordSys").attr("value");

    var x = "0";
    var y = "0";

    var lang = "";

    if (document.getElementById("language") != null && document.getElementById("language").value != "") {
        lang = document.getElementById("language").value
    }

    if (coordSys != "4326") {
        x = $j("#coordM").attr("value");
        y = $j("#coordP").attr("value");
    } else {
        var gg = $j("#lonGG").attr("value");
        var mm = $j("#lonMM").attr("value");
        var ss = $j("#lonSS").attr("value");

        x = Math.abs(parseInt(gg));
        x = (x + (parseInt(mm) / 60) + (parseFloat(ss) / 60 / 60)) * -1;

        gg = $j("#latGG").attr("value");
        mm = $j("#latMM").attr("value");
        ss = $j("#latSS").attr("value");

        y = Math.abs(parseInt(gg));
        y = y + (parseInt(mm) / 60) + (parseFloat(ss) / 60 / 60);
    }

    if (coordSys != MAP_COORD_SYS) {
        ChangePanelStatusToLoading();
    
        Geo.Plugins.Ajax.panelCoordinates.DoTransformCoordinates(x, y, coordSys, lang, DoTransformCoordinate_CallBack);
    } else {
        var data = { error: null, value: ["", x, y] };

        DoTransformCoordinate_CallBack(data);
    }
}

function DoTransformCoordinates(worldX, worldY) {
    var coordSys = MAP_COORD_SYS;

    showPanel('coordinates', null, 'west');

    var lang = "";

    var panelPrefix = document.getElementById("panelControlPrefix").value;

    if (document.getElementById("language") != null && document.getElementById("language").value != "") {
        lang = document.getElementById("language").value
    }

    if (document.getElementById(panelPrefix + "_ddl_CoordSys") != null) {

        //document.getElementById(panelPrefix + "_ddl_CoordSys").value = coordSys;
        $j("#" + panelPrefix + "_ddl_CoordSys").attr("value", coordSys)

        ddl_CoordSys_onchange(document.getElementById(panelPrefix + "_ddl_CoordSys"));

        $j("#coordM").attr("value", worldX.toFixed(3));
        $j("#coordP").attr("value", worldY.toFixed(3));
    }

    var layer = map.getLayersByName("edition")[0];

    var point = new OpenLayers.Geometry.Point(worldX, worldY);
    var feature = new OpenLayers.Feature.Vector(point, { type: 0 });

    layer.destroyFeatures();    
    layer.addFeatures([feature]);

    ChangePanelStatusToLoading();
    doWaitingSearch("pnl_Coordenadas");

    Geo.Plugins.Ajax.panelCoordinates.DoTransformCoordinates(worldX, worldY, coordSys, lang, DoTransformCoordinates_CallBack);
}


function DoTransformCoordinate_CallBack(response) {

    ChangePanelStatusToMain();

    if (response == null) {
        ChangeToMain();

        return;
    }

    if (response.error != null) {
        ChangeToMain();

        return;
    }

    if (response.value == null) {
        ChangeToMain();

        return;
    }

    if (response.value[0] != "") {
        document.getElementById("pnl_Coordenadas").innerHTML = response.value[0];
    }

    var x = response.value[1];
    var y = response.value[2];

    var layer = map.getLayersByName("edition")[0];

    var point = new OpenLayers.Geometry.Point(x, y);
    var feature = new OpenLayers.Feature.Vector(point, { type: 0 });

    layer.addFeatures([feature]);

    DoZoomLoc(x, y, false, ZOOM_LEVEL_POI)
}

function DoTransformCoordinates_CallBack(response) {
    if (response == null) {
        ChangeToMain();

        return;
    }

    if (response.error != null) {
        ChangeToMain();

        return;
    }

    if (response.value == null) {
        ChangeToMain();

        return;
    }

    var shtml = response.value[0];

    document.getElementById("pnl_Coordenadas").innerHTML = shtml;

    $j("#searchArea1").hide(500);
    $j(".searchHeaderNav").css("background-image", "url('images/page/nav_band_expand.gif')");
}
function DoBtnTransCoord_CallBack(response) {
    if (response == null) {
        ChangeToMain();

        return;
    }

    if (response.error != null) {
        ChangeToMain();

        return;
    }

    if (response.value == null) {
        ChangeToMain();

        return;
    }

    var shtml = response.value[0];

    document.getElementById("pnl_Coordenadas").innerHTML = shtml;
}

