/**
 * Javascript file with all the translator functionality 
 *
 * @author Martin Albrecht <martin.albrecht@javacoffee.de>
 * @version 0.2
 *
 * Changelog:
 * ----------
 *  Version 0.2:
 *    - Implemented language toggle
 *
 */

// Globals
var def_width = 630;
var def_height = 325;

/**
 * Open a popup window
 * @param <string> url The url of the page to display
 * @param <int> w The width for the window, if ommited, the default is chosen
 * @param <int> h The height for the window, if ommited, the default is chosen
 * @return <bool> Always false to avoid page reload.
 */
function translator_openPopup(url, w, h) {

  if( typeof w === 'undefined' || w.length <= 0 ) {
    w = def_width;
  }
  if( typeof h === 'undefined' || h.length <= 0 ) {
    h = def_height;
  }

  if( jQuery.browser.msie ) {
    h += 160;
  }

  var left = (screen.width/2)-(w/2);
  var top = (screen.height/2)-(h/2);

  if( url.length > 0 ) {
    var popup = window.open(url, 'lorem', "width="+w+",height="+h+",top="+top+",left="+left+",resizable=no,location=no,status=no,menubar=no");
    popup.focus();      
  }  
  return false;
}


/**
 * Theme the translator
 * @param <string> skin The skin name to load. For now (version 0.1) only one skin is supported
 * @return <bool> Always false to avoid page reload.
 */
function translator_theme(skin) {
  if( skin === 'dark' ) {
    jQuery('.popup').css('color', '#fff');
    jQuery('#econa-trans-main').css('background', '#777');
    if( window.name.length <= 0 ) {
      jQuery('#trans-layer-body').css('background', '#000');
    } else {
      jQuery('body').css('background', '#000');
    }
    jQuery('a.dark').css('border', '1px solid #ccc');
    jQuery('.view-btn').css('color', '#fff');
  }
  
  if( skin === 'default' ) {
    jQuery('.popup').css('color', '#fff');
    jQuery('#econa-trans-main').css('background', '#707064');
    if( window.name.length <= 0 ) {
      jQuery('#trans-layer-body').css('background', '#94937F');
    } else {
      jQuery('body').css('background', '#94937F');
    }
    jQuery('a.dark').css('border', '1px solid #000');    
    jQuery('.view-btn').css('color', '#333');
  } 
  
  if( skin === 'light' ) {
    jQuery('.popup').css('color', '#000');
    jQuery('#econa-trans-main').css('background', '#ccc');
    if( window.name.length <= 0 ) {
      jQuery('#trans-layer-body').css('background', '#fff');
    } else {
      jQuery('body').css('background', '#fff');
    }
    jQuery('a.dark').css('border', '1px solid #000');
    jQuery('.view-btn').css('color', '#000');
  }  
  
  return false;
}

/**
 * Show or hide the embedded text editor
 * @return <bool> Always false to avoid page reload.
 */
function translator_popup_toggle_edit() {  
  var editor = jQuery('#translator_editor');  
  
  if( editor.hasClass('active') ) {  
    if( window.name.length > 0) {
      window.resizeTo(def_width, def_height+25);
    }
    jQuery('#econa-trans-main').css('height', '200px');
    editor.hide();    
    editor.removeClass('active');    
    jQuery('#trans-edit-title').html("Editor anzeigen");
    jQuery('.toggle_button').css('background', 'url("/wp-content/themes/abacho-relaunch/images/icons/toggle_button.png") no-repeat scroll 0 0 transparent');
  } else {
    if( window.name.length > 0) {
      window.resizeTo(648, 660);
    }
    jQuery('#econa-trans-main').css('height', '365px');    
    editor.slideDown();
    editor.addClass('active');    
    jQuery('#trans-edit-title').html("Editor ausblenden");
    jQuery('.toggle_button').css('background', 'url("/wp-content/themes/abacho-relaunch/images/icons/toggle_button.png") no-repeat scroll 0 -18px transparent');
  }        
  return false;
}


/*
 * Close the translator popup
 * @return <bool> Always false to avoid page reload.
 */
function translator_close(toolbar, element) {
  /*
   * NOT USED YET, BUT NO DELETE FOR FUTURE USE (MAL)
  var OSName="Unknown OS";
  if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
  if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
  if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
  if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";
  */
  
  if( jQuery.browser.mozilla ) {
    window.location.href = 'http://abacho.ourtoolbar.com/xpi/?sourceid=13';
  }

  if( jQuery.browser.msie ) {
    window.location.href = 'http://abacho.ourtoolbar.com/ie/?sourceid=13';
  }

  if( jQuery.browser.safari ) {
    window.location.href = 'http://abacho.ourtoolbar.com/sf/?sourceid=13';
  } else if( jQuery.browser.webkit ) {
    window.location.href = 'http://abacho.ourtoolbar.com/crx/?sourceid=13';
  }    
  
  return false;

  var countPixel = document.getElementById('econa-trans-blind');
  if( typeof countPixel !== 'undefined' && countPixel !== null ) {
    if( element === 'top-right' ) {
      countPixel.src = 'http://ctr.dp-media.de/goto?abacho_close_tb_x';
    }
    if( element === 'main-close' ) {
      countPixel.src = 'http://ctr.dp-media.de/goto?abacho_close_tb_s';
    }
  }
  
  if( window.name.length <= 0 ) {
    jQuery.closePopupLayer();    
    if(typeof(toolbar) ==='undefined' || toolbar !== true) {
      window.location.href = 'http://ctr.dp-media.de/goto?abacho_click_tb';
    }
  } else {
    window.close();
  }
  return false;
}

// Initialize TinyMCE with the new plugin and listbox
function translator_editor_init() {  
  tinyMCE.init({
    mode : "exact",
    elements : "trans-edit",
    theme : "advanced",
    theme_advanced_buttons1 : "bold,italic,underline,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,bullist,numlist,undo,redo,link,unlink,cleanup,seperator,help",
    theme_advanced_buttons2 : "",
    theme_advanced_buttons3 : "",
    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom"
  });  
}


function translator_translate(ajax) {
  if( typeof jQuery !== 'undefined' ) {      
    var direction = document.getElementById('from').value +
    '%7C' +
    document.getElementById('to').value;
    var s = document.getElementById('totranslate').value;
    var src = s.replace(/<\S[^><]*>/g, "");
    var url = "https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q="+ src + "&langpair=" + direction;
    var translationArea = document.getElementById('translationArea');

    trans_layer_setcookie();

    jQuery.ajaxSetup({
      cache:false
    });
    jQuery.ajax({
      url: 'http://ajax.googleapis.com/ajax/services/language/translate',
      dataType: 'jsonp',
      data: {
        q : '' + src,
        v: '1.0',
        langpair: document.getElementById('from').value +
        '|' +
        document.getElementById('to').value
      },
      success: function(message) {
	if( message.responseStatus === 403 ) {
          alert('Leider ist ein Fehler aufgetreten. Wir arbeiten bereits daran, den Fehler zu beheben und hoffen auf dein Verständnis.');
          return false;
        }
        if (message.responseStatus != 200) {
          alert('Translation error: ' + message.responseDetails);
          return false;
        }

        var result = {
          translation: message.responseData.translatedText || '',
          source:      message.responseData.detectedSourceLanguage || ''
        };

        if( typeof ajax !== 'undefined' && ajax !== true ) {
          window.location.href = '?translation='+result.translation+
          '&totranslate='+src+
          '&from='+document.getElementById('from').value+
          '&to='+document.getElementById('to').value;
          return;
        }

        if (result.translation.length > 0) {
          translationArea.value = jQuery("<div/>").html(result.translation).text();
        }
        return false;
      }
    });
  } else {
    alert("jQuery was not found!");
  }
}

var translator_chkForm_submitted = false;
function translator_chkForm(ajax) {    
  var from = document.getElementById('totranslate');
  if( typeof ajax === 'undefined' || ajax !== true ) {
    ajax = false;
  } else {
    ajax = true;
  }
  
  if( typeof from === 'undefined' || from.value.length <= 0 || from === false ) {
    alert('Bitte geben Sie einen Ausgangstext ein!');
    from.focus();
    return false;
  } else if( from.value.length >= 1000 ) {
    alert('Bitte geben Sie weniger als 1000 Zeichen ein.');
    from.focus();
    return false;
  } /*else {
    if(translator_chkForm_submitted === false){
        translator_translate(ajax);
    }
  }
  if(translator_chkForm_submitted === false){
    translator_chkForm_submitted = true;
    return true;
  }*/
  trans_layer_setcookie();
  return true;
}


function translator_changelangs() {
  var from = document.getElementById('from');
  var to = document.getElementById('to');
  var fV = from.value;
  var tV = to.value;
  var tf = document.getElementById('totranslate');
  var tfV = tf.value;
  var tt = document.getElementById('translationArea');
  var ttV = tt.value;
  if( typeof tfV === 'undefined' || tfV === null ) {
    tfV = '';
  }
  if( typeof ttV === 'undefined' || ttV === null ) {
    ttV = '';
  }
  from.value = tV;
  to.value = fV;
  tt.value = tfV;
  tf.value = ttV;
}



/** Layer ad specials **/
function trans_layer_setcookie() {
  var cookie = jQuery.cookie('econa-trans-made');  
  var host = window.location.hostname;  

  if( typeof cookie !== 'undefined' && cookie !== null ){
    var cookie_val = parseInt(cookie);
    jQuery.cookie('econa-trans-made', (cookie_val+1), {path: '/', domain: host});
  } else {
    jQuery.cookie('econa-trans-made', 1, {path: '/', domain: host});
  }
}
