// s6.translate.js
// Copyright 2008 Yusuke Kawasaki http://www.kawa.net/
// All rights reserved. This program is free software; you can 
// redistribute it and/or modify it under the same terms as S6 itself.

if ( window.google ) google.load("language", "1");

function translate ( elem ) {
    if ( ! window.google ) return;
    if ( ! google.language ) return;

    var src = 'en'; // default source language
    var dst = 'ja';     // default destination language

    if ( elem.lang ) {
        src = elem.lang;
    }
    if (result = location.search.match(/lang=([\w\-]+)/)) {
        dst = result[1];
    } 

    if ( src == dst ) return;
    var next = function( result ) {
        if ( result.error ) return;
        elem.lang = dst;
        var span = document.createElement( 'span' );
        span.style.fontSize = '66%';
        var text = result.translation;
        if ( elem.tagName == 'SPAN' ) {
            text = ' '+text+' ';
        } else {
            span.style.display = 'block';
        }
        var tnode = document.createTextNode( text );
        span.appendChild( tnode );
        elem.appendChild( span );
        var remove = function ( ev ) {
            elem.lang = '';
            var target = ev.target;
            target.parentNode.removeChild( target );
        };
        s6.attach( span, 'click', remove );
    };
    google.language.translate( elem.innerHTML, src, dst, next );
}

new function () {
    var func = function ( ev ) {
        translate( ev.target );
    };
    var elist = document.getElementsByTagName("*");
    for( var i=0; i<elist.length; i++ ) {
        var e = elist[i];
        var c = false;
        if ( e.tagName == 'SCRIPT' ) continue;
        if ( e.tagName == 'A' ) continue;
        if ( e.tagName == 'PRE' ) continue;
        if ( e.tagName == 'INPUT' ) continue;
        for( var j=0; j<e.childNodes.length; j++ ) {
            if ( e.childNodes[j].nodeType == 3 ) {  // text node
                c = true;
            } else {
                c = false;
                break;
            }
        }
        if ( ! c ) continue;
        s6.attach( e, 'click', func );
    }
    var sample = document.getElementById( 'one_click_translation' );
    if ( sample ) {
        s6.attach(s6, 'ready', function () { translate( sample ); } );
    }
}
