/*Libreria para usar urlenconde y urldecode en js. Para usar:  Url.encode("TEXTO AQUI"); Url.decode("TEXTO+AQUI");
Se usa para pasar el codigo del richedit a los temps, y que no sean interpretados como html*/
var Url={encode:function(string){return escape(this._utf8_encode(string));},decode:function(string){return this._utf8_decode(unescape(string));},_utf8_encode:function(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;},_utf8_decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++;}else if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2;}else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3;}}return string;}};

var ultimoInputId ; 
function tomarUltimafrase(text )
{
	
	frases = text.split(/\.|\n/);  //separa por retornos de carro o puntos
	if (frases instanceof Array) return frases[frases.length - 1];
	else return text;

}


 google.load("language", "1"); // imprescindible para el gtranslate!!! DEBE ESTAR FUERA DE DOCUMENT READY!ª!


/* DOCUMENTE READY*/

$(document).ready(function(){


	$('input.inputcampo, .textareacampo').keypress(function(event) //LO FUNDAMENTAL: CUANDO SE METE TEXTO EN EL CAMPO , p.e. campo HEADER
	{
		idInput = $(this).attr('id');
		tipoInput = this.tagName.toLowerCase();

		teclaCode = event.charCode;
		if (!teclaCode ) teclaCode = event.keyCode

		if ( $('#traduccioncheckbox').attr("checked") == true)
		{
				if ( ((teclaCode == 13)) ||  ((teclaCode == 46)) )  {    


					// se pulsa return: se ejecuta el codigo:


					//1. reconocimiento del idioma:
					 JObjectInput = $(this);
					 if (JObjectInput == undefined) return 0; 
					 text = JObjectInput.val();
//					 var $el = JObjectInput, text = $el.text() || $el.val();
					 //en text esta el texto a traducir;



					if (tipoInput=="textarea")
					{ text = tomarUltimafrase(text );	}





					google.language.detect(text, function(result) { 
						if (!result.error && result.language) {										
						$('#titulo-traduccion').html('Escribiendo en "'+result.language+'"');

						var otro_lang = "en";  if (result.language == "en") otro_lang = "es";
						var palabras = $.trim(text).split(" ");  //TO_DO: aclarar que la separacion sea correcta (tenga en cuenta comas, y demas)
						

						var i=0;
						palabras_originales = new Array(palabras.length-1);
						palabras_traducidas = new Array(palabras.length-1);
						num_traducciones = 0;
						var_traducciones = "";
//						while (traduce_si_no)
						for (var i = 0; i < palabras.length ;  i++)
						{
							original = palabras[i];
							$.translate( original , result.language,  otro_lang, { 
								start:function(original) {  palabras_originales.push(original);  $('#traduccion-automatica-ejemplo').html('un mommmento...')}, complete: function (trad) { 

									palabras_traducidas.push(trad);
									num_traducciones++;
									if (num_traducciones == palabras.length ) {    // CUANDO HA ACABADO LA TRAD DE TODAS LAS PALABRAS UNA A UNA
										var_traducciones = "";
										for (var j = 0; j < palabras_traducidas.length ;  j++)
										 if (palabras_originales[j] != undefined) {
											var_traducciones += palabras_originales[j]+":"+palabras_traducidas[j]+"#";
										}

	
										$.translate(text, result.language, otro_lang, {  // HACEMOS LA TRAD DEL TEXTO COMPLETO
											start: function(){ $('#pie-traduccion').html('traduciendo de '+result.language+' a '+otro_lang);},
											complete: function(trad_google) {

												/*y antes de aplicar el filtro de diccionario creamos un array con la info de la trad inversa de cada pal*/
												var palabras_google = $.trim(trad_google).split(" ");  //TO_DO: aclarar que la separacion sea correcta (tenga en cuenta comas, y demas)
												palabras_google_originales = new Array(palabras_google.length);
												palabras_inversas = new Array(palabras_google.length);
												num_traducciones_inv = 0;
												var_traducciones_inversas = "";
												for (var i = 0; i < palabras_google.length ;  i++)
												{
													pp = palabras_google[i];
													$.translate( pp ,  otro_lang, result.language, { 
													start:function(pp) {  palabras_google_originales.push(pp);  }, complete: function (trad_inv) { 
															palabras_inversas.push(trad_inv);
															num_traducciones_inv++;
															//alert(num_traducciones_inv + " ("+palabras_google.length +")- "+trad_inv);
															if (num_traducciones_inv >= palabras_google.length ) 
																{    // CUANDO HA ACABADO LA TRAD DE TODAS LAS PALABRAS UNA A UNA
																var_traducciones_inversas = "";
																for (var j = 0; j < palabras_inversas.length ;  j++)
																 if (palabras_google_originales[j] != undefined) {
																	var_traducciones_inversas += palabras_google_originales[j]+":"+palabras_inversas[j]+"#";	 
																		}//del if dentro del for																			
																   //alert(var_traducciones_inversas );



																		// NUCLEO DE TODOOO
																		$('#pie-traduccion').html(trad_google).slideDown();
								
																		$('#traduccion-automatica-ejemplo').load(
																			'traduccion-includes/traduccion.php',
																				{
																				'accion': '',
																				'langOriginal': (result.language),
																				'text': Url.encode(text),
																				'traduccion_google': trad_google,
																				'var_traducciones_inversas': var_traducciones_inversas,    
																				'var_traducciones': var_traducciones,
																				'idInput': idInput
																				}
																		 )  //de load













																} //del if
															}//del complete
													}); //del translate 
												} //del for



											}	//complete									
										} ); //translate
											
										
	






									}




								} //de complete
							}); //de translate

						} //while



						//ajax

						}
				    }); // de google lang detect



					if ((tipoInput == "input")&&(teclaCode == 13)) return false;
				}
		}
	}).focus(function() {
		if ($(this).attr('id') != ultimoInputId ) { 
				//limpiamos la data de las traducciones: 
				$("#traduccion-automatica-ejemplo").html("<small><em>escribe la frase y pulsa return para asistencia.</em></small>");		
		} 
		ultimoInputId = $(this).attr('id');
	});	
});





// FUNCIONES USADAS EN traduccion.php

