<!--

	
function calculos(form){

// controles

if(form.importecv.value==="" || esNumero(form.importecv.value)=="false"){alert(leerDato(7));return(false);}

if(form.importeh.value==="" || esNumero(form.importeh.value)=="false"){alert(leerDato(8));return(false);}

if(form.comision.value==="" || esNumero(form.comision.value)=="false") {alert(leerDato(9));return(false);}

if(form.tipoinmueble.value===0){alert(leerDato(10));return(false);}

if(form.provincia.value===0){alert(leerDato(11));return(false);}



// Determinación de las variables

var moneda,numero,importecv,importeh,comision,tipoinmueble,provincia,notariacv,registrocv,ajd;

var impuestos,notascv;

// Obtención de datos y cálculos

if(form.moneda[0].checked){moneda=0;}

if(form.moneda[1].checked){moneda=1;}

var iva = new Array(0.04,0.07,0.16,0);

var igic = new Array(0.00,0.02,0.05,0);



importecv = form.importecv.value*1;

importeh= form.importeh.value*1;



//tipoinmueble: 1=VPO; 2=Libre; 3=Otros; 4=Segunda Transmisión

tipoinmueble = form.tipoinmueble.value;



//1=Alava,2=Andalucia,3=Aragón,4=Asturias,5=C. Valenciana,6=Canarias,7=Cantabria,8=Castilla la Mancha,9=Castilla Leon, 10=Cataluña,11=Ceuta y Melilla,12=Extremadura,13=Galicia,14=Guipuzcoa,15=Islas Baleares,16=La Rioja,17=Madrid,18=Navarra,19=Región de Murcia, 20=Vizcaya



provincia = form.provincia.value;

if (provincia !== 6){ivacv = iva[tipoinmueble-1];} else {ivacv = igic[tipoinmueble-1];}



var itp = new Array(0.06,0.07,0.07,0.07,0.07,0.06,0.07,0.07,0.07,0.07,0.07,0.07,0.07,0.06,0.07,0.07,0.07,0.06,0.07,0.06);

// En AJD existen múltiples ajustes autonómicos, siendo el caso de Cataluña y Madrid dos entramados calculados aparte.



itpcv = itp[provincia-1];



// Cálculo gastos compraventa-------------------------------------------------------------------



// impuestos IVA, IGIC ó Transmisiones

if (ivacv==0){impuestos=itpcv*importecv;} else {impuestos=ivacv*importecv;}

form.ivacv.value=formatodec(impuestos,moneda);



// gastos notariales y registrales compraventa ------------------------------



var notaria = hnotreg(importecv,0,moneda);

var registro = hnotreg(importecv,1,moneda);



switch(provincia)

{

	case 6:

	 tivanot = igic[2];

	 break;

	case 11:

	 tivanot = 0.04;

	 break;

	default:

	 tivanot=iva[2];

}





// Otros gastos notaria

var foliomatriz = new Array (3.005,500);

var cfautorizado = new Array(3.005,500);

var cfsimple = new Array(0.601012,100);

var nfolexentomat = 4;

var nfoliosbase = 11;

var nfolioscv = 15;

var nfoliosh = 30;

var ncopiaautorizada = 1;

var ncopiasimple = 4;

var cercontinuado = new Array(48.080,8000);



// Otros gastos registro

var presentacion = new Array(6.01021,1000);

var notas = new Array(3.005,500);

var refcatastro = new Array(9.015,1500);

var nnotas = 2;

var certnegativacarga = new Array (9.015182,1500);

var otrosnotaria;

var otrosregistro;

// Cálculos

if(moneda==1)

	{

	var excesocaras = (nfolioscv - nfolexentomat) * 2 * foliomatriz[0];

	var cautorizada = ((nfoliosbase * cfautorizado[0]) + ((nfolioscv - nfoliosbase) * cfautorizado[0] / 2)) * ncopiaautorizada;

	var csimple = cfsimple[0] * nfolioscv * ncopiasimple;

	var cerregistro = cercontinuado[0];

	

	otrosregistro = (notas[0] * nnotas) + presentacion[0] + refcatastro[0] + certnegativacarga[0];

	}

	else

	{

	var excesocaras = (nfolioscv - nfolexentomat) * 2 * foliomatriz[1];

	var cautorizada = ((nfoliosbase * cfautorizado[0]) + ((nfolioscv - nfoliosbase) * cfautorizado[1] / 2)) * ncopiaautorizada;

	var csimple = cfsimple[1] * nfolioscv * ncopiasimple;

	var cerregistro = cercontinuado[1];

	

	otrosregistro = (notas[1] * nnotas) + presentacion[1] + refcatastro[1] + certnegativacarga[1] ;	

	}

	

	//alert(excesocaras);

	//alert(cautorizada);

	//alert(csimple);

	

	otrosnotaria = excesocaras + cautorizada + csimple + cerregistro;

	

// Ajuste compraventa viviendas Real decreto 6/1999

notaria = notaria * 0.75;

registro = registro * 0.75;



// Ajuste compraventa VPO

if (tipoinmueble==1){notaria=notaria*0.5;registro=registro*0.5;}



// Inclusión del IVA

//alert("compraventa");

//alert(notaria);

//alert(otrosregistro);



notaria = (notaria + otrosnotaria) * (1 + tivanot);

registro = (registro + otrosregistro) * (1 + tivanot);







//--------------------------------------------------------------------------



// Actos Jurídicos documentados

// Cuando el inmueble es de segunda transmisión, no se liquida ajd, en principio esto se aplica

// cuando la compraventa no está sujeta a IVA.

if (tipoinmueble==4){ajdcv=0;}else{ajdcv = calculaajd(importecv,moneda,provincia,tipoinmueble);}



// Gastos Totales

totalcv = impuestos+notaria+registro+ajdcv;



// Notas

var notascv = new Array(leerDato(12),leerDato(13))



// Introducción en el formulario



form.notariacv.value=formatodec(notaria,moneda);

form.registrocv.value=formatodec(registro,moneda);

form.ajdcv.value=formatodec(ajdcv,moneda);

form.totalcv.value=formatodec(totalcv,moneda);

if (tipoinmueble==1){form.notascv.value=notascv[0] + notascv[1];}else{form.notascv.value=notascv[0];}



// Cálculo gastos de formalización de la hipoteca-------------------------------------------------------------------

comision = form.comision.value/100;

var reshipotecaria =  importeh*1.55;



// Cálculo comisión de apertura

cah = importeh*comision;



// Cálculo ajd hipoteca

ajdh = calculaajd(reshipotecaria,moneda,provincia,2);





// Cálculo notaria y registro hipoteca

notaria = hnotreg(reshipotecaria,0,moneda);

registro = hnotreg(reshipotecaria,1,moneda);



// Cálculos

if(moneda==1)

	{

	var excesocaras = (nfoliosh - nfolexentomat) * 2 * foliomatriz[0];

	var cautorizada = ((nfoliosbase * cfautorizado[0]) + ((nfoliosh - nfoliosbase) * cfautorizado[0] / 2)) * ncopiaautorizada;

	var csimple = cfsimple[0] * nfoliosh * ncopiasimple;

	

	otrosregistro = (notas[0] * nnotas) + presentacion[0] + refcatastro[0] + certnegativacarga[0];

	}

	else

	{

	var excesocaras = (nfoliosh - nfolexentomat) * 2 * foliomatriz[1];

	var cautorizada = ((nfoliosbase * cfautorizado[0]) + ((nfoliosh - nfoliosbase) * cfautorizado[1] / 2)) * ncopiaautorizada;

	var csimple = cfsimple[1] * nfoliosh * ncopiasimple;

	

	otrosregistro = (notas[1] * nnotas) + presentacion[1] + refcatastro[1] + certnegativacarga[1] ;	

	}

	

	//alert(excesocaras);

	//alert(cautorizada);

	//alert(csimple);

	

	otrosnotaria = excesocaras + cautorizada + csimple;



// Ajuste hipotecas el arancel notarial de cuantia se reduce en un 25 % + Real decreto 6/1999, se vuelve a reducir en otro 25 % sobre la base anterior con lo que se produce una aminoración del 43.75 %	

notaria = notaria * 0.5625;	

	

// Ajuste hipotecas el arancel registro de cuantia se reduce en un 25 % + Real decreto 6/1999, se vuelve a reducir en otro 25 % sobre la base anterior con lo que se produce una aminoración del 43.75 % a la que hay que añadir otra aminoración del 5 % en las hipotecas RDL 6/2000 con lo que la reducción global pasa a ser de 46.56%

registro = registro * 0.53437;



// Ajuste hipoteca VPO

if (tipoinmueble==1){notaria=notaria*0.5;registro=registro*0.5;}	



// Inclusión del IVA

//alert("hipoteca");

//alert(notaria);

//alert(registro);

notaria = (notaria + otrosnotaria) * (1 + tivanot);

registro = (registro + otrosregistro) * (1 + tivanot);



//--------------------------------------------------------------------------

// Cálculo tasación

// Las tarifas de la tasación utilizadas son las publicadas por tasamadrid a 30/08/2004



if (moneda==1){factor=1;}else{factor=166.386;}

var tramotasacion = new Array(60000,120000,180000,240000,300000,360000);

var costetasacion = new Array(125,150,200,225,275,350,0.00062);



	if (importecv < tramotasacion[0]*factor){tasacion = costetasacion[0]*factor;}

	if (importecv >= tramotasacion[0]*factor & importecv < tramotasacion[1]*factor){tasacion = costetasacion[1]*factor;}

	if (importecv >= tramotasacion[1]*factor & importecv < tramotasacion[2]*factor){tasacion = costetasacion[2]*factor;}

	if (importecv >= tramotasacion[2]*factor & importecv < tramotasacion[3]*factor){tasacion = costetasacion[3]*factor;}

	if (importecv >= tramotasacion[3]*factor & importecv < tramotasacion[4]*factor){tasacion = costetasacion[4]*factor;}

	if (importecv >= tramotasacion[4]*factor & importecv < tramotasacion[5]*factor){tasacion = costetasacion[5]*factor;}

	if (importecv >= tramotasacion[5]*factor){tasacion = (costetasacion[5]*factor) + ((importecv - (tramotasacion[5]*factor))*costetasacion[6]);}



// Cálculo del seguro de incendios lo quito para bolsamania

//var seguro= new Array(7.5,1248);

//if (moneda==0){seguroh = (importecv/1000000)*seguro[1];}else{seguroh = (importecv/6010)*seguro[0];}





// Total gastos hipotecarios

var totalh = ajdh + notaria + registro + tasacion + cah; //+ seguroh



// notas

notash=leerDato(14);

form.notash.value=notash;



// Introducción en el formulario

form.ajdh.value=formatodec(ajdh,moneda);

form.notariah.value=formatodec(notaria,moneda);

form.registroh.value=formatodec(registro,moneda);	

//form.seguroh.value=formatodec(seguroh,moneda);

form.tasacionh.value=formatodec(tasacion,moneda);

form.cah.value=formatodec(cah,moneda);

form.totalh.value=formatodec(totalh,moneda);

form.total.value=formatodec(totalh+totalcv,moneda);



}

//-------------------------------------------------------------------------------------------------------------

// Cálculo de la base de honorarios notariales y registrales.

function hnotreg(importe,tipo,moneda)

{

var tramo = new Array(1000000,5000000,10000000,25000000,100000000,1000000000);

var hnot = new Array(15000,0.0045,0.0015,0.001,0.0005,0.0003);

var hreg = new Array(4000,0.00175,0.00125,0.00075,0.0003,0.0002);

var factor = new Array(0,0,0,0,0,0);

// Ajuste de la moneda

if(moneda==1)

	{

	for (i = 0; i<=5; i++)

		{

		tramo[i]=tramo[i]/166.386;

		}

	hnot[0]=hnot[0]/166.386;

	hreg[0]=hreg[0]/166.386;

	}	

// Ajuste factores y honorarios, tipo=0 calcula honorarios notariales, tipo=1 calcula honorarios registrales.

if(tipo==0)

	{

	for (i = 0; i<=5; i++)

		{

		factor[i]=hnot[i];

		}

	}

	else

	{

	for (i = 0; i<=5; i++)

		{

		factor[i]=hreg[i];

		}

	}

// Cálculo de los honorarios base

var honorarios = new Array(0,0,0,0,0,0);

var valor = 0;

i = 1;

var z = 1000;

	while(valor < importe)

	{

		valor = (z * i);

		if (valor <= tramo[0]){honorarios[0]=factor[0]; }

		if (valor > tramo[0] & valor <= tramo[1]){honorarios[1] =(valor-tramo[0])*factor[1];}

		if (valor > tramo[1]& valor <= tramo[2]){honorarios[2] =(valor-tramo[1])*factor[2];}

		if (valor > tramo[2] & valor <= tramo[3]){honorarios[3] =(valor-tramo[2])*factor[3];}

		if (valor > tramo[3] & valor <= tramo[4]){honorarios[4] =(valor-tramo[3])*factor[4];}

		if (valor > tramo[4] & valor <= tramo[5]){honorarios[5] =(valor-tramo[4])*factor[5];}

		i++;

	}



// Suma de honoraios

var resultado = 0;

for (i = 0; i<=5; i++)

	{

	resultado = honorarios[i] + resultado;

	}	



return resultado		

}



//---------------------------------------------------------------------------------------

// Calcula el importe de actos jurídicos documentados

function calculaajd(importe,moneda,provincia,vpo)

{

// vpo=1, se trata de vivienda de protección oficial, igual a 0 o cualquier otro hipoteca o otra cosa

//1=Alava,2=Andalucia,3=Aragón,4=Asturias,5=C. Valenciana,6=Canarias,7=Cantabria,8=Castilla la Mancha,9=Castilla Leon, 10=Cataluña,11=Ceuta y Melilla,12=Extremadura,13=Galicia,14=Guipuzcoa,15=Islas Baleares,16=La Rioja,17=Madrid,18=Navarra,19=Región de Murcia, 20=Vizcaya

var ajd, factor;

var ajdnew = new Array (0.01,0.01,0.01,0.01,0.01,0.0075,0.01,0.01,0.01,0,0.01,0.01,0.01,0.01,0.01,0.01,0,0.01,0.01,0.01);
'(0.005,0.01,0.01,0.01,0.01,0.005,0.01,0.01,0.01,0,0.01,0.01,0.075,0.005,0.005,0.01,0,0.005,0.005,0.005);'
					  
                          

ajd = ajdnew[provincia-1];

ajd = importe*ajd;



// Recálculo de ajd de la comunidad autónoma Catalana y Madrileña

if (moneda==1){factor=1;}else{factor=166.386;}

// Cataluña ajd compraventa

var tramosc = new Array(30000,60000);

var tiposc = new Array(0.005,0.0075,0.01);



if (provincia==10)

	{

		if (importe<tramosc[0]*factor){ajd=importe*tiposc[0];}

		if (importe>=tramosc[0]*factor & importe<tramosc[1]*factor){ajd=importe*tiposc[0];}

		if (importe>tramosc[1]*factor){ajd=importe*tiposc[0];}			

	}



// Madrid ajd compraventa

	var tramosm = new Array(120000,180000);

	var tiposm = new Array(0.002,0.004,0.005,0.01);

	

	if (provincia==17)

		{

		if (vpo==1){ajd=importe*0.002;}

			else

			{

			if (importe<tramosm[0]*factor){ajd=importe*tiposm[1];}

			if (importe>=tramosm[0]*factor & importe<tramosm[1]*factor){ajd=importe*tiposm[2];}

			if (importe>tramosm[1]*factor){ajd=importe*tiposm[3];}

			}

				

		}

	return ajd;

}

//---------------------------------------------------------------------------------------

// Cambia la moneda de la operación con dos campos



function cambiardos(form)

{

var importecv;

var importeh;

var informa;

importecv=form.importecv.value*1;

importeh=form.importeh.value*1;



if(form.moneda[0].checked){form.moneda[0].checked=0;informa=1;}

if(form.moneda[1].checked){form.moneda[1].checked=0;informa=0;}

if (informa==1)

{

form.importecv.value=Math.round((importecv/166.386)*100)/100;

form.importeh.value=Math.round((importeh/166.386)*100)/100;

form.moneda[1].checked=1;

}

if (informa==0)

{

form.importecv.value=Math.round(importecv*166.386);

form.importeh.value=Math.round(importeh*166.386);

form.moneda[0].checked=1;

}

calculos(form)

}
