﻿var pageTitle = "";
var activePlantasSearchArea = "";

function DoGetPageTitle()
{
    return pageTitle;
}

function DoGetMapLayers() {

    var layers = ""; 
    
    layers = getAllVisibleLayers();

    return layers;
}

function btn_print_plantas_onclick(tipo, controlUpdate)
{
    pageTitle = "";
    
    //activePlantasSearchArea = "searchArea" + tipo;

    if (tipo == "0")
    {
        DoPlantasGoBack();
    }
    else if (tipo == "1")
    {
        DoPlantasUrbanismo(controlUpdate);
    } else if (tipo == "2") {
        DoPlantasPlanos(controlUpdate);
    } else if (tipo == "3") {
        DoShowPlantaSimples(); 
    }
}

function DoPlantasUrbanismo(controlUpdate) {
       
    var tipo="";
    var nomeReq="";
    var nifReq="";
    var geometry="";
    var layers = "planossel";   
               
	var lang = "";	
		
	tipo = "g" + document.getElementById("ddl_tipoPlanta").value;
	
		
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value;
	}
	
	if (document.getElementById("txtPlantaNomeReq") != null && document.getElementById("txtPlantaNomeReq").value!= "")
	{
        nomeReq = document.getElementById("txtPlantaNomeReq").value;
    }	
	
	if (document.getElementById("txtPlantaNIFReq") != null && document.getElementById("txtPlantaNIFReq").value!= "")
	{
        nifReq = document.getElementById("txtPlantaNIFReq").value;
    }

    geometry = DoGetFeaturesGeometry();

    if (geometry != null && geometry.length > 0 && geometry.slice(0, 7) != "POLYGON" && geometry.slice(0, 12) != "MULTIPOLYGON") {
        geometry = "";
    }                    
    
    var errorMsg = "";
    
    if (nomeReq == null || nomeReq.length == 0)
    {
        errorMsg = "<div style='color: red'>- Nome de Requerente incorrecto.</div>";                
    }          
    if (!validarNIF(nifReq))
    {
        errorMsg = errorMsg +  "<div style='color: red'>- Número de Contribuinte incorrecto.</div>";                        
    }
    if (geometry == null || geometry.length == 0)
    {
        errorMsg = errorMsg + "<div style='color: red'>- Tem que delimitar no mapa a área da pretensão.</div>";
    }    
        
    if (errorMsg != null && errorMsg.length > 0)
    {
        document.getElementById(controlUpdate).innerHTML = errorMsg;
    } else {

        document.getElementById("searchArea1").style.display = "none";
        doWaitingSearch(controlUpdate);

        try {
            var ctrl = this.map.getControlsBy("id", "ctrlModifyPolygon")[0];
            if (ctrl.active) ctrl.deactivate();
        } catch (err) { }        

        Geo.Plugins.Ajax.panelPlantas.DoPlantasArea(tipo, nomeReq, nifReq, layers, geometry, ADMIN_UNIT, lang, controlUpdate, DoPlantasUrbanismo_CallBack);
    }
    
}
function DoPlantasUrbanismo_CallBack(response)
{
    ChangePanelStatusToMain();

	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}
	
	document.getElementById("searchArea1").style.display = "none";		
	
	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 DoPlantasPlanos(controlUpdate) {

    var tipo="";
    var geometry="";
    var layers = "planossel";

	var lang = "";
		
	tipo = "g" + document.getElementById("ddl_tipoPlanta").value;
		
	if (document.getElementById("language") != null && document.getElementById("language").value!= "")
	{	
	    lang = document.getElementById("language").value;
	}

	geometry = DoGetFeaturesGeometry();

	if (geometry != null && geometry.length > 0 && geometry.slice(0, 7) != "POLYGON" && geometry.slice(0, 12) != "MULTIPOLYGON") {
	    geometry = "";
	}
    
    var errorMsg = "";
    
    if (geometry == null || geometry.length == 0)
    {
        errorMsg = errorMsg + "<div style='color: red'>- Tem que delimitar no mapa a área da pretensão.</div>";
    }
        
    if (errorMsg != null && errorMsg.length > 0)
    {
        document.getElementById(controlUpdate).innerHTML = errorMsg;
    } else {
        document.getElementById("searchArea2").style.display = "none";
        doWaitingSearch(controlUpdate);

        try {
            var ctrl = this.map.getControlsBy("id", "ctrlModifyPolygon")[0];
            if (ctrl.active) ctrl.deactivate();
        } catch (err) { }

        Geo.Plugins.Ajax.panelPlantas.DoPlantasArea(tipo, "", "", layers, geometry, ADMIN_UNIT, lang, controlUpdate, DoPlantasPlanos_CallBack);
    }
    
}
function DoPlantasPlanos_CallBack(response)
{
    ChangePanelStatusToMain();

	if (response == null){	
		
		return;
	}

	if (response.error != null){
	
		alert(response.error);
		return;
	}
	
	if (response.value == null){	
		
		return;
	}
	
	document.getElementById("searchArea2").style.display = "none";
	
	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 ddl_pageFormat_onchange() {

    var tipo = "g" + document.getElementById("ddl_tipoPlanta").value;
    var format = document.getElementById("ddl_pageFormat").value;
    var lang = "";
    var handleID = "div_ddl_pageOrientation";
    var controlID = "ddl_pageOrientation";

    Geo.Plugins.Ajax.panelPlantas.DoSelectPageFormat(tipo, format, lang, handleID, controlID, DoSelectPageFormat_CallBack)
}
function DoSelectPageFormat_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 DoShowPlanta(grupo, key, numero, ano) {

    //var mapGeometry = DoGetFeaturesGeometry();

    var legenda = "";
    var pageFormat = "";
    var pageOrientation;

    //var url = "/App_Resource/Geo.Plugins/Geo.Plugins.View.planta.aspx?grupo=" + grupo + "&key=" + key + "&numero=" + numero + "&ano=" + ano + "&mapGeometry=" + mapGeometry + "&featuresGeometry=";
    var url = "/App_Resource/Geo.Plugins/Geo.Plugins.View.planta.aspx?grupo=" + grupo + "&key=" + key + "&numero=" + numero + "&ano=" + ano;  // + "&mapGeometry=" + mapGeometry + "&featuresGeometry=";

    if ($j("#chk_legenda").attr("checked") == true) {
        url = url + "&legenda=true";
    }

    if (document.getElementById("ddl_pageFormat") != null) {
        url = url + "&format=" + document.getElementById("ddl_pageFormat").value;
    }

    if (document.getElementById("ddl_pageOrientation") != null) {
        url = url + "&orientation=" + document.getElementById("ddl_pageOrientation").value;
    }
       
    window.open(url);
}
function DoShowPlantaSimples(group, key) {

    var url = "/App_Resource/Geo.Plugins/Geo.Plugins.View.planta.aspx?mapGeometry="

    var scale = "";

    if (document.getElementById("ddl_scalePlanta") != null) {
        scale = document.getElementById("ddl_scalePlanta").value;

        if (scale == "mapa") {
            scale = map.getScale();
        }
        
        url = url + "&scale=" + scale;
    }        

    url = url + "&mapExtent=" + map.getExtent().toGeometry().toString();
        
    if (document.getElementById("ddl_formatPlanta") != null)
    {
        url = url + "&format=" + document.getElementById("ddl_formatPlanta").value;
    }
    
    if (document.getElementById("ddl_orientationPlanta") != null)
    {    
        url = url + "&orientation=" + document.getElementById("ddl_orientationPlanta").value;
    }

    if (group != null && group != undefined) {
        url = url + "&grupo=" + group;
    }

    if (key != null && key != undefined) {
        url = url + "&key=" + key;
    }

    if (document.getElementById("txt_pageTitle") != null) {
        pageTitle = document.getElementById("txt_pageTitle").value;
    } else {
        pageTitle = "";
    }
    
    
    window.open(url);
}

function validarNIF(nif)
{
    var chkDigit;

    if (nif.length == 9)
    {
        var c = nif.substr(0,1);
        
        if (c=="1" || c=="2" || c=="5" || c=="6" || c=="8" || c=="9") //dígitos iniciais válidos
        {
            chkDigit = (c - "0") * 9;
            
            for (i=2;i<=8;i++)
            {
                chkDigit = chkDigit + (nif.substr(i-1,1) - "0") * (10-i);
            }
               
            chkDigit = 11 - (chkDigit % 11);
                
            if (chkDigit >= 10)
                chkDigit = 0;
            
            if (chkDigit == (nif.substr(8,1) - "0"))
                return true;
        
        }
     }
        
     return false;
}

function DoLocalizarPretensao(geomstring)
{
    var extent = wkt_trans.read(geomstring);

    map.zoomToExtent(extent.geometry.getBounds());
}

function DoPlantasGoBack()
{
    var ctlId = "searchArea" + document.getElementById("ddl_tipoPlanta").value;

    document.getElementById("pnl_Lista").innerHTML = "";
    
    if(document.getElementById(ctlId) != null)
    {
        document.getElementById(ctlId).style.display = "block"
    }
}

function DoDrawPlantasPolygon()
{
    if ($("#sidebar").attr("panel") == "plantas")
    {
        DoPlantasGoBack();
    }

    DoDrawPolygon(true);
}


function DoGetFeaturesGeometry() {
   
    var geomWKT = null;
    
    var layer = map.getLayersByName('edition')[0];

    if (layer.features.length > 0) {
       geomWKT  = wkt_trans.write(layer.features[0]);
    }

    return geomWKT;
}