//FUNCTIONS USED IN CALCULATOR
  
  function upRadPre(object){
    if (object.name == "radProTot"){
      formCalculo.radFraPro.checked=false;
    }else if (object.name == "radFraPro"){
      formCalculo.radProTot.checked=false;
    }
    formCalculo.submit();
  }

  function upRadOut(object){
    if (object.name == "radEdifica"){
      formCalculo.radMetCus.checked=false;
      formCalculo.radTerSemCapCons.checked=false;
      formCalculo.radRuinas.checked=false;
    }else if (object.name == "radMetCus"){
      formCalculo.radEdifica.checked=false;
      formCalculo.radTerSemCapCons.checked=false;
      formCalculo.radRuinas.checked=false;
    }else if (object.name == "radTerSemCapCons"){
      formCalculo.radEdifica.checked=false;
      formCalculo.radMetCus.checked=false;
      formCalculo.radRuinas.checked=false;
    }else if (object.name == "radRuinas"){
      formCalculo.radEdifica.checked=false;
      formCalculo.radMetCus.checked=false;
      formCalculo.radTerSemCapCons.checked=false;
    }
    formCalculo.submit();
  }

  //VALIDA FORM
  function validateForm(frm){
    var bolError= false;
    var elm = frm.elements;
    for(var i = 0; i < elm.length; i++){
      var el = elm[i];
      if(el.name=="txtAreBruCons"){
        if (validateInput(el, 1, 99999999.9999,"Área bruta de construção") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtAreBruDep"){
        if (validateInput(el, 0, 99999999.9999,"Área bruta dependente") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtAreBruDepFra"){
        if (validateInput(el, 0, 99999999.9999,"Área bruta dependente da fracção") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtAreBruPri"){
        if (validateInput(el, 1, 99999999.9999,"Área bruta privativa") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtAreBruPriFra"){
        if (validateInput(el, 1, 99999999.9999,"Área bruta privativa da fracção") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtAreImp"){
        if (validateInput(el, 1, 99999999.9999,"Área de implantação") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtAreImpEdi"){
        if (validateInput(el, 1, 99999999.9999,"Área de implantação do edificio no terreno") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtAreTer"){
        if (validateInput(el, 1, 99999999.9999,"Área do terreno") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtAreTerIntFra"){
        if (validateInput(el, 0, 99999999.9999,"Área do terreno integrante da fracção") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtAreTot"){
        if (validateInput(el, 1, 99999999.9999,"Área total") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtCoeLoc"){
        if (validateInput(el, 0.35, 3.00,"Coeficiente de localização") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtEstDefCons"){
         if (validateInput(el, 0.00, 0.05,"Estado deficiente de conservação") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtEstDefConsHab"){
         if (validateInput(el, 0.00, 0.05,"Estado deficiente de conservação") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtIdade"){
        if (validateInput(el, 0, 999,"Idade Inválida") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtLocExcep"){
         if (validateInput(el, 0.00, 0.10,"Localização excepcional") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtMorUni"){
         if (validateInput(el, 0.00, 0.20,"Moradia unifamiliar") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtPerFra"){
          if (validateInput(el, 1, 1000,"Permilagem da fracção") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtPerTer"){
        if (validateInput(el, 15, 45,"% Terreno") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtQuaConsOut"){
         if (validateInput(el, 0.00, 0.10,"Qualidade construtiva") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtQuaConsHab"){
         if (validateInput(el, 0.00, 0.15,"Qualidade construtiva") == false){
          bolError= true;
          break;
        }		
      }else if(el.name=="txtTotAreTerIntFra"){
        if (validateInput(el, 0, 99999999.9999,"Total das áreas de terreno integrantes da fracção") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtValCons"){
         if (validateInput(el, 1, 99999999999.99,"Valor construção") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtValTer"){
        if (validateInput(el, 1, 99999999999.99,"Valor do terreno") == false){
          bolError= true;
          break;
        }
      }else if(el.name=="txtLocOperRel"){
        if (validateInput(el, 0.00, 0.05,"Localização e Operacionalidade relativas") == false){
          bolError= true;
          break;
         }
      }else if(el.name=="txtLocOperRelAfecOutros"){
        if (validateInput(el, 0.00, 0.20,"Localização e Operacionalidade relativas") == false){
          bolError= true;
          break;
         }
      }else if(el.name=="txtLocOperRelMin"){
        if (validateInput(el, 0.00, 0.10,"Localização e Operacionalidade relativas") == false){
          bolError= true;
          break;
        }
      }
      else if(el.name=="txtLocOperRelMinHab"){
        if (validateInput(el, 0.00, 0.05,"Localização e Operacionalidade relativas") == false){
          bolError= true;
          break;
        }
      }
      
      }
    
    //TEMP_TEMP_TEMP_TEMP_TEMP_TEMP_TEMP_TEMP_
    var dblAreTot = -1.0;
    var dblAreImp = -1.0;
    var dblAreImpEdi = -1.0;
    var dblAreBruCons = -1.0;
    

    
    for(var i = 0; i < elm.length; i++){
      var el = elm[i];
      if(el.name=="txtAreTot"){
        if(el.value!=""){
          dblAreTot = parseFloat(el.value.replace( ",","."));
        }
      }else if(el.name=="txtAreImp"){
        if(el.value!=""){
          dblAreImp = parseFloat(el.value.replace( ",","."));
        }
      }else if(el.name=="txtAreImpEdi"){
        if(el.value!=""){
          dblAreImpEdi = parseFloat(el.value.replace( ",","."));
        }
      }else if(el.name=="txtAreBruCons"){
        if(el.value!=""){
          dblAreBruCons = parseFloat(el.value.replace( ",","."));
        }
      }
    }
    
    if((dblAreTot != -1.0) && (dblAreImp != -1.0) && (dblAreTot < dblAreImp)){
      bolError= true;
      alert("Área total não pode ser inferior á área de implantação");
    }else if((dblAreTot != -1.0) && (dblAreImpEdi != -1.0) && (dblAreTot < dblAreImpEdi)){
      bolError= true;
      alert("Área total não pode ser inferior á área de implantação");
    }else if((dblAreImp != -1.0) && (dblAreBruCons != -1.0) && (dblAreBruCons < dblAreImp)){   
      bolError= true;
      alert("Área bruta de construção não pode ser inferior á área de implantação");
    }

    if (bolError){
      return false;
    }else{
      return true;
    }
  }

  //VALIDAÇÃO DOS INPUTS
  function validateInput(obj, min, max,desc){
    var Chars = ",0123456789";

    //VERIFICAR SE CAMPO ESTÁ VAZIO
    if (obj.value.length < 1){
      alert(desc+ ": Campo vazio");
      obj.focus();
      return false;
    }

    //VERIFICAR SE O CARACTER É INVALIDO
    for (var i = 0; i < obj.value.length; i++) {
      if (Chars.indexOf(obj.value.charAt(i)) == -1){
        alert(desc+ ": Valor contem caracteres inválidos");
        obj.focus();
        return false;
        break;
      }
    }

    //VERIFICAR SE O VALOR INSERIDO ESTÁ DENTRO DO INTERVALO DEFINIDO
    var inputValue = parseFloat(obj.value.replace( ",","."));
    var limInf = parseFloat(min);
    var limSup = parseFloat(max);

    if ((inputValue < limInf) || (inputValue > limSup)){
      alert(desc+ ": Valor incorrecto, tem que estar entre "+min+" e "+max);
      obj.focus();
      return false;
    }
  }