
	// fichero: mesosgroupama.js
	// funcion: librería de acceso al servicio web de cotizaciones de Mesos-Groupama
	//          Proporciona cotizaciones para ampliaciones de garantía en función
	//          de los parámetros de entrada recibidos
	//


	// Funcion que realiza la llamada AJAX al servicio web a traves de un script PHP5
	// El script colocará el resultado en el div con id "resultado"
	function MesosGroupama(	funcion, mostrarboton, resultado, user, pass, tipobien, preciobien,
							subagente, marca, modelo, numeroserie, fechacompra, fechaefecto, 
							nombre, apellidoprimero, apellidosegundo, nif, tipovia, direccion1,
							direccionnumero, direccion2, codigopostal, poblacion, provincia,
							telefono, email, cccentidad, cccoficina, ccccontrol, ccccuenta,
							ccctitular, cccformapago) {

		if (funcion == "cotizar") {

			$("#" + resultado).fadeOut("slow");
			// Se oculta tambien la zona de contratacion (por si estuviera visible)
			$(".datos_contratar").fadeOut("slow");
			$(".datos_contratar").attr("toolDiv", 1);

			$(".boton_contratar").fadeOut("slow");
			$(".boton_contratar").attr("toolDiv", 1);
			
			$("#contratacion").fadeOut("slow");
			
	
			var tipollamada = "POST";
			var url = "lib_php/mesosgroupama.php";
			var params = "funcion=cotizar&user=" + user + "&pass=" + SHA1(pass) + "&tipobien=" + tipobien + "&preciobien=" + preciobien;

			// Hacer la llamada al script de cotizaciones
			$.ajax({
				type: tipollamada,
				url: url,
				data: params,
				dataType: "xml",
				success: function(xml) {
					procesaCotizar(xml, mostrarboton, resultado);
				}
			});
		
		} else if (funcion == "contratar") {

			$("#" + resultado).fadeOut("slow");
			
			var tipollamada = "POST";
			var url = "lib_php/mesosgroupama.php";
			var params = 	"funcion=contratar&user=" + user + "&pass=" + SHA1(pass) + "&tipobien=" + tipobien + "&preciobien=" + preciobien +
							"&subagente=" + subagente + "&marca=" + marca + "&modelo=" + modelo + "&numeroserie=" + numeroserie +
							"&fechacompra=" + fechacompra + "&fechaefecto=" + fechaefecto + "&nombre=" + nombre +
							"&apellidoprimero=" + apellidoprimero + "&apellidosegundo=" + apellidosegundo + "&nif=" + nif +
							"&tipovia=" + tipovia + "&direccion1=" + direccion1 + "&direccionnumero=" + direccionnumero +
							"&direccion2=" + direccion2 + "&codigopostal=" + codigopostal + "&poblacion=" + poblacion +
							"&provincia=" + provincia + "&telefono=" + telefono + "&email=" + email + "&cccentidad=" + cccentidad +
							"&cccoficina=" + cccoficina + "&ccccontrol=" + ccccontrol + "&ccccuenta=" + ccccuenta +
							"&ccctitular=" + ccctitular + "&cccformapago=" + cccformapago;


			// Hacer la llamada al script de cotizaciones
			$.ajax({
				type: tipollamada,
				url: url,
				data: params,
				dataType: "xml",
				success: function(xml) {
					procesaContratar(xml, mostrarboton, resultado);
				}
			});

		} // if funcion

	} // MesosGroupama

	
	// Procesa los datos que recibe como respuesta a una cotizacion
	// "resultado" representa el "id" del campo en el que colocar los resultados
	function procesaCotizar(xml, mostrarboton, resultado) {

		cot = $(xml).find("cotizacion").text();
		neto = $(xml).find("neto").text();
		consorcio = $(xml).find("consorcio").text();
		clea = $(xml).find("clea").text();
		ips = $(xml).find("ips").text();

		if (cot != "") {
			if (mostrarboton == true) {
				$("#" + resultado).html(cot + ' &#8364; (Ampliaci&oacute;n de garant&iacute;a)&nbsp;&nbsp;<input class="boton" type=submit value="Contratar" onclick="Javascript:toogleContratar();">');
			} else {
			alert(cot);
				$("#" + resultado).html(cot);
			}		
			$("#" + resultado).fadeIn("slow");
		} // mostrarboton

	} // procesaCotizar
	
	
	// Procesa los datos que recibe como respuesta a una contratacion
	// "resultado" representa el "id" del campo en el que colocar los resultados
			function procesaContratar(xml, mostrarboton, resultado) {

			pol = $(xml).find("poliza").text();
			if (pol != "") {
				
				if (mostrarboton == true) {
					url = 'http://groupama.contenerte.com/signup/viewPdf/' + pol;
					html = 'Se ha contratado la p&oacute;liza n&uacute;mero: ' + pol +
					'<br /><br /><a class="boton" href="'+ url + '">Ver PDF</a>';
	
					$("#" + resultado).html(html);
				} else {
					$("#" + resultado).html(pol);
				} // if mostrarboton
			$("#" + resultado).fadeIn("slow");
			}

			} // procesaContratar

	
	
	// Muestra u oculta el formulario de contratación
	function toogleContratar() {
		if ($(".datos_contratar").attr("toolDiv") == "1" ) {
			$(".datos_contratar").fadeIn("slow");
			$(".datos_contratar").attr("toolDiv", 0);
			
			$(".boton_contratar").fadeIn("slow");
			$(".boton_contratar").attr("toolDiv", 0);
		} else {
			$(".datos_contratar").fadeOut("slow");
			$(".datos_contratar").attr("toolDiv", 1);

			$(".boton_contratar").fadeOut("slow");
			$(".boton_contratar").attr("toolDiv", 1);
			
			$("#contratacion").fadeOut("slow");

		}
	} // toogleContratar

	
	// Devuelve un documento en formato PDF con los datos de
	// la ampliación de garantía
	function verPdf() {
		
		var url = "lib_php/verPdf.php";
		var params = 	"id=" + pol + "&cotizacion=" + cot + "&neto=" + neto + "&consorcio=" + consorcio + "&clea=" + clea +
						"&ips=" + ips + "&user=" + user + "&pass=" + SHA1(pass) + "&tipobien=" + tipobien + "&preciobien=" + preciobien +
						"&subagente=" + subagente + "&marca=" + marca + "&modelo=" + modelo + "&numeroserie=" + numeroserie +
						"&fechacompra=" + fechacompra + "&fechaefecto=" + fechaefecto + "&nombre=" + nombre +
						"&apellidoprimero=" + apellidoprimero + "&apellidosegundo=" + apellidosegundo + "&nif=" + nif +
						"&tipovia=" + tipovia + "&direccion1=" + direccion1 + "&direccionnumero=" + direccionnumero +
						"&direccion2=" + direccion2 + "&codigopostal=" + codigopostal + "&poblacion=" + poblacion +
						"&provincia=" + provincia + "&telefono=" + telefono + "&email=" + email + "&cccentidad=" + cccentidad +
						"&cccoficina=" + cccoficina + "&ccccontrol=" + ccccontrol + "&ccccuenta=" + ccccuenta +
						"&ccctitular=" + ccctitular + "&cccformapago=" + cccformapago;

		window.location.href = url + "?" + params;
		
	} // verPdf
	
	
	/**
	*
	*  Secure Hash Algorithm (SHA1)
	*  http://www.webtoolkit.info/
	*
	**/
	function SHA1 (msg) {
	 
		function rotate_left(n,s) {
			var t4 = ( n<<s ) | (n>>>(32-s));
			return t4;
		};
	 
		function lsb_hex(val) {
			var str="";
			var i;
			var vh;
			var vl;
	 
			for( i=0; i<=6; i+=2 ) {
				vh = (val>>>(i*4+4))&0x0f;
				vl = (val>>>(i*4))&0x0f;
				str += vh.toString(16) + vl.toString(16);
			}
			return str;
		};
	 
		function cvt_hex(val) {
			var str="";
			var i;
			var v;
	 
			for( i=7; i>=0; i-- ) {
				v = (val>>>(i*4))&0x0f;
				str += v.toString(16);
			}
			return str;
		};
	 
	 
		function Utf8Encode(string) {
			string = string.replace(/\r\n/g,"\n");
			var utftext = "";
	 
			for (var n = 0; n < string.length; n++) {
	 
				var c = string.charCodeAt(n);
	 
				if (c < 128) {
					utftext += String.fromCharCode(c);
				}
				else if((c > 127) && (c < 2048)) {
					utftext += String.fromCharCode((c >> 6) | 192);
					utftext += String.fromCharCode((c & 63) | 128);
				}
				else {
					utftext += String.fromCharCode((c >> 12) | 224);
					utftext += String.fromCharCode(((c >> 6) & 63) | 128);
					utftext += String.fromCharCode((c & 63) | 128);
				}
	 
			}
	 
			return utftext;
		};
	 
		var blockstart;
		var i, j;
		var W = new Array(80);
		var H0 = 0x67452301;
		var H1 = 0xEFCDAB89;
		var H2 = 0x98BADCFE;
		var H3 = 0x10325476;
		var H4 = 0xC3D2E1F0;
		var A, B, C, D, E;
		var temp;
	 
		msg = Utf8Encode(msg);
	 
		var msg_len = msg.length;
	 
		var word_array = new Array();
		for( i=0; i<msg_len-3; i+=4 ) {
			j = msg.charCodeAt(i)<<24 | msg.charCodeAt(i+1)<<16 |
			msg.charCodeAt(i+2)<<8 | msg.charCodeAt(i+3);
			word_array.push( j );
		}
	 
		switch( msg_len % 4 ) {
			case 0:
				i = 0x080000000;
			break;
			case 1:
				i = msg.charCodeAt(msg_len-1)<<24 | 0x0800000;
			break;
	 
			case 2:
				i = msg.charCodeAt(msg_len-2)<<24 | msg.charCodeAt(msg_len-1)<<16 | 0x08000;
			break;
	 
			case 3:
				i = msg.charCodeAt(msg_len-3)<<24 | msg.charCodeAt(msg_len-2)<<16 | msg.charCodeAt(msg_len-1)<<8	| 0x80;
			break;
		}
	 
		word_array.push( i );
	 
		while( (word_array.length % 16) != 14 ) word_array.push( 0 );
	 
		word_array.push( msg_len>>>29 );
		word_array.push( (msg_len<<3)&0x0ffffffff );
	 
	 
		for ( blockstart=0; blockstart<word_array.length; blockstart+=16 ) {
	 
			for( i=0; i<16; i++ ) W[i] = word_array[blockstart+i];
			for( i=16; i<=79; i++ ) W[i] = rotate_left(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1);
	 
			A = H0;
			B = H1;
			C = H2;
			D = H3;
			E = H4;
	 
			for( i= 0; i<=19; i++ ) {
				temp = (rotate_left(A,5) + ((B&C) | (~B&D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;
				E = D;
				D = C;
				C = rotate_left(B,30);
				B = A;
				A = temp;
			}
	 
			for( i=20; i<=39; i++ ) {
				temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;
				E = D;
				D = C;
				C = rotate_left(B,30);
				B = A;
				A = temp;
			}
	 
			for( i=40; i<=59; i++ ) {
				temp = (rotate_left(A,5) + ((B&C) | (B&D) | (C&D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;
				E = D;
				D = C;
				C = rotate_left(B,30);
				B = A;
				A = temp;
			}
	 
			for( i=60; i<=79; i++ ) {
				temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;
				E = D;
				D = C;
				C = rotate_left(B,30);
				B = A;
				A = temp;
			}
	 
			H0 = (H0 + A) & 0x0ffffffff;
			H1 = (H1 + B) & 0x0ffffffff;
			H2 = (H2 + C) & 0x0ffffffff;
			H3 = (H3 + D) & 0x0ffffffff;
			H4 = (H4 + E) & 0x0ffffffff;
	 
		}
	 
		var temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4);
	 
		return temp.toLowerCase();
	 
	}
	
