﻿/* FORMULARIO: DCALTA1069 
     (C) 2009, Axesor.es
*/
//var servidor = "http://www.axesor.es";
var servidor_1 = "http://procesos.axesor.es/";
$(document).ready(function(){
	$('#provincia').load('/fincas/provincias.html');
	$('#provincia').change(function(){$('#municipio').load('/fincas/municipios.asp',{ nombre:encodeURI( $('#provincia').val() ) }); sugerencias() });
	$('#municipio, #listaTipoVia').change(function(){ sugerencias() });
	$('#localizacion_refCatastro').click(function(){ limpiarForm();limpiarRemarcoError();boxErroresVisble(false);$('#datos_localizacion').hide(); $('#datos_catastro').show();$('#pisoRef').attr("checked", true);$('#boxCaracteristicasAdicionales').show();$('#direccion_pisos').show(); $('#tituloZComunes').show();$('#boxZComunes').show();$('#ascensor').show();$('#boxAsecensor').show();$('#tituloAscensor').show();$('#subTipoCasa').hide();$('#subTipoPiso').show(); });
	$('#localizacion_dir').click(function(){ limpiarForm();limpiarRemarcoError();boxErroresVisble(false);$('#boxCaracteristicasAdicionales').show();$('#datos_catastro').hide(); $('#datos_localizacion').show(); $('#piso').attr("checked", true); mostrarCamposPiso(); });
	$('#piso').click(function(){ mostrarCamposPiso() });
	
	function mostrarCamposPiso(){ $("#piso_casa").attr("title","Duplex: En un edificio de varias plantas, conjunto de dos pisos superpuestos y unidos por una escalera interior, destinado a vivienda independiente. Ático: Último piso de un edificio, generalmente retranqueado y del que forma parte, a veces, una azotea." ); $('#direccion_pisos').show(); $('#tituloZComunes').show();$('#boxZComunes').show();$('#ascensor').show();$('#tituloAscensor, #boxAsecensor').show();$('#subTipoCasa').hide();$('#subTipoPiso').show() };
	
	$('#casa').click(function(){
	$("#piso_casa").attr("title","Chalet: vivienda unifamiliar singular (no comparte tabiques con otras viviendas). Casa: vivienda unifamiliar que comparte tabiques con otras viviendas (ej. Adosado)." );
	$('#direccion_pisos').hide(); $('#tituloZComunes').hide();$('#boxZComunes').hide();$('#ascensor').hide();$('#tituloAscensor, #boxAsecensor').hide();$('#subTipoCasa').show();$('#subTipoPiso').hide()});
	
	$('#pisoRef').click(function(){$('#boxCaracteristicasAdicionales').show();$('#direccion_pisos').show(); $('#tituloZComunes').show();$('#boxZComunes').show();$('#ascensor').show();$('#boxAsecensor').show();$('#tituloAscensor').show();$('#subTipoCasa').hide();$('#subTipoPiso').show()});
	$('#casaRef').click(function(){$('#boxCaracteristicasAdicionales').show();$('#direccion_pisos').hide(); $('#tituloZComunes').hide();$('#boxZComunes').hide();$('#ascensor').hide();$('#tituloAscensor').hide();$('#boxAsecensor').hide();$('#subTipoCasa').show();$('#subTipoPiso').hide()});
	$('#nsncRef').click(function(){$('#boxCaracteristicasAdicionales').hide();});
	
	$('#verCaracteristicas').click(function(){ $('#caracteristicas').toggle() });			
	limpiarForm();
	$('#localizacion_dir').attr("checked", true);
	$('#piso').attr("checked", true);
	$('#pisoRef').attr("checked", true);
				
	$('#listaTipoVia').load('/fincas/listarTiposVia.asp');
	
	/* DEFINICIONES */
	$("input[name='superficie']").next().wrap('<dfn title="Es la superficie útil, sin excluir la superficie ocupada por los elementos interiores e incluyendo los cerramientos exteriores al 100 % o al 50 %, respectivamente, de cerramientos de fachada o medianeros, o de cerramientos compartidos con otros elementos del mismo edificio. No se incluyen elementos comunes." ></dfn>');
	$("input[name='aseos']").prev().wrap('<dfn title="Habitación pequeña, con lavabo y retrete."></dfn>');
	$("input[name='habitaciones']").prev().wrap('<dfn title="Partes de la vivienda destinadas a dormir, aunque se les pueda dar un uso distinto (despacho, ocio, etc…). En este concepto no se incluye el salón y la cocina." ></dfn>');
	$("input[name='banos']").prev().wrap('<dfn title="Habitación con lavabo, retrete, bañera y otros sanitarios." ></dfn>');
	$("select[name='PTiposPiso']").prev().wrap('<dfn id="piso_casa" title="Duplex: En un edificio de varias plantas, conjunto de dos pisos superpuestos y unidos por una escalera interior, destinado a vivienda independiente. Ático: Último piso de un edificio, generalmente retranqueado y del que forma parte, a veces, una azotea." ></dfn>');
	$("input[name='PTerraza']").next().wrap('<dfn title="Sitio abierto de una casa desde el cual se puede explayar la vista." ></dfn>');
	$("#tituloTrastero label").wrap('<dfn title="Parte de la vivienda destinada a guardar los trastos que no se usan." ></dfn>');
	$("#localizacion_refCatastro").next().wrap('<dfn title="La referencia catastral es el identificador oficial y obligatorio de los bienes inmuebles. La referencia catastral  consiste en un código que es asignado por el Catastro de manera que todo inmueble debe tener una única referencia catastral." ></dfn>');
	$("input[name='PGaraje']").next().wrap('<dfn title="Local destinado a guardar automóviles." ></dfn>');
	$("#tituloAscensor label").wrap('<dfn title="Aparato para trasladar personas de unos a otros pisos." ></dfn>');
	$("#tituloZComunes label").wrap('<dfn title="Zonas de ocio comunitarias." ></dfn>');
	
	/* CONDICIONES LEGALES */
	$("#cnd_legales").toggle(function()
		{
			$("#condiciones_legales").slideDown();
			destination = $("#condiciones_legales").offset().top;
			$("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, 1100 );
				
		 },function(){
				$("#condiciones_legales").slideUp();	 
			 });
});

/* TEST DE CAMPOS */
function testCompletoDireccion()
{
	if( !testProvincia() || !testMunicipio() || !testDireccion() || !testSuperficie()
		|| !testNumero() || !testHabitaciones() || !testBanos() || !testAseos()
		|| !testAntiguedad() || !testCP() )
		
		return false;
	return true;
}

function testDireccion()
{
	if($('#direccion').val().length < 3 ) 
	{addErrorMensaje('Por favor, rellene el campo “Dirección”.'); $('#direccion').addClass('error');return false;} return true;
}
function testProvincia()
{
	if($('#provincia').val().length < 1) 
	{addErrorMensaje("Por favor, seleccone una provincia.");$('#provincia').addClass('error');return false;} return true;
}
function testMunicipio()
{
	if($('#municipio').val().length < 1) 
	{addErrorMensaje('Por favor, seleccione un municipio');$('#municipio').addClass('error'); return false;} return true;
}
function testSuperficie()
{
	if( $('#superficie').val().length > 0) 
	{
		if (!IsNumeric($('#superficie').val()))  
		{addErrorMensaje('La superficie del inmueble debe ser un valor numérico, entero y positivo');$('#superficie').addClass('error'); return false;} 
		else
		{
			if($('#superficie').val() < 30)
			{addErrorMensaje('La superficie del inmueble debe ser superior a 30 metros cuadrados');$('#superficie').addClass('error'); return false;} 
		}
	}
	return true;
}
function testNumero()
{
	if( $('#numero').val().length < 1 || (!IsNumeric($('#numero').val()) && $('#numero').val().toUpperCase() !='SN' ) ) 
	{addErrorMensaje('El número de vía debe ser un valor numérico');$('#numero').addClass('error'); return false;} return true;
}
function testHabitaciones()
{
	if( $('#habitaciones').val().length > 0 && !IsNumeric($('#habitaciones').val()) ) 
	{addErrorMensaje('El número de habitaciones debe ser un valor numérico positivo');$('#habitaciones').addClass('error'); return false;} return true;
}
function testBanos()
{
	if( $('#banos').val().length > 0 && !IsNumeric($('#banos').val()) ) 
	{addErrorMensaje('El número de baños debe ser un valor numérico positivo'); $('#banos').addClass('error');return false;} return true;
}
function testAseos()
{
	if( $('#aseos').val().length > 0 && !IsNumeric($('#aseos').val()) ) 
	{addErrorMensaje('El número de aseos debe ser un valor numérico positivo');$('#aseos').addClass('error'); return false;} return true;
}
function testAntiguedad()
{
	if( $('#antiguedad').val().length > 0 && !IsNumeric($('#antiguedad').val()) ) 
	{addErrorMensaje('La antigüedad hace referencia al año de construcción del inmueble. Debe ser un valor numérico');$('#antiguedad').addClass('error'); return false;} return true;
}
function testCP()
{
	if( $('#cp').val().length > 0  &&  ($('#cp').val().length < 5 || !IsNumeric($('#cp').val())) ) 
	{addErrorMensaje('El código postal debe ser un valor numérico de 5 dígitos'); $('#cp').addClass('error');return false;} return true;
}
function testRefCatastral()
{
	if(trim($('#refCatastro').val()).length != 18 && trim($('#refCatastro').val()).length != 20)
	{
		addErrorMensaje('Referencia catastral errónea. Dicho código posee 18 o 20 caracteres');
		$('#refCatastro').addClass('error');
		return false;
	}
	return true;
}

function comprobarDireccion()
{ 
	limpiarErrores();	
	if($('#localizacion_dir').attr('checked'))
	{
		if( !testCompletoDireccion() ) return false;			
	}
	else
	{
		if( !testRefCatastral() ) return false;
	}
	
	$("#waitTestRequisitos").html('Comprobando requisitos...');
	
	var tipoFinca = "";
	
	if($('#localizacion_dir').attr('checked'))
	{
	    if($('#casa').attr('checked'))
		    tipoFinca = "C";
	    else
		    tipoFinca = "P";
	}
	else
	{
	    if($('#casaRef').attr('checked'))
		    tipoFinca = "C";
	    else if($('#pisoRef').attr('checked'))
	    {
		    tipoFinca = "P";
		}
		else
		{
		    tipoFinca = "NSNC";
		}
	}
		
		// Nuevo:

		var error_general = "En estos momentos no podemos atender a su petición.<br/> Por favor, vuelva a intentarlo en unos minutos.";
		var error_rf_general = "No hemos podido localizar la referencia catastral solicitada. Le sugerimos que  verifique su referencia en el <a target='_blanck' href='https://www1.sedecatastro.gob.es/OVCFrames.aspx?TIPO=Consulta'>servicio web del Catastro</a>.";
		var error_rf_inexistente = "No hemos podido localizar la referencia catastral solicitada. Le sugerimos que  verifique su referencia en el <a target='_blanck' href='https://www1.sedecatastro.gob.es/OVCFrames.aspx?TIPO=Consulta'>servicio web del Catastro</a>.";
		var error_rf_uso_invalido = "No podemos atender a su solicitud porque el inmueble solicitado no se corresponde a una vivienda.";
		var error_rf_sin_superficie = "Superficie del inmueble desconocida. El servicio catastral no proporciona ninguna superficie.";
		var error_rf_direccion_sin_normalizar = "No hemos podido localizar la vivienda suministrada por el Servicio Catastral.";
		var error_direccion_sin_normalizar = "No hemos podido localizar la vivienda solicitada. Le sugerimos que  verifique su dirección en el <a target='_blanck' href='https://www1.sedecatastro.gob.es/OVCFrames.aspx?TIPO=Consulta'>servicio web del Catastro</a>.";
		var error_precision = "No hemos podido localizar la vivienda solicitada. Le sugerimos que  verifique su dirección en el <a target='_blanck' href='https://www1.sedecatastro.gob.es/OVCFrames.aspx?TIPO=Consulta'>servicio web del Catastro</a>.";
		var error_sin_superficie = "Superficie del inmueble desconocida. Le rogamos nos indique la superficie, aunque sea aproximada o consulte al <a target='_blanck' href='https://www1.sedecatastro.gob.es/OVCFrames.aspx?TIPO=Consulta'>servicio web del Catastro</a>.";		
		var error_sin_testigos = "Este inmueble no puede ser valorado por falta de datos para una comparación fiable. Axesor sólo ofrece valoraciones de precios de viviendas cuya fiabilidad y precisión son elevadas";
		var error_valoracion_no_fiable = "Este inmueble no puede ser valorado por falta de datos para una comparación fiable. Axesor sólo ofrece valoraciones de precios de viviendas cuya fiabilidad y precisión son elevadas";

		
		var callejero = new TestDireccion();
        callejero.provincia = $('#provincia').val();
        callejero.municipio = $('#municipio').val();
        callejero.tipoVia = $('#listaTipoVia').val();
        callejero.nombreVia = $('#direccion').val();
        callejero.numeroVia = $('#numero').val();
        callejero.cp = $('#cp').val();
        callejero.bloque = $('#bloque').val();
        callejero.escalera = $('#escalera').val();
        callejero.puerta = $('#puerta').val();
        callejero.planta = $('#numeroPlanta').val();
        callejero.tipoFinca = tipoFinca;
        callejero.refCatastral = $('#refCatastro').val();
        callejero.comunicacionAsincrona = true;
               
        callejero.functionSuccess = function(codigoTest)
        {
            $("#waitTestRequisitos").html('');            
            switch(codigoTest)
            {
                case -1:
                    addErrorMensaje(error_general);
				    return false;                                       
                
                case 1:
                    if( $('#localizacion_dir').attr('checked') )
                    {
                        addErrorMensaje(error_direccion_sin_normalizar);                                 
                        return false;
                    }
                    break;
                    
                case 2:
                    if( $('#localizacion_refCatastro').attr('checked') )
                    {
                        addErrorMensaje(error_rf_inexistente);
                        return false;
                    }
                    break;
                  
                case 3:
                    if( $('#localizacion_dir').attr('checked') )
                    {
                        if( !IsNumeric($('#superficie').val()) )
                        {
                            addErrorMensaje(error_sin_superficie);
                            return false;
                        }
                    }
                    else
                    {
                        addErrorMensaje(error_rf_sin_superficie);
				        return false;
				    }
				    break;
    			
			    case 4:
			        if( $('#localizacion_refCatastro').attr('checked') )
			        {
			            addErrorMensaje(error_rf_general);
				        return false;
				    }
				    break;
    			
			    case 5:
			        addErrorMensaje(error_precision);
				    return false;
    				
			    case 6:
			        addErrorMensaje(error_rf_uso_invalido);
				    return false;
				   
				case 7:
			        addErrorMensaje(error_sin_testigos);
				    return false;
				    
				case 8:
			        addErrorMensaje(error_valoracion_no_fiable);
				    return false;
            }
            
            enviarPeticionInf();
        }
        callejero.runTest();

		
		// Fin Nuevo
		                                       
		return;
}		
		
function enviarPeticionInf()
{
	if(!$('#checkCondiciones').attr('checked'))
	{
		addErrorMensaje("Se deben aceptar las condiciones generales para solicitar el informe.");
		return;
	}
	
	boxErroresVisble(false);
	$("#waitTestRequisitos").html('Generando informe...');
	
	var formato = 1;

	if($('#html').attr('checked')) formato = 1;
	if($('#pdf').attr('checked')) formato = 3;
	if($('#rtf').attr('checked')) formato = 5;

	var base = "listenerswa.asp?cod_servicio=71&operacion=0";

	if($('#localizacion_dir').attr('checked'))
	{		
		base = base + "&provincia=" + $('#provincia').val() + "&municipio=" + $('#municipio').val();
		base = base + "&direccion=" + $('#listaTipoVia').val() + " " + $('#direccion').val();
		base = base + "&numero=" + $('#numero').val()
		base = base + "&cp=" + $('#cp').val()

		if($('#casa').attr('checked'))
		{
			base = base + "&tipofinca=C";
			base = base + "&subtipofinca=" + $('#subTipoCasa').val();
		}
		else
		{
			base = base + "&bloque="+ $('#bloque').val();
			base = base + "&escalera="+ $('#escalera').val() + "&puerta="+ $('#puerta').val();
			base = base + "&numeroPlanta="+ $('#numeroPlanta').val();
			base = base + "&tipofinca=P";
			base = base + "&ascensor=" + valorAscensor();
			base = base + "&zcomunes=" + $("input:checked[id=zcomunes]").length;
			base = base + "&subtipofinca=" + $('#subTipoPiso').val();
		}
		base = base + "&trastero=" + $("input:checked[id=trastero]").length;
		base = base + "&antiguedad=" + $('#antiguedad').val();
		base = base + "&numeroHabitaciones=" + $('#habitaciones').val();
		base = base + "&numeroBanos=" + $('#banos').val();
		base = base + "&numeroAseos=" + $('#aseos').val();
		base = base + "&calidad=" + $('#calidad').val() + "&estado=" + $('#estado').val();
		base = base + "&terraza=" + $("input:checked[id=terraza]").length + "&calefaccion=" + $("input:checked[id=calefaccion]").length;
		base = base + "&jardin=" + $("input:checked[id=jardin]").length  + "&garaje=" + $("input:checked[id=garaje]").length;
		base = base + "&piscina=" + $("input:checked[id=piscina]").length;
		base = base + "&metrosCuadrados=" + $('#superficie').val();
	}
	else
	{		
		base = base + "&refCatastro=" + trim($('#refCatastro').val());
		base = base + "&ascensor=" + valorAscensor();
		base = base + "&trastero=" + $("input:checked[id=trastero]").length;
		base = base + "&zcomunes=" + $("input:checked[id=zcomunes]").length;
		
		if($('#casaRef').attr('checked'))
		{
			base = base + "&tipofinca=C";
			base = base + "&subtipofinca=" + $('#subTipoCasa').val();
		}
		else
		{
			if($('#pisoRef').attr('checked'))
			{
				base = base + "&tipofinca=P"; 
				base = base + "&subtipofinca=" + $('#subTipoPiso').val();
			}
			else
				base = base + "&tipofinca=nsnc"; 
		}			
		
		if($('#casaRef').attr('checked') || $('#pisoRef').attr('checked'))
		{
			base = base + "&numeroHabitaciones=" + $('#habitaciones').val();
			base = base + "&numeroBanos=" + $('#banos').val();
			base = base + "&numeroAseos=" + $('#aseos').val();
			base = base + "&calidad=" + $('#calidad').val() + "&estado=" + $('#estado').val();
			base = base + "&terraza=" + $("input:checked[id=terraza]").length + "&calefaccion=" + $("input:checked[id=calefaccion]").length;
			base = base + "&jardin=" + $("input:checked[id=jardin]").length  + "&garaje=" + $("input:checked[id=garaje]").length;
			base = base + "&piscina=" + $("input:checked[id=piscina]").length;
			base = base + "&metrosCuadrados=" + $('#superficie').val();
		}
	}
	base = base + "&tip_formato=" + formato;	
	
	if(formato != 1 && miServidor()!=1)
		base = servidor_1 + base;

	window.location = base;
};

 function sugerencias()
 {
	$("#direccion").autocomplete("/fincas/viascandidatas.asp",  {
		   minChars:3,
		   cacheLength:0,
		   width:"500px",
		   extraParams: {
			   provincia: $('#provincia').val(),
			   municipio: $('#municipio').val(),
			   tipoVia: $('#listaTipoVia').val()
		   }
	});
 }
 
 function valorAscensor()
 {
	if($('#ascensor_si').attr('checked'))
		return 2;
	if($('#ascensor_no').attr('checked'))
		return 1;
	if($('#ascensor_nsnc').attr('checked'))
		return 0;
 }
 
 /* BOX ERRORES */
function boxErroresVisble(visibilidad)
{
	if(visibilidad) $('#errores').show();
	else $('#errores').hide();
}
function addErrorMensaje(texto)
{
	boxErroresVisble(true);
	document.location="#errores";
	$('#boxErrores').append("<p>" + texto + "</p>");
	// SEGUIMIENTO GA //
	pageTracker._trackPageview("/GV/informe-valoracion-vivienda/formulario-incompleto/"+texto);
}

/* UTILES */
function limpiarRemarcoError(){$('input, select').removeClass('error')}
function limpiarErrores(){$('#boxErrores > p').remove(); limpiarRemarcoError()}
function limpiarForm(){$("input","#form_fincas").val('');}
function IsNumeric(sText){var ValidChars = "0123456789";var IsNumber=true; if(sText.length < 1){return false;} var Char;for (i = 0; i < sText.length && IsNumber == true; i++){Char = sText.charAt(i);if (ValidChars.indexOf(Char) == -1){IsNumber = false;}}return IsNumber;}
function trim(texto){ return texto.replace(/^\s+|\s+$/g,'')}
function miServidor(){if(location.href.search('desarrollo.axesor')!=-1) return 1; else return 2;}