google.load("language", "1");
var defaultLang = 'en';
 
function translate(toLang, container) {
  paragraphs = container.select('p:not([class~=failed])');
  
  paragraphs.each(function(chunk) {
    text = chunk.innerHTML;    
    fromLang = chunk.readAttribute('lang') || defaultLang;
    google.language.translate(text, fromLang, toLang, function(result) {
      if (result.error) {
        chunk.addClassName('failed');
        Insertion.Top(chunk, '<span class="error">Paragraph Translation Error: '+ result.error.message + '</span>');
      }
      else {      
        chunk.innerHTML = result.translation;
        chunk.writeAttribute({lang: toLang});
      }
    });
  });
}

var languages = [
  { name: 'English',  callback: function(e) { translate('en', e.target.up('div')); } },
  { name: 'German',   callback: function(e) { translate('de', e.target.up('div')); } },
  { name: 'Japanese', callback: function(e) { translate('ja', e.target.up('div')); } },
  { name: 'Spanish',  callback: function(e) { translate('es', e.target.up('div')); } }
];

document.observe('dom:loaded', function(){
  new Proto.Menu({
    selector: '.entrybody',
    className: 'menu desktop',
    menuItems: languages
  });
});
