﻿// --------------------------------------------------------------------
//
// Script 'Highlight2Translate_CA' v0.1, 28/feb/2009
// por 'http://google.dirson.com', basado en 'http://userscripts.org/scripts/show/35187'
//
// Este script Greasemonkey traduce el texto de una página web que marques con el ratón 
// al català, a través de la tecnología de traducción de Google.
//
// Para instalarlo, necesitas primero Greasemonkey: http://greasemonkey.mozdev.org/
// Luego reinicia Firefox, y vuelve a visitar este script
// Tras ello, accede a al Menú de Firefox: Herramientas > Greasemonkey > Install User Script..."
// Simplemente acepta la configuración inicial y pulsa "Install".
// 
// Para desinstalarlo, accede al Menú de Firefox: Herramientas > Greasemonkey > Manage User Scripts...
// Selecciona 'Highlight2Translate_CA' y pulsa "Uninstall"
//
// --------------------------------------------------------------------


// ==UserScript==
// @name           Highlight2Translate_CA
// @namespace      google
// @description    Traduce el texto que marques al català, con el Traductor de Google
// @include        *
// ==/UserScript==

// puedes editar el valor de 'languageAfterTranslation' para personalizar el idioma al que 
// se traduce. En esta versión 'Highlight2Translate_CA' el idioma por defecto es 'SPANISH'
languageAfterTranslation = 'ca'

// crea la caja oculta de traducción y le da un estilo
window.div=document.createElement("div")
var divStyle="position:absolute;display:none;z-index:1000;border-left:solid 0.5px #266C6F;border-top:solid 1px #266C6F;border-right:solid 2.5px #266C6F;border-bottom:solid 2px #266C6F;background-color:#ECE7C5;padding-left:5px;padding: 1pt 3pt 1pt 3pt;font-size: 10pt;font-family: sans-serif;color: #010122;"
window.div.setAttribute("style",divStyle)
document.body.appendChild(window.div);

// en el momento en que los scripts de Google se han cargado, se añade el evento 'mouseup'
// a la página
function languageLoaded() {
	window.addEventListener("mouseup",window.mouseUp,false)
	}

// el evento 'mouseup' obtiene el texto marcado y se lo pasa como parámetro a
// la función 'window.detectLanguage', para que detecte el idioma original de este texto
window.mouseUp=function (event){
						window.event=event
						if (window.event.target==window.div)
						return
						window.div.style.display="none"
						window.text=window.getSelection();
						if (window.text=="")
							return;
						unsafeWindow.google.language.detect(window.text,window.detectLanguage)
					}

// detecta el idioma del texto marcado, y lo traduce					
window.detectLanguage=function(result) {
							window.text = window.text.toString()
							unsafeWindow.google.language.translate(window.text,result.language,languageAfterTranslation.toString(),translateResult)
							}
		
// si la traducción existe, muestra la caja con la traducción dentro	
window.translateResult=function(result){
							if (result.translation)
							{
							window.div.innerHTML = result.translation;
							// puedes editar la posición horizontal de la traducción
							// cambiando el valor de 'horizontalOffset'
							var horizontalOffset = 10
							window.div.style.left=(window.event.clientX+window.scrollX+horizontalOffset).toString()+"px"
							// puedes editar la posición vertical de la traducción
							// cambiando el valor de 'verticalOffset'
							var verticalOffset = 10	
							window.div.style.top=(window.event.clientY+window.scrollY+verticalOffset).toString()+"px"
							window.div.style.display="inline"
							}
						}

// se incluye el script de la API Ajax de traducción de Google
// Más info en: http://google.dirson.com/post/3920-api-traduccion-idiomas-ajax/
unsafeWindow.doneLoadingJSAPI = function() { unsafeWindow.google.load('language','1', {"callback" : languageLoaded}); }
var script = document.createElement('script'); script.src = 'http://www.google.com/jsapi?callback=doneLoadingJSAPI'; script.type = "text/javascript"; document.getElementsByTagName('head')[0].appendChild(script); 

