/*
 * translate.js
 * 
 * Copyright (c) Takao Tagawa (dounokouno.com)
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Since:     2010-01-21
 * Modified:  2011-12-07
 *
 * jQuery 1.6.4
 * 
*/

(function($){
	$(function(){
		// 初期状態で原文にフォーカス
		$("#original textarea").focus();
		
		// 初期状態で翻訳
		/*
		var category = $("#category").val();
		var text = $("#original textarea").val();
		$.translate.translate(category, text);
		*/
		
		// 翻訳ボタン
		$("#translate").click(function(){
			var category = $("#category").val();
			var text = $("#original textarea").val();
			$.translate.translate(category, text);
		});
		
		// キーアップで翻訳
		/*
		$("#original textarea").bind("keyup", function(){
			var category = $("#category").val();
			var text = $("#original textarea").val();
			$.translate.translate(category, text);
		});
		*/
		
		// 翻訳種別の変更
		$("#category").change(function(){
			var category = $("#category").val();
			var text = $("#original textarea").val();
			$.translate.translate(category, text);
		});
		
		// このテキストを翻訳ボタン
		$(".retranslate").click(function(){
			var category = $("#category").val();
			if (category == "ej") {
				$("#category option").removeAttr("selected");
				$("#category option[value='je']").attr("selected", "selected");
			} else if (category == "je") {
				$("#category option").removeAttr("selected");
				$("#category option[value='ej']").attr("selected", "selected");
			}
			category = $("#category").val();
			var text = $(this).parent().next().children().val();
			$("#original textarea").val(text);
			$.translate.translate(category, text);
		});
		
		// このテキストをメモする
		$("button.note").click(function(){
			var text = $(this).parent().next().children().val();
			$.translate.note(text);
		});
		
		// メモをクリアボタン
		$("#memo .clear").click(function(){
			$("#memo textarea").val("");
		});
		
		// リセットボタン
		$("#reset").click($.translate.reset);
		
	});
	
	// 処理
	$.translate={		
		// 翻訳
		translate:function(category, text){
			$.translate.google(category, text);
			$.translate.microsoft(category, text);
			$.translate.yahoo(category, text);
			//$.translate.iknow(category, text);
		},
		
		// メモ
		note:function(text){
			if (text != "") {
				var memo = $("#memo textarea").val();
				if ((memo != "") && !memo.match(/\n$/)) {
					memo += "\n";
				}
				$("#memo textarea").val(memo + text);
			}
		},
		
		// Google
		google:function(category, text){
			var url = "https://www.googleapis.com/language/translate/v2?key=AIzaSyC31934WLiE-kjirRjJHvo4H8zmzTPftaQ&callback=?";
			if (category == "ej") {
				// 英和
				url += "&source=en&target=ja";
			} else if (category == "je") {
				// 和英
				url += "&source=ja&target=en";
			}
			url += "&q=" + text;
			
			$.getJSON(url, function(res){
				$("#google textarea").val("");
				$("#google textarea").val(res.data.translations[0].translatedText);
			});
			return false;
		},
		
		// Microsoft
		microsoft:function(category, text){
			var url = "http://api.microsofttranslator.com/v2/Ajax.svc/Translate?appId=9BE7BDD4A55675CDECDFD3968CE85FB54D8772EC&oncomplete=?";
			if (category == "ej") {
				// 英和
				url += "&from=en&to=ja";
			} else if (category == "je") {
				// 和英
				url += "&from=ja&to=en";
			}
			url += "&text=" + text;
			
			$.getJSON(url, function(res){
				$("#microsoft textarea").val("");
				$("#microsoft textarea").val(res);
			});
			return false;
		},
		
		// Yahoo
		yahoo:function(category, text){
			var url = "http://pipes.yahoo.com/poolmmjp/" + category + "_translation_api?_render=json&_callback=?&text=" + text;
			$.getJSON(url, function(res){
				$("#yahoo textarea").val("");
				$("#yahoo textarea").val(res.value.items[0].description);
			});
			return false;
		},
		
		// iknow
		/*
		iknow:function(category, text){
			var url = "http://api.iknow.co.jp/items/matching/" + text + ".json?callback=?";
			$.getJSON(url, function(data){
				$("#iknow textarea").val("");
				if (data.items[0]) {
					$("#iknow textarea").val(data.items[0].cue.content.text);
				}
			});
			return false;
		},
		*/
		
		// リセット
		reset:function(){
			$("#original textarea").val("");
			$("#google textarea").val("");
			$("#microsoft textarea").val("");
			$("#yahoo textarea").val("");
			//$("#iknow textarea").val("");
			$("#original_text").focus();
			return false;
		}
	};
})(jQuery);
