debug = false;

//Declaración de variables y objetos.
var req;
var precioProductoSinIVA; //almacenamos el precio unitario con todos los decimales posibles.
var precioSASinIVA; //almacenamos el precio del servicio adicional con todos los decimales posibles.
var precioProductoExento; //almacenamos el precio unitario con todos los decimales posibles.
var precioSAExento; //almacenamos el precio del servicio adicional con todos los decimales posibles.
var idiomaGlobal;
var descuentoEbay = 0.25;
var FranqueoIva = 0;
var FranqueoSinIva = 0;
var IVAFranqueo = 0;
var ue_con_iva = new Array('ALE','AUS','BEL','BUL','CHE','CIP','DIN','EEB','ESK','ESL','FIN','FRA','GBA','GRE','HUN','IRL','ITA','LUX','LVT','POR','LTN','MON','MTA','POL','RUM','SUE','PBS');
var europa_sin_iva = new Array('ABN','AIY','AND','BIE','BYH','FRO','GIB','GIG','GRO','GUY','ISL','JER','KZN','LIE','LTN','MCD','MDV','NOR','RHS','SOM','SUI','SYM','TAY','TUK','TUR','UCR','URS','VAT','YUG');

//PRECIOS DEL FRANQUEO EN DESTINO PARA CORREO DIGITAL
var ArrTramosCartaNacion = new Array(0,0.35,0.50,0.80,1.95);
var ArrTramosCartaNacionCertif = new Array(0,2.55,2.70,3.00,4.15);
var ArrTramosCartaNacionIVA = new Array("N","N","N","N","N");
var ArrTramosCartaInternZona1 = new Array(0,0.65,1.30,2.00,6.00);
var ArrTramosCartaInternZona2 = new Array(0,0.80,1.70,2.80,9.60);
var ArrTramosCartaInternZona1Certif = new Array(0,2.95,3.60,4.30,8.30);
var ArrTramosCartaInternZona2Certif = new Array(0,3.10,4.00,5.10,11.90);
var ArrPostalesNacion = new Array(0,0.35,0.50,0.80);
var ArrPostalesInternZona1 = new Array(0,0.65,1.30,2.00);
var ArrPostalesInternZona2 = new Array(0,0.80,1.70,2.80);

//PRECIOS PARA VALORES AÑADIDOS QUE NO LLEVAN IGIC PERO SIN IVA
var impAdmTelefTelegr = 1.65;
var impExpedTelexRadiotelegInteriores = 0.94;

//PRECIO PARA EL SNTS
var ArrPrecioNotifTelemSeg = new Array(0,2.10,1.90,1.50,1.25,1);

//PRECIO PARA SELLOS PERSONALIZADOS
//var ArrPrecioFranqueoSellos = new Array(0,8.00);
var ArrPrecioFranqueoSellos = new Array(0,30); //Se agrega al precio de Franqueo (9€) el de Producción (21€)

//PRECIOS PARA SERVICIOS ADICIONALES QUE NO LLEVAN IGIC
var eAR = 0.85;
var RetornoInfo = 0.53;
var acuse = 3.92;
var telex = 0.89;
var serv_int = 4.23;
var telex_int = 0.89;
var eAR4872 = 0.75;
var eAR4872C = 0.81;
var eARCC = 0.93;
var eARPEN = 0.81;

//Variables para el resumen
var ArrResultados = new Array("Carta Certificada Nacional",2,3);

//precios para publicorreo nacional y publicorreo internacional en el caso de que el peso sea menor o igual a 10 gramos
var PublicorreoNacional10gramosZonaA = "0.20";
var PublicorreoNacional10gramosZonaB = "0.25";
var PublicorreoInternacional10gramosZonaA = "0.50";
var PublicorreoInternacional10gramosZonaB = "0.45";

////porcentaje sobre la cantidad girada de Giro Urgente Internacional Marruecos para <= 500€ de envío
//var GiroUrgenteMarruecos500 = 0.0011;
////porcentaje sobre la cantidad girada de Giro Urgente Internacional Marruecos para <= 1000€ de envío
//var GiroUrgenteMarruecos1000 = 0.0055;
////porcentaje sobre la cantidad girada de Giro Urgente Internacional Marruecos para > 1000€ de envío
//var GiroUrgenteMarruecos9999 = 0.0077;

///////////////FUNCIONES

// Realiza el submit del formulario al escoger el producto
function enviar(valor) {
	document.tarificador.IDP.value = valor;
	document.tarificador.submit();
}
// Realiza el submit del formulario al escoger la categoría
function enviarCategoria(valor) {
	document.tarificador.submit();
}

//FML: Funcion nueva de redondeo. Cambiada 16:42 26/12/2007
// Función para redondear a dos decimales
/*function redondear(valor) {
	resultado = Math.round(valor * 100) / 100.;
	resultado = resultado.toFixed(2);
	//alert ('valor: ' + valor + '. resultado: ' + resultado);
	return resultado;
}*/


function redondear (num)
{
	//alert (num);
	var numero = num.toString().replace(",", ".").split('.');
	var resultado = num;
	//alert(numero.length);
	if (numero.length > 1)
	{
	var decimal = numero[1];
	//alert (decimal);
	//alert(parseInt(decimal.charAt(2)));
	//if (decimal.indexOf('.') != -1)
	//{
		if ( parseInt(decimal.charAt(2))  > 4)
			{
			decimal = sumaAString(decimal.substr(0,2),1);
			//alert("redondeamos: " + decimal);
			decimal = decimal.toString();
			}
		else
		{
			//alert("no redondeamos");
			decimal = decimal.substr(0,2);
		}
		//alert (decimal == '100');
		if (decimal == '100')
			resultado = (parseInt(numero[0]) + 1).toString();
		else 
			resultado = numero[0] +"." +decimal;
		//alert(resultado);
	/*}
	else 
		resultado= num;*/
		}
	//alert(parseFloat(resultado));
		//document.formulario.numero.value = parseFloat(resultado);
	return parseFloat(resultado);
}
function sumaAString(string, num)
{
	//alert(string);
	var numero;
	if (string.charAt(0) == '0')
	{
		numero = parseInt(string.charAt(1));
	}
	else 
		numero= parseInt(string);
	//alert(numero);
	numero = numero + num;
	//alert(numero);
	resultado = numero.toString();
	//alert("numero: "  + numero);
	if (string.charAt(0) == '0')
	{
		if (numero <  10)
			resultado = '0' + (numero % 10 ).toString();
	}
	//alert("resultado: "  + resultado);
	return resultado;
}

/*function redondear(resultado) {
//truncamos a 3 decimales
//alert("Inicio: "  + resultado);
resultado = truncar(resultado, 3);
//Separamos la parte entera y los dos primeros decimales
	resultado = resultado * 100;
//alert( "resultado1: " + resultado);
//Separamos el tercer decimal que es el que marcará el redondeo
	resto = (resultado * 10) % 10;
//alert ("resto: " + resto );
//alert ("resultadoAntes: " + resultado );
//Si el tercer decimal es mayor estrictamente que cuatro. 
	if (resto > 4.0)
		{
		//Redondeamos hacia arriba
			resultado = resultado + 1;
		}
	//alert ("resultadoDespues: " + resultado );
	//alert("resultadoFinal: "  + truncar(resultado/100, 2));
	return truncar(resultado/100, 2);
}

function truncar(numero, decimales)
{
//Conversion a String
var t=numero+"";
var indiceDecimal;
//alert("Antes de truncar:" + numero);
if ( (indiceDecimal=t.indexOf(".")) != "-1")
{
numero = parseFloat(t.substring(0,(indiceDecimal+decimales+1)));
}
//alert("DEspues de truncar:" + numero);
return (numero);
} */
function CalculaIVA() {
	try {
		// ahora debemos tener encuenta que parte lleva impuesto y que parte no lo lleva.	
		
		var valorP = precioProductoSinIVA.replace(',','.');
		//alert("Precio sin IVA: " + valorP);
		var valorSA = precioSASinIVA.replace(',','.');
if (debug) alert ("Valor sin Iva: " + valorP);
//alert ("Valor Servicio Adic: " + valorSA);
		if ((document.tarificador2.cantidad.value!='') && (document.tarificador2.cantidad.value > 0)) {
			//Correo Digital: Agregar el franqueo
			var tmpIDP = document.tarificador.IDP.value;
			var NumHojas=0;
			var tipoPostal=0;
			var destino=0;
			var i = 0;
			
			//Aplicamos el descuento en caso de ser postal Ebay
			if (tmpIDP == "307") {
				valorSA = valorSA * (1-descuentoEbay);
				valorP = valorP * (1-descuentoEbay);
			}
			
			// CAMBIOS PARA SA e-AR en CANARIAS
			if (tmpIDP=="020" || tmpIDP=="021" ||tmpIDP=="111" ||tmpIDP=="303" ||tmpIDP=="307" ||tmpIDP=="308"){
				if (document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CANARIAS" && document.tarificador.SA799				   .checked){
					valorSA = eAR;
				}
			}
			
			// CAMBIOS PARA SA e-AR en CEUTA EN CARTA CERTIFICADA NACIONAL
			if (tmpIDP=="020"){
				if (document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CEUTA" && document.tarificador.SA799				   .checked){
					valorSA = eARCC;
				}
			}
			
			// ELIMINACION PARA SA DUA EXPORTACION en CEUTA,MELILLA,CANARIAS EN CARTA CERTIFICADA NACIONAL
			if (tmpIDP=="020"){
				if ((document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CEUTA"||document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CANARIAS"||document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="MELILLA") && document.tarificador.SA797.checked){
					alert("El DUA de Exportación no aplica en origen. El precio no es válido.");
				}
			}
			
			// ELIMINACION PARA SA DUA EXPORTACION en CEUTA,MELILLA,CANARIAS EN CARTA CERTIFICADA URGENTE NACIONAL
			if (tmpIDP=="050"){
				if ((document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CEUTA"||document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CANARIAS"||document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="MELILLA") && document.tarificador.SA797.checked){
					alert("El DUA de Exportación no aplica en origen. El precio no es válido.");
				}
			}
			
			// ELIMINACION PARA SA DUA EXPORTACION en CEUTA,MELILLA,CANARIAS EN PAQUETE AZUL
			if (tmpIDP=="300"){
				if ((document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CEUTA"||document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CANARIAS"||document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="MELILLA") && document.tarificador.SA797.checked){
					alert("El DUA de Exportación no aplica en origen. El precio no es válido.");
				}
			}
			
			// ELIMINACION PARA SA DUA EXPORTACION en CEUTA,MELILLA,CANARIAS EN PAQUETE INTERNACIONAL ECONÓMICO
			if (tmpIDP=="301"){
				if ((document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CEUTA"||document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CANARIAS"||document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="MELILLA") && document.tarificador.SA797.checked){
					alert("El DUA de Exportación no aplica en origen. El precio no es válido.");
				}
				if (document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="PENÍNSULA Y BALEARES" && document.tarificador.SA797.checked)
				{
				valorSA = 0;
				}
			}
			
			// CAMBIOS PARA SA e-AR en CANARIAS en POSTAL 48/72
			if (tmpIDP=="980" || tmpIDP=="981"){
				tmpDesde=document.tarificador.S941.options[document.tarificador.S941.selectedIndex].value; 
				if (tmpDesde=="156" && document.tarificador.SA799.checked){
					valorSA = eAR4872;
				}
			}
			
			// CAMBIOS PARA SA e-AR en CEUTA en POSTAL EXPRES NACIONAL
			if (tmpIDP=="303"){
				tmpDesde=document.tarificador.S941.options[document.tarificador.S941.selectedIndex].value; 
				if (tmpDesde=="328" && document.tarificador.SA799.checked){
					valorSA = eARPEN;
				}
			}
			
			// CAMBIOS PARA SA e-AR en CEUTA y MELILLA en POSTAL 48/72
			if (tmpIDP=="980" || tmpIDP=="981"){
				tmpDesde=document.tarificador.S941.options[document.tarificador.S941.selectedIndex].value; 
				if (tmpDesde=="157" && document.tarificador.SA799.checked){
					valorSA = eAR4872C;
				}
				if (tmpDesde=="158" && document.tarificador.SA799.checked){
					valorSA = 0.78;
				}
			}
			
			// CAMBIOS PARA SA Retorno de informacion NOTIFICACIÓN en CANARIAS
			if (tmpIDP=="111")
			{
				if (document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CANARIAS" && document.tarificador.SA732				   .checked){
					valorSA = RetornoInfo;
				}
			}
			
			// CAMBIOS PARA SA Telegramas, giros urgentes y burofax interiores con acuse de recibo (PC) en CANARIAS
			if (tmpIDP=="403" ||tmpIDP=="500" ||tmpIDP=="503" ||tmpIDP=="602" ||tmpIDP=="907")
			{
				if (document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CANARIAS" && document.tarificador.SA701					.checked){
					valorSA = acuse;
				}
			}
			// CAMBIOS PARA SA Expedición por télex de radiotelegramas interiores en CANARIAS
			if (tmpIDP=="500" || tmpIDP=="505" )
			{
				if (document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CANARIAS" && document.tarificador.SA733.checked){
					valorSA = telex;
				}
			}
			
			// CAMBIOS PARA SA Expedición por télex de telegramas y radiotelegramas internacionales en CANARIAS
			if (tmpIDP=="501" || tmpIDP=="502" || tmpIDP=="506" )
			{
				if (document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CANARIAS" && document.tarificador.SA720.checked){
					valorSA = telex_int;
				}
			}
			
			if (tmpIDP=="600") {
				if ((ArrTramosCartaNacionIVA[i]=="S") && ((document.tarificador.S200.options[document.tarificador.S200.selectedIndex].value=="170") || (document.tarificador.S200.options[document.tarificador.S200.selectedIndex].value=="174"))) {
					if (document.tarificador.SA752.checked) {
						FranqueoIva = ArrTramosCartaNacionCertif[i];
						valorSA=0;
					} else {
						FranqueoIva = ArrTramosCartaNacion[i];
					}
					IVAFranqueo=1;
					FranqueoSinIva = 0;
				} else {
					FranqueoIva = 0;
					if (document.tarificador.SA752.checked){
						FranqueoSinIva = ArrTramosCartaNacionCertif[i];
						valorSA=0;
					} else {
						FranqueoSinIva = ArrTramosCartaNacion[i];
					}
					IVAFranqueo=0;
				}
			}

			if (tmpIDP=="601") {
				FranqueoIva = 0;
				FranqueoSinIva = ArrPostalesNacion[i];
				IVAFranqueo=0;
			}

			if (tmpIDP=="606") {
				document.tarificador2.IVA.value = 0.16;
				// si es europeo.	
				var bolEsEU = false;
				for (k=0; k < ue_con_iva.length; k++) {
					if (ue_con_iva[k]==destino){
						bolEsEU=true;			
						break;
					}
				} 
				//alert("Es UE: " + bolEsEU);
				if (bolEsEU) {
					if (ArrTramosCartaNacionIVA[i]=="S") {
						IVAFranqueo=1;
						if (document.tarificador.SA752.checked) {
							FranqueoIva = ArrTramosCartaInternZona1Certif[i];
						} else {
							FranqueoIva = ArrTramosCartaInternZona1[i];
						}
						FranqueoSinIva = 0;
					} else {
						FranqueoIva = 0;
						IVAFranqueo=0;
						if (document.tarificador.SA752.checked){
							FranqueoSinIva = ArrTramosCartaInternZona1Certif[i];
						} else {
							FranqueoSinIva = ArrTramosCartaInternZona1[i];
						}
						//alert(ArrTramosCartaInternZona1[i]);
					}
				} else {
					FranqueoIva = 0;
					IVAFranqueo=0;
					var bolEsEuropa=false;
					for (l=0; l < europa_sin_iva.length; l++) {						
						if (europa_sin_iva[l]==destino){
							bolEsEuropa=true;			
							break;
						}
					}
					//alert("bolEsEuropa: " + bolEsEuropa);
					if (bolEsEuropa){
						if (document.tarificador.S200.value=="AND"){
							if (document.tarificador.SA752.checked){
								FranqueoSinIva = ArrTramosCartaNacionCertif[i];
							} else {
								FranqueoSinIva = ArrTramosCartaNacion[i];
							}
						} else {
							if (document.tarificador.SA752.checked) {
								FranqueoSinIva = ArrTramosCartaInternZona1Certif[i];
							} else {
								FranqueoSinIva = ArrTramosCartaInternZona1[i];
							}
						}
					} else {
						if (document.tarificador.SA752.checked){
							FranqueoSinIva = ArrTramosCartaInternZona2Certif[i];
						} else {
							FranqueoSinIva = ArrTramosCartaInternZona2[i];
						}
					}
				}
				//alert("FranqueoSinIva: " + FranqueoSinIva);
			}

			//SNTS
			if (tmpIDP=="603") {
				j=1;
				var tmpNumNotifTotales=new Number(document.tarificador.S8.value);
				var tmpNumNotifTarificar=tmpNumNotifTotales-1000;
				if (tmpNumNotifTarificar<0) {
					tmpNumNotifTarificar=0;
				}

				if (tmpNumNotifTotales>300000){
					j=5;
				} else if (tmpNumNotifTotales>150000){
					j=4;
				} else if (tmpNumNotifTotales>50000){
					j=3;
				} else if (tmpNumNotifTotales>10000){
					j=2;
				}

				FranqueoIva=-1*ArrPrecioNotifTelemSeg[j]+tmpNumNotifTarificar*ArrPrecioNotifTelemSeg[j];
				//alert("FranqueoIva: " + FranqueoIva);
			}

			// SELLOS PERSONALIZADOS
			if (tmpIDP=="925") {
				var tmpNumPliegos=new Number(document.tarificador.S90.value);
				//FranqueoSinIva = tmpNumPliegos*ArrPrecioFranqueoSellos[1];
				FranqueoSinIva = ArrPrecioFranqueoSellos[1];
				document.tarificador2.cantidad.value=document.tarificador.S90.value;
			} 

			// GIRO ONLINE
			if (tmpIDP=="921") {
				FranqueoSinIva=parseFloat(redondear(document.tarificador.S2.value.replace(',','.'))*0.02);
				//alert(FranqueoSinIva);
			}

			var valorPExento = precioProductoExento.replace(',','.');
			var valorSAExento = precioSAExento.replace(',','.');

			//alert("valorP:" + parseFloat(document.tarificador2.IVA.value.replace(',','.')));
			// el precio base del servicio sin impuestos, menos la parte exenta, ahora no tiene sentido pero puede tener aplicación posterior.
			var resultado = parseFloat(valorP) + FranqueoIva - parseFloat(valorPExento);
			//alert("resultado:" + resultado);
			// redondeamos antes de impuestos.
			resultado = redondear(resultado);
			//alert("resultado2:" + resultado);

			if (parseFloat(document.tarificador2.IVA.value.replace(',','.'))!=-1) {
				//alert(document.tarificador2.IVA.value);
				//alert("redondear(resultado): " + redondear(resultado) + " redondear((resultado * parseFloat(document.tarificador2.IVA.value.replace(',','.')))): " +redondear((resultado * parseFloat(document.tarificador2.IVA.value.replace(',','.')))) )
				resultado = redondear(resultado) + redondear((resultado * parseFloat(document.tarificador2.IVA.value.replace(',','.')))) + parseFloat(valorPExento); 						
				resultado = redondear(resultado);
				//alert(resultado);
				// ya tenemos el precio base con su IVA.				
			}

			// los valores opcionales que apliquen impuestos.				
			var resultadoSA = parseFloat(valorSA);

			// los valores opcionales exentos de impuestos.		
			var resultadoSAExento = parseFloat(valorSAExento);

			//alert("resultadoSA: " + resultadoSA);
			//alert("resultadoSAExento: " + resultadoSAExento);
			//alert("IVA_SA: " + document.tarificador2.IVA_SA.value);
			//AJUSTE DE LA TARIFA PARA CANARIAS DE LOS SERVICIOS ADICIONALES:
			// - Admisión telefónica de telegramas
			// - Expedición por Télex de radiotelegramas interiores
			if (tmpIDP=="500" || tmpIDP=="505") {
				if (document.tarificador2.IVA_SA.options[document.tarificador2.IVA_SA.selectedIndex].text=="CANARIAS") {
					if (document.tarificador.SA718.checked) {
						resultadoSA = resultadoSA - impAdmTelefTelegr;
						resultadoSAExento = resultadoSAExento + impAdmTelefTelegr;
					}
					if (document.tarificador.SA733.checked){
						resultadoSA = resultadoSA - impExpedTelexRadiotelegInteriores;
						resultadoSAExento = resultadoSAExento + impExpedTelexRadiotelegInteriores;
					}
				}
			}
			//alert("resultadoSA: " + resultadoSA);
			//alert("resultadoSAExento: " + resultadoSAExento);

			// redondeamos antes de impuestos.
			
			resultadoSA = redondear(resultadoSA);
			//alert ("Resultado: " + resultado );
			resultado = parseFloat(resultado) + FranqueoSinIva + parseFloat(resultadoSA) + parseFloat((resultadoSA * parseFloat(document.tarificador2.IVA_SA.value.replace(',','.'))));		
			//alert(resultado);
			resultado = redondear(resultado);

			resultado = parseFloat(resultado) + parseFloat(redondear(resultadoSAExento));			

			// ya está calculado, redondeamos y pintamos.
			resultado = redondear(resultado);			
			//alert("SIN Replace:" + resultado);
			//alert("CON Replace:" + resultado.toString().replace('.',','));
			document.tarificador2.punitario.value = resultado.toString().replace('.',',');
			// por el número de unidades.				
			resultado = resultado * parseFloat(document.tarificador2.cantidad.value);	
			//alert("Cálculo del número de unidades:" + resultado);
			resultado = redondear(resultado);				
			//Rellenamos el campo con el valor del Producto final con IVA
			document.tarificador2.pfIVA.value = resultado.toString().replace('.',',');		
		} else
			document.tarificador2.pfIVA.value = '';
	} catch(e) {
		//ignoramos el error si no se aplica IVA
		//alert("Error:" + e);
		
	}
	
} 


// Funci?ajenador de eventos del objeto MSXML2.XMLHTTP 
// es llamada una vez procesada la solicitud de calculo de precio.
function actualizarPrecio(){   
                    
	if (req.readyState == 4) { //completado
	    
		if (req.status == 200){
		
			var a = req.responseText.split(";");	
			if (debug) alert(req.responseText);
			
			precioProductoSinIVA = a[0];
			precioProductoExento = a[1];
			precioSASinIVA = a[2];
			precioSAExento = a[3];
			
			//corrección para Publicorreo Nacional, idp=200
			//si el peso es menor o igual a 10 gramos
			if (document.tarificador.IDP.value=='200' && document.tarificador.S1.value <= 10) {
				if (document.tarificador.S3.value == 61) {
					precioProductoSinIVA = PublicorreoNacional10gramosZonaA;
				} else if (document.tarificador.S3.value == 62) {
					precioProductoSinIVA = PublicorreoNacional10gramosZonaB;
				}
			}
			
			//corrección Porcentaje sobre la cantidad girada NUEVO GIRO URGENTE INTERNACIONAL
			
			 if (document.tarificador.IDP.value=='989' && document.tarificador.S2.value <= 250) {
					precioProductoSinIVA = precioProductoSinIVA.replace(',','.');
					if ((document.tarificador.S200.value=="POR")) {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.002);
					} 
					else if ((document.tarificador.S200.value=="ARG") || (document.tarificador.S200.value=="COL") || (document.tarificador.S200.value=="CLY") || (document.tarificador.S200.value=="CRI") || (document.tarificador.S200.value=="CUB") || (document.tarificador.S200.value=="MRC") || (document.tarificador.S200.value=="PER") || (document.tarificador.S200.value=="RDA") || (document.tarificador.S200.value=="URU")) {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.002);
					}
					else if (document.tarificador.S200.value=="ECU") {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.002);
					}
				precioProductoSinIVA = precioProductoSinIVA.toString();
				precioProductoSinIVA = precioProductoSinIVA.replace('.',',');
				}
				
			if (document.tarificador.IDP.value=='989' && document.tarificador.S2.value > 250 && document.tarificador.S2.value <= 500) {
					precioProductoSinIVA = precioProductoSinIVA.replace(',','.');
					if ((document.tarificador.S200.value=="POR")) {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.005);
					} else if ((document.tarificador.S200.value=="ARG") || (document.tarificador.S200.value=="COL") || (document.tarificador.S200.value=="CLY") || (document.tarificador.S200.value=="CRI") || (document.tarificador.S200.value=="CUB") || (document.tarificador.S200.value=="MRC") || (document.tarificador.S200.value=="PER") || (document.tarificador.S200.value=="RDA") || (document.tarificador.S200.value=="URU")) {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.005);
					}
					else if (document.tarificador.S200.value=="ECU") {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.005);
				}
				precioProductoSinIVA = precioProductoSinIVA.toString();
				precioProductoSinIVA = precioProductoSinIVA.replace('.',',');
				}
			
			if (document.tarificador.IDP.value=='989' && document.tarificador.S2.value > 500 && document.tarificador.S2.value <= 1000) {
					precioProductoSinIVA = precioProductoSinIVA.replace(',','.');
					if ((document.tarificador.S200.value=="POR")) {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.0077);
					} else if ((document.tarificador.S200.value=="ARG") || (document.tarificador.S200.value=="COL") || (document.tarificador.S200.value=="CLY") || (document.tarificador.S200.value=="CRI") || (document.tarificador.S200.value=="CUB") || (document.tarificador.S200.value=="MRC") || (document.tarificador.S200.value=="PER") || (document.tarificador.S200.value=="RDA") || (document.tarificador.S200.value=="URU")) {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.0077);
					}
					else if (document.tarificador.S200.value=="ECU") {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.0077);
				}
				precioProductoSinIVA = precioProductoSinIVA.toString();
				precioProductoSinIVA = precioProductoSinIVA.replace('.',',');
				}
				
			if (document.tarificador.IDP.value=='989' && document.tarificador.S2.value > 1000 && document.tarificador.S2.value <= 2000) {
					precioProductoSinIVA = precioProductoSinIVA.replace(',','.');
					if ((document.tarificador.S200.value=="POR")) {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.01);
					} else if ((document.tarificador.S200.value=="ARG") || (document.tarificador.S200.value=="COL") || (document.tarificador.S200.value=="CLY") || (document.tarificador.S200.value=="CRI") || (document.tarificador.S200.value=="CUB") || (document.tarificador.S200.value=="MRC") || (document.tarificador.S200.value=="PER") || (document.tarificador.S200.value=="RDA") || (document.tarificador.S200.value=="URU")) {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.01);
					}
					else if (document.tarificador.S200.value=="ECU") {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.01);
				}
				precioProductoSinIVA = precioProductoSinIVA.toString();
				precioProductoSinIVA = precioProductoSinIVA.replace('.',',');
				}
				
			if (document.tarificador.IDP.value=='989' && document.tarificador.S2.value > 2000 && document.tarificador.S2.value <= 3000) {
					precioProductoSinIVA = precioProductoSinIVA.replace(',','.');
					if ((document.tarificador.S200.value=="POR")) {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.0125);
					} else if ((document.tarificador.S200.value=="ARG") || (document.tarificador.S200.value=="COL") || (document.tarificador.S200.value=="CLY") || (document.tarificador.S200.value=="CRI") || (document.tarificador.S200.value=="CUB") || (document.tarificador.S200.value=="MRC") || (document.tarificador.S200.value=="PER") || (document.tarificador.S200.value=="RDA") || (document.tarificador.S200.value=="URU")) {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.0125);
					}
					else if (document.tarificador.S200.value=="ECU") {
					precioProductoSinIVA = parseFloat(precioProductoSinIVA) + parseFloat(document.tarificador.S2.value * 0.0125);
				}
				precioProductoSinIVA = precioProductoSinIVA.toString();
				precioProductoSinIVA = precioProductoSinIVA.replace('.',',');
				}
			
			// Fin corrección Porcentaje sobre la cantidad girada NUEVO GIRO URGENTE INTERNACIONAL
			
			
			
			if ((document.tarificador.IDP.value=='503' || document.tarificador.IDP.value=='504') && document.tarificador.SA775.checked && document.tarificador.S32.value > 3) {	
				NumHojas = parseInt(document.tarificador.S32.value);
			    valor = precioProductoSinIVA.replace(',','.');
				valor = typeof(parseFloat(valor))=="number"?parseFloat(valor):0.0; 
				b = (0.17 * (NumHojas - 3));
				b = typeof(parseFloat(b))=="number"?parseFloat(b):0.0; 
				precioProductoSinIVA = valor + b;
				precioProductoSinIVA = precioProductoSinIVA.toString();
				precioProductoSinIVA = precioProductoSinIVA.replace('.',',');
				
			}
			
			if ((document.tarificador.IDP.value=='503' || document.tarificador.IDP.value=='504') && document.tarificador.SA776.checked && document.tarificador.S32.value > 3) {	
				NumHojas = parseInt(document.tarificador.S32.value);
			    valor = precioProductoSinIVA.replace(',','.');
				valor = typeof(parseFloat(valor))=="number"?parseFloat(valor):0.0; 
				b = (0.17 * (NumHojas - 3));
				b = typeof(parseFloat(b))=="number"?parseFloat(b):0.0; 
				precioProductoSinIVA = valor + b;
				precioProductoSinIVA = precioProductoSinIVA.toString();
				precioProductoSinIVA = precioProductoSinIVA.replace('.',',');
				
			}
			
			//corrección para Publicorreo Internacional, idp=201
			//si el peso es menor o igual a 10 gramos
			if (document.tarificador.IDP.value=='201' && document.tarificador.S1.value <= 10) {
				destino=document.tarificador.S200.value;
				var bolEsEU = false;
				for (k=0; k < ue_con_iva.length; k++) { //comprobar si pertenece a la ue con iva
					if (ue_con_iva[k]==destino){
						bolEsEU=true;			
						break;
					}
				}
				if (bolEsEU == false) {
					for (k=0; k < europa_sin_iva.length; k++) { //comprobar si pertenece a la ue sin iva
						if (europa_sin_iva[k]==destino){
							bolEsEU=true;			
							break;
						}
					}
				}

				if (bolEsEU) {
					//si pertenece a la ue (da igual si tiene iva o no, ya se le aplicará luego)
					precioProductoSinIVA = PublicorreoInternacional10gramosZonaA;
				} else {
					precioProductoSinIVA = PublicorreoInternacional10gramosZonaB;
				}
			}
			
			
			
//			//corrección para Giro Urgente Internacional - Marruecos
//			if (document.tarificador.IDP.value=='408' && document.tarificador.S200.value == 'MRC') {
//				precioProductoSinIVA = precioProductoSinIVA.replace(',','.');
//				//se suma al precio base la cantidad girada * porcentaje a aplicar dependiendo del tramo
//				if (document.tarificador.S2.value <= 500) {
//					precioProductoSinIVA = "" + (parseFloat(precioProductoSinIVA) + parseInt(document.tarificador.S2.value) * GiroUrgenteMarruecos500);
//				} else if (document.tarificador.S2.value <= 1000) {
//					precioProductoSinIVA = "" + (parseFloat(precioProductoSinIVA) + parseInt(document.tarificador.S2.value) * GiroUrgenteMarruecos1000);
//				} else {
//					precioProductoSinIVA = "" + (parseFloat(precioProductoSinIVA) + parseInt(document.tarificador.S2.value) * GiroUrgenteMarruecos9999);
//				}
//			}
			
			// para Prepagado Postal Exprés, existe la posibilidad de que se elija una
			// combinación de origen y destino sin servicio (no hay zona peninsular)
			// solo lo sabremos a la vuelta, pues el algoritmo de cáclulo de zonas está en el
			// servicio Web. Si un producto no está bien, por ser erróneo el SW devuelve 0
			// así que para este producto:				
			if ((document.tarificador.IDP.value=='304') && (precioProductoSinIVA==0)) {
				switch (idiomaGlobal){
					case (idiomaGlobal='ESP'):
						alert("Prepagado Postal Exprés no es válido para envíos peninsulares. Puede emplear Postal Exprés.");
						break;
					case (idiomaGlobal='CAT'):
						alert("Prepagado Postal Exprés no es válido para envíos peninsulares. Puede emplear Postal Exprés.");
						break;
					case (idiomaGlobal='VAL'):
						alert("Prepagado Postal Exprés no es válido para envíos peninsulares. Puede emplear Postal Exprés.");
						break;
					case (idiomaGlobal='GAL'):
						alert("Prepagado Postal Exprés no es válido para envíos peninsulares. Puede emplear Postal Exprés.");
						break;
					case (idiomaGlobal='EUK'):
						alert("Prepagado Postal Exprés no es válido para envíos peninsulares. Puede emplear Postal Exprés.");
						break;
					case (idiomaGlobal='ENG'):
						alert("Prepagado Postal Exprés no es válido para envíos peninsulares. Puede emplear Postal Exprés.");
						break;
					}
			// Para Paquete Postal, hay dos servicios adicionales que son excluyentes y su selección va en función del peso del paquete
			} else if ((document.tarificador.IDP.value=='410')){
				if (((document.tarificador.SA740.checked) && (document.tarificador.SA735.checked)) || ((document.tarificador.SA740.checked) && (document.tarificador.S1.value>'10000')) || ((document.tarificador.SA735.checked) && (document.tarificador.S1.value<'10000'))) {
					switch (idiomaGlobal){
						case (idiomaGlobal='ESP'):
							alert("La selección de servicios adicionales no es correcta.");
							break;
						case (idiomaGlobal='CAT'):
							alert("La selección de servicios adicionales no es correcta.");
							break;
						case (idiomaGlobal='VAL'):
							alert("La selección de servicios adicionales no es correcta.");
							break;
						case (idiomaGlobal='GAL'):
							alert("La selección de servicios adicionales no es correcta.");
							break;
						case (idiomaGlobal='EUK'):
							alert("La selección de servicios adicionales no es correcta.");
							break;
						case (idiomaGlobal='ENG'):
							alert("La selección de servicios adicionales no es correcta.");
							break;
						}	
					} else {
						CalculaIVA();
					}
			} else
				CalculaIVA();
		
	}	}
	
}

function startAjax(param){
	req = false;
	
	if (window.XMLHttpRequest) {
		try	{
			req = new XMLHttpRequest();
		} catch(e) {
			req = false;
		}
	} else if (window.ActiveXObject) {
		try	{
			req = new ActiveXObject("MSXML2.XMLHTTP");
		} catch(e){
			try	{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				req = false;
			}
		}
	}
			
	if (req) {
		req.onreadystatechange = actualizarPrecio;
		
		if (debug) alert(param);
		req.open("GET", direccion + param, true);
		req.send(null);
		 
	}
}

// funci?ue genera el XML de petici?e precio y llama al servicio web para obtener el precio mediante AJAX.
function calcularPrecio(version,idioma) {
	// validaremos todos los datos obligatorios del formulario	
	if (checkrequired(document.tarificador,idioma)) {
		// Si todo OK generamos el XMl
	  	var xml = generaXML(version);
	  	// asignamos el idioma para los mensajes javascript.
		//alert("xml:" + xml);
	  	idiomaGlobal = idioma;
	    // y ahora lo pedimos.
	    startAjax('?xmlPrecio=' + xml);
	}
}

function generaXML(version){

	
	var tmpIDP = ""
	var tmpIDC = ""
	var tmpCVal = 0;
	var xml= '<T v="' + version + '">'; // Quitamos la cabecera xml, no es necesaria
	// para todos los miembros del formulario.
    for (i=0; i < document.tarificador.elements.length; i++) { 		
		// en caso de ser el c?o de prodcuto.
		if (document.tarificador.elements[i].name=="IDP"){
			xml = xml + '<IDP>' + document.tarificador.elements[i].value + '</IDP>';
		    tmpIDP = document.tarificador.elements[i].value;
		} else { // para los dem?campos.
			// siempre que no sean botones
			if (document.tarificador.elements[i].type != "button") { 												
				// si son servicios adicionales
				if (document.tarificador.elements[i].name.substring(0,2)=='SA'){								
					// si est?seleccionados
					if (document.tarificador.elements[i].checked){ 
						var vsa = document.tarificador.elements[i].value;// si tienen valor
						if (vsa==-1) vsa=''; // si es menos uno no tienen campo para recoger datos.
						xml = xml + '<SA id="' + document.tarificador.elements[i].name.substring(2,document.tarificador.elements[i].name.length) + '">' + vsa + '</SA>';
						}					
				} else { // son caracteristicas
					if (document.tarificador.elements[i].id !=''){ // si no son campos fijos, no tiene id.
						if (document.tarificador.elements[i].type == "checkbox") {
							var valor='N';
							if (document.tarificador.elements[i].checked) 
								valor='S';
							xml = xml + '<C id="' + document.tarificador.elements[i].name.substring(1,document.tarificador.elements[i].name.length) + '">' + valor + '</C>'
						} else {
							if (document.tarificador.elements[i].name!=""){
                                tmpIDC=document.tarificador.elements[i].name.substring(1,document.tarificador.elements[i].name.length);
                                tmpCVal=document.tarificador.elements[i].value;
								if (tmpIDP=="200" && (tmpIDC=="1") & (tmpCVal<5)){
                                  //xml = xml + '<C id="' + tmpIDC + '">' + "5" + '</C>' 'por si habia que ajustar por gramos el publicorreo
								  xml = xml + '<C id="' + document.tarificador.elements[i].name.substring(1,document.tarificador.elements[i].name.length) + '">' + document.tarificador.elements[i].value + '</C>'
								} else {
								  xml = xml + '<C id="' + document.tarificador.elements[i].name.substring(1,document.tarificador.elements[i].name.length) + '">' + document.tarificador.elements[i].value + '</C>'
								}
							}
						}
					}
					
				}	
			}
		}
	
	} 	
//alert ("xml: " +xml );
	return xml + '</T>';
}
	
function cambiaCategoria(categoria) {		
	var x = document.getElementsByTagName('div');
	var b = false;					
	for (var i=0;i<x.length;i++) {			
	b = false;								
	try { b = (x[i].name.substring(0,3)=='IDC')} catch(e) {b = (x[i].id.substring(0,3)=='IDC');}// firefox o netescape.
	if (b) {
		if (x[i].name=='IDC' + categoria) 
			x[i].style.display = 'block';
		else if (x[i].id=='IDC' + categoria) // firefox o netescape.
			x[i].style.display = 'block';
		else 
				x[i].style.display = 'none';			
		}							
	}

}


