﻿<?xml version="1.0" encoding="utf-8" ?>
<Module>
<ModulePrefs 
	title="Direct Translator"
	title_url="http://www.google.com/language_tools"
	author="BlackFlo"
	author_email="blackflo@gmail.com" 
	author_affiliation="none"
	author_location="Toulouse, FRANCE"
	description="Par défaut, traduit n'importe quelle langue en Français et traduit le français en anglais. Il est possible de changer la langue de traduction par défaut. Ce gadjet utilise l'API de Google traduction."
	screenshot="http://BlackFlo.googlepages.com/gg_translator.png"
	thumbnail="http://BlackFlo.googlepages.com/gg_translator.png"
	height="200">
	<Locale lang="fr" />
	<Require feature="setprefs" />
	<Require feature="dynamic-height"/>
	<Require feature="analytics"/>
</ModulePrefs>
<UserPref name="lang" display_name="By default, translate text into " default_value="fr" datatype="enum">
	<EnumValue value="fr" display_value="Français"/>
	<EnumValue value="en" display_value="English"/>
	<EnumValue value="es" display_value="Español"/>
	<EnumValue value="de" display_value="Deutch"/>
</UserPref>
  <Content type="html">
  <![CDATA[
<html>
<!-- Direct translator by BlackFlo v 2.2 not released -->
  <head>
    <title>Direct Translator</title>
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
		/* ggGadjet Direct Translator by BlackFlo: v. 2.2 Not released. */
		var firstInput = true;
		var lang = null;
		var langToTranslate = 'fr';
		google.load("language", "1");
		/* ---- Récupération des préférences utilisateur ---- */
		try{
		var prefs = new gadgets.Prefs();
		var prefLang = prefs.getString("lang");
		langToTranslate = prefLang;
		}catch(e){/*nothing*/}
		
		/* ---- Chargement de google analytics ---- */
		try{
			_IG_Analytics("UA-23159010-3", "/direct_translator");
		}catch(e){/*nothing*/}
	 
		function remove_markup(chaine){
			var reg1=new RegExp("(<)", "g");
			var reg2=new RegExp("(>)", "g");
			chaine = chaine.replace(reg1,"&lt;");
			chaine = chaine.replace(reg2,"&gt;");
			return chaine;
		}		
		
		function translate() {
			try{
				_IG_Analytics("UA-23159010-3", "/direct_translator/function_translate");
			}catch(e){}
			var text = remove_markup(document.form.input.value);
			var langIn;var langOut;
			if (text.length > 1){
				displayMessage('on');
				google.language.detect(text, function(result) {
					if (!result.error && result.language) {
					langIn = result.language;
					if (result.language == 'fr' && langToTranslate == 'fr'){
						langOut = 'en';
					}else{
						langOut = langToTranslate;
					}	
					google.language.translate(text, result.language, langOut,
												function(result) {
						if (result.translation) {
								for (l in google.language.Languages) {
									if (google.language.Languages[l] == langOut) {
										var languageOut = l;
									}
									if (google.language.Languages[l] == langIn) {
										var languageIn = l;
									}
								}
							displayTranslation("<b><i>From " + languageIn + ", translated into " + languageOut + ":</i></b><br/>", result.translation);
							displayMessage('off');
							}else{
							displayTranslation('<b><i><font color="#FF0000">Non traduit / Not translated</font></i></b><br>', text);
							displayMessage('off');
						}
					  });
					}
				  });
			}else{
			var translated = document.getElementById("translation");
			if (text.length ==0){translated.innerHTML = '<div align="center"><img src="http://blackflo.googlepages.com/ggPowered.jpg" title="Powered by Google Translation" border="0" width="106" height="50"/></div>';}
			else{translated.innerHTML = '<i><br/>Une lettre ne suffit pas pour détecter la langue dans laquelle vous écrivez.<br/>A letter is not enough to detect language.</i>';}	
			/* Ajustement auto de la taille du gadjet */
			try{
			    gadgets.window.adjustHeight();
			}catch(e){/*Do nothing*/}			
			}
		}

		function changeOption(){
			var html = '<SELECT name="option" onChange="langToTranslate = this.value;">';
			html += '<option value="fr">FRANCAIS</option>';
			html += '<option value="en">ENGLISH</option>';
			html += '<option value="es">ESPAÑOL</option>';
			html += '<option value="de">DEUTCH</option>';
			html += '<option value="fr">------------</option>';
			for (l in google.language.Languages) {
				html += '<option value="' + google.language.Languages[l] +'">' + l + '</option>';
			}
			html += '</SELECT>';
			var obj = document.getElementById("options");
			obj.innerHTML = html;
		}

		function inputFocus(obj){
			if (firstInput == true){
				firstInput = false;
				obj.value = "";
			}
		}

		function checkKey(obj){
		obj.onkeydown = function keyDown(event)
			{
				if (!event&&window.event)
				{
					event = window.event;
				}
				if(getKeyCode(event) == 13)
				{
					translate();
				}
			};
		}

		function getKeyCode(evenement){
			for (prop in evenement)
			{
				if(prop == 'which')
				{
					return evenement.which;
				}
			}
			return event.keyCode;
		}	

		function displayTranslation(header,texte){
			var translated = document.getElementById("translation");
			var html = texte;
			/*
			if (texte.length > 150){
				html  = '<span onmouseover="window.status = \'Cliquez sur ALL pour afficher tout le texte\';" onmouseout="window.status=\'\';">';
				html += texte.substring(0,147) + '<span style="color:#00008F;cursor:pointer;" onclick="displayPopup(\''+header+'\',\''+texte+'\')";>... <b>[ALL]</b></span>';
				html += '</span>';
			}*/
			translated.innerHTML = header + html;
			/* Ajustement auto de la taille du gadjet */
			try{
			    gadgets.window.adjustHeight();
			}catch(e){/*Do nothing*/}
		}
		/*  SUPPRIMé dans la version 2, remplacé par l'adaptation automatique de la taille du gadjet.
		function displayPopup(header, texte){
			w=open('', 'all_texte', config='height=300, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=yes, location=no, directories=no, status=no');
			w.document.write('<html><head><title>Direct Translator</title></head><body>');
			w.document.write(header + '<br>');
			w.document.write('<p style="font-size:9pt">' + texte + '</p>');
			w.document.write('<p align="center" onclick="window.close();" style="color:#00008F;cursor:pointer;font-size:9pt">[Fermer]</p>');
			w.document.write('</body>');
			w.document.close();
		}*/

		function writeDefaultLang(){
			var langue = 'French';
			switch(langToTranslate){
				case 'fr':
				langue = 'Français';break;
				case 'en':
				langue = 'English';break;
				case 'de':
				langue = 'Deutch';break;
				case 'es':
				langue = 'Español';break;
			}
			return ('[' + langue + ']');
		}
		function displayMessage(choix){
			var mess = document.getElementById("message");
			if (choix == 'on'){
				mess.innerHTML = 'Text <i>(press Enter to translate):<div style="position:absolute;width:101px;height:17px;z-index:1;left:1px;top:1px;background-color:#FF0000"><font size="2" color="#FFFFFF">Translating...</font></div>';
			}else{
				mess.innerHTML = 'Text <i>(press Enter to translate):';
			}
		}
	</script>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  </head>
  <body>
	 <div id="message" style="font-size:9pt">Text <i>(press Enter to translate):</i></div>
	 <form name="form" style="margin:0;">
     <textarea name="input" rows="5" cols="37" style="font-size:9pt;width:100%" onfocus="inputFocus(this);" onkeydown="checkKey(this);">Ici, votre texte à traduire.
     </textarea></form>
     <div style="margin:0;">
     <span><input type="button" name="action" value="Translate!" onclick="translate();" /></span>
     <span id="options" ><a style="font-size:9pt;color:#00008F;cursor:pointer;" onclick="changeOption();">Change default language <script type="text/javascript">document.write(writeDefaultLang());</script></a></span>
     </div>

    <div id="translation" style="margin:3px;font-size:9pt;padding-top:5px;">
	<div align="center"><img src="http://blackflo.googlepages.com/ggPowered.jpg" title="Powered by Google Translation" border="0"/></div>
	</div>
    <font color="#FF0000"></font>
  </body>
</html>
  ]]>
  </Content>
</Module>
