/*This file contains the same functions used on the Translate plugin: http://github.com/newsdesk/translate
These functions requires the http://www.google.com/jsapi JS Library from Google.*/

google.load("language", "1");

function getGoogleTranslation(id, text, from_language, to_language) {
    text = text.replace(/\{\{/, '__').replace(/\}\}/, '__')
    google.language.translate(text, from_language, to_language, function(result) {
      if (!result.error) {
        result_text = result.translation.unescapeHTML().gsub(/__(.+)__/, function(match){
          return '{{' + match[1] + '}}';
        });
        Form.Element.setValue(id, result_text);
      }
    });

}

function google_translate_text(field_name, text, from_language, to_language,translated_by_string)
{
    text = text.replace(/\{\{/, '__').replace(/\}\}/, '__')
    google.language.translate(text, from_language, to_language, function(result) {
      if (!result.error) {
        result_text = result.translation.unescapeHTML().gsub(/__(.+)__/, function(match){
          return '{{' + match[1] + '}}';
        });
        var translation_area=document.getElementById(field_name);
        translation_area.innerHTML=result_text+"<div style='font-size: 9px;text-align: right'>"+translated_by_string+" Google</div>";
        translation_area.style.display="block";
      }
    });
}

/*
prototypeUtils.js from http://jehiah.com/
Licensed under Creative Commons.
version 1.0 December 20 2005

Contains:
+ Form.Element.setValue()
+ unpackToForm()

*/

/* Form.Element.setValue("fieldname/id","valueToSet") */
Form.Element.setValue = function(element,newValue) {
    element_id = element;
    element = $(element);
    if (!element){element = document.getElementsByName(element_id)[0];}
    if (!element){return false;}
    var method = element.tagName.toLowerCase();
    var parameter = Form.Element.SetSerializers[method](element,newValue);
}

Form.Element.SetSerializers = {
  input: function(element,newValue) {
    switch (element.type.toLowerCase()) {
      case 'submit':
      case 'hidden':
      case 'password':
      case 'text':
        return Form.Element.SetSerializers.textarea(element,newValue);
      case 'checkbox':
      case 'radio':
        return Form.Element.SetSerializers.inputSelector(element,newValue);
    }
    return false;
  },

  inputSelector: function(element,newValue) {
    fields = document.getElementsByName(element.name);
    for (var i=0;i<fields.length;i++){
      if (fields[i].value == newValue){
        fields[i].checked = true;
      }
    }
  },

  textarea: function(element,newValue) {
    element.value = newValue;
  },

  select: function(element,newValue) {
    var value = '', opt, index = element.selectedIndex;
    for (var i=0;i< element.options.length;i++){
      if (element.options[i].value == newValue){
        element.selectedIndex = i;
        return true;
      }
    }
  }
}

function unpackToForm(data){
   for (i in data){
     Form.Element.setValue(i,data[i].toString());
   }
}