/********************************************************************************************************************
* google翻訳API
* myGoogleTranslation.changeLungage()        : <f> 翻訳実行
* 
* 特定のクラス名のテキストを翻訳リプレイスする。（翻訳文字数に限定あり）
* 【必須ライブラリ】
*    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
*    <script type="text/javascript" src="js/jquery.min.js"></script>
**********************************************************************************************************************/
google.load( 'language', '1' );
var appId = "48F4E1DF71BB3F4AF8F11869DF59376E40C785AA";
// コンストラクタ
var myGoogleTranslation = function(conf){
    /****************************************************************
    * conf.html_class               : <i> HTML翻訳対象タグクラス名
    * conf.text_class               : <i> テキスト翻訳対象タグクラス名
    * conf.before_lng               : <i> 翻訳元言語（google参照）
    * conf.after_lng                : <i> 翻訳後言語（google参照）
    * conf.display_err              : <i> エラー出力（0=OFF, 1=ON）
    *****************************************************************/
    this.conf = {
        html_class   : conf.html_class   ? conf.html_class   : "gt_htm_target",
        text_class   : conf.text_class   ? conf.text_class   : "gt_txt_target",
        before_lng   : conf.before_lng   ? conf.before_lng   : "ja",
        after_lng    : conf.after_lng    ? conf.after_lng    : "en",
        display_err  : conf.display_err  ? conf.display_err  : 0,
        max_text     : 220
    };
}
// 翻訳実行
myGoogleTranslation.prototype.changeLungage = function(){
    /****************************************************************
    * 対象のタグ内を翻訳（エラー時は翻訳しない）
    *****************************************************************/
    var lngBefore  = this.conf.before_lng;
    var lngAfter   = this.conf.after_lng;
    var maxText    = this.conf.max_text;
    var displayErr = this.conf.display_err;

    // HTML翻訳
    $("."+this.conf.html_class+" > *").each(function(){
        if(!$(this).text()) return true;

        // 文字数オーバー
        if($(this).text().length > maxText){
            if(displayErr) alert("文字数オーバー:\n"+$(this).text());
            return true;
        }

        // Bing翻訳
        $.ajax({
            type: "GET",
            url: "http://api.microsofttranslator.com/V2/Ajax.svc/Translate",
            dataType: "jsonp",
            data: {
                appId: appId,
                text : $(this).text(),
                from : lngBefore,
                to   : lngAfter
            },
            jsonp: "oncomplete",
            success: function (objTag) {
                return function(data, dataType){
                    // 結果を表示
                    objTag.html(data);
                }
            }($(this))
        });
/*
        google.language.translate($(this).text(), lngBefore, lngAfter, function (objTag){
                return function(result){
                    if( !result.error){
                        objTag.html(result.translation);
                    }else{
                        if(displayErr) alert("翻訳エラー:\n"+objTag.text());
                    }
                }
            }($(this))
        );
*/

    });
    // シングルテキスト翻訳
    $("."+this.conf.text_class).each(function(){
        if(!$(this).text()) return true;

        // 文字数オーバー
        if($(this).text().length > maxText){
            if(displayErr) alert("文字数オーバー:\n"+$(this).text());
            return true;
        }


        // Bing翻訳
        $.ajax({
            type: "GET",
            url: "http://api.microsofttranslator.com/V2/Ajax.svc/Translate",
            dataType: "jsonp",
            data: {
                appId: appId,
                text : $(this).text(),
                from : lngBefore,
                to   : lngAfter
            },
            jsonp: "oncomplete",
            success: function (objTag) {
                return function(data, dataType){
                    // 結果を表示
                    objTag.html(data);
                }
            }($(this))
        });
/*
        google.language.translate($(this).text(), lngBefore, lngAfter, function (objTag){
                return function(result){
                    if( !result.error){
                        objTag.html(result.translation);
                    }else{
                        if(displayErr) alert("翻訳エラー:\n"+objTag.text());
                    }
                }
            }($(this))
        );
*/

    });
    
}

