// ==UserScript==
// @name          En Google modified by Gulfweed
// @description   Add a quick language switching feature, etc. on Google
// @include       http://www.google.com/
// @include       http://www.google.com/webhp
// @include       http://www.google.com/webhp?*
// @include       http://www.google.com/ig
// @include       http://www.google.com/ig?*
// @include       http://www.google.com/search?*
// @include       http://www.google.co.jp/
// @include       http://www.google.co.jp/webhp
// @include       http://www.google.co.jp/webhp?*
// @include       http://www.google.co.jp/ig
// @include       http://www.google.co.jp/ig?*
// @include       http://www.google.co.jp/search?*
// ==/UserScript==

// Based on En Google by http://gimite.net/
// This script is Public Domain Software.

(function() {

/*
 * Options
 */
var CLICK_TO_SUBMIT = true;

var HOGE = false;



/*
 * Library
 */
function getElementUniqueByName(name) {
  var _elems = document.getElementsByName(name);
  return _elems ? _elems.item(0) : null;
}

function nParent(node, i) {
  if (node == null || i == 0) return node;
  var parent = node.parentNode;
  if (parent) return nParent(parent, i - 1);
  else return null;
}



/*
 * Preparation
 */
var hl_value = '';
var hl = getElementUniqueByName('hl');
if (hl) {
  hl_value = hl.value ? hl.value : '';
  hl.parentNode.removeChild(hl);
}

var lr_value = '';
var lr = getElementUniqueByName('lr');
if (lr) {
  lr_value = lr.value;
  lr.parentNode.removeChild(lr);
}

var search_all_cap = 'Search the Web';
var search_ja_cap  = 'Search Japanese pages';
var search_en_cap  = 'Search English pages';
var ja_if_cap      = 'Use Japanese interface';
var en_if_cap      = 'Use English interface';
var code_cap       = 'Code';
var scholar_cap    = 'Scholar';
if (hl_value == 'ja') {
  search_all_cap = '\u30a6\u30a7\u30d6\u5168\u4f53\u304b\u3089\u691c\u7d22';
  search_ja_cap  = '\u65e5\u672c\u8a9e\u306e\u30da\u30fc\u30b8\u3092\u691c\u7d22';
  search_en_cap  = '\u82f1\u8a9e\u306e\u30da\u30fc\u30b8\u3092\u691c\u7d22';
  ja_if_cap      = '\u65e5\u672c\u8a9e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9';
  en_if_cap      = '\u82f1\u8a9e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9';
  code_cap       = '\u30b3\u30fc\u30c9';
  scholar_cap    = '\u8ad6\u6587';
}

var gmail_button = null;
var group_button = null;
var menubar = null;
var anchors = document.getElementsByTagName('a');
for (var i = 0; i < anchors.length; i++) {
  var anchor = anchors.item(i);
  if (anchor.className == 'gb1' &&
      /Gmail/.exec(anchor.innerHTML)) {
    gmail_button = anchor;
  }
  if (anchor.className == 'gb1' &&
      /\u52d5\u753b|Video/.exec(anchor.innerHTML)) {
    group_button = anchor;
    menubar = anchor.parentNode;
  }
}

var pgtab_div = null;
var divs = document.getElementsByTagName('div');
for (var i = 0; i < divs.length; i++) {
  var div_elem = divs.item(i);
  if (div_elem.className == 'pgtabside') {
    pgtab_div = div_elem.parentNode;
  }
}

var text_logo = document.createElement('span');
text_logo.style.fontFamily = "Consolas, Optima, \"Trebuchet MS\", Tahoma, Helvetica, Arial, sans-serif";
text_logo.style.fontSize = 18;
text_logo.style.margin = '0 0.5em 0 0';
text_logo.innerHTML = '<a href=\"/webhp\" style=\"text-decoration:none\">google&gt;</a>';



/*
 * Rewrite
 */
/*
(function() {
  var bodies = document.getElementsByTagName('body');
  for (var i = 0; i < bodies.length; i++) {
    bodies.item(i).style.fontFamily = 'Consolas, Optima, \"Trebuchet MS\", Tahoma, Helvetica, Arial, sans-serif';
    break;
  }
})();
 */

if (HOGE) {
(function() {
  var imgs = document.getElementsByTagName('img');
  for (var i = 0; i < imgs.length; i++) {
    var img = imgs.item(i);
    var src = img.getAttribute('src');
    // Special logos stay in.
    if (src && src == '/intl/ja_jp/images/logo.gif') {
      //img.parentNode.insertBefore(text_logo, img);
      img.parentNode.removeChild(img);
      break;
    }
  }
})();
}

/*
(function() {
  var logo = document.getElementById('logo');
  if (logo) {
    //logo.parentNode.removeChild(logo);
  }

  var q = getElementUniqueByName('q');
  q.style.fontSize = '18';
  q.style.borderColor = '#7f9db9';
  q.style.borderStyle = 'solid';
  q.style.borderWidth = '0px';
  //q.style.backgroundColor = '#f0f0ff';
  //q.style.padding = '3 3 3 3';
  //q.style.textAlign = 'center';
  //q.setAttribute('size', '20');
  //q.style.fontFamily = 'Consolas, Optima, \"Trebuchet MS\", Tahoma, Helvetica, Arial, sans-serif';

  q.parentNode.insertBefore(text_logo, q);
})();
 */

/*
(function() {
  var res = document.getElementById('res');
  if (res) {
     res.style.margin = '0';
  }
})();
 */

if (HOGE) {
(function() {
  var btnI_elem = getElementUniqueByName('btnI');
  if (btnI_elem) {
    btnI_elem = btnI_elem.parentNode.parentNode;
    btnI_elem.parentNode.removeChild(btnI_elem);
  }
  var btnG_elem = getElementUniqueByName('btnG');
  if (btnG_elem) {
    btnG_elem = btnG_elem.parentNode.parentNode;
    btnG_elem.parentNode.removeChild(btnG_elem);
  }
})();
}

if (HOGE) {
(function() {
  if (pgtab_div) {
    pgtab_div.parentNode.removeChild(pgtab_div.nextSibling);
    pgtab_div.parentNode.removeChild(pgtab_div.nextSibling);
    pgtab_div.parentNode.removeChild(pgtab_div);
  }
})();
}

(function() {
  if (group_button) {
    var code_anchor = document.createElement('a');
    code_anchor.href = 'http://www.google.com/codesearch' + document.location.search;
    code_anchor.innerHTML = code_cap;
    code_anchor.className = 'gb1';
    var code_sp = document.createTextNode(' ');
    menubar.insertBefore(code_anchor, group_button.nextSibling);
    menubar.insertBefore(code_sp, group_button.nextSibling);
  }
})();

(function() {
  if (group_button) {
    var scholar_anchor = document.createElement('a');
    scholar_anchor.href = 'http://scholar.google.com/scholar' + document.location.search;
    scholar_anchor.innerHTML = scholar_cap;
    scholar_anchor.className = 'gb1';
    var scholar_sp = document.createTextNode(' ');
    menubar.insertBefore(scholar_anchor, group_button.nextSibling);
    menubar.insertBefore(scholar_sp, group_button.nextSibling);
  }
})();

if (HOGE) {
(function() {
  if (gmail_button) {
    gmail_button.parentNode.removeChild(gmail_button);
  }
})();
}

if (HOGE) {
(function() {
  if (group_button) {
    group_button.parentNode.removeChild(group_button);
  }
})();
}

(function() {
  var il_labels = document.getElementsByTagName('label');
  for (var i = 0; i < il_labels.length; i++) {
    var il_label = il_labels.item(i);
    var foratt = il_label.htmlFor;
    if (foratt && foratt == 'il') {
      il_label.parentNode.removeChild(il_label);
    }
  }

  var all_elem = document.getElementById('all');
  if (!all_elem) {
    var lr = getElementUniqueByName('lr');
    if (lr) {
      lr.parentNode.removeChild(lr);
    }

    var q = getElementUniqueByName('q');
    var b = q ? nParent(q, 5) : null;
    if (b) {
      var tab = document.createElement('table');
      tab.setAttribute('cellpadding', 0);
      tab.setAttribute('cellspacing', 0);
      tab.setAttribute('border', 0);
      tab.innerHTML = '<tr><td><font size=-1> ' +
        '<input id="all" name="lr" value="" type="radio"' + (lr_value == '' ? ' checked' : '') + '>' +
        '<label for="all"> ' + search_all_cap + ' </label>' +
        ' </font></td></tr><tr><td height=7><img width=1 height=1 alt=""></td></tr></table>';
      b.parentNode.insertBefore(tab, b.nextSibling);
    }
    all_elem = document.getElementById('all');
  }
  if (all_elem) {
    all_elem.parentNode.innerHTML +=
      '<input id="il_ja" name="lr" value="lang_ja" type="radio"' + (lr_value == 'lang_ja' ? ' checked' : '') + '>' +
      '<label for="il_ja"> ' + search_ja_cap + ' </label>' +
      '<input id="il_en" name="lr" value="lang_en" type="radio"' + (lr_value == 'lang_en' ? ' checked' : '') + '>' +
      '<label for="il_en"> ' + search_en_cap + ' </label>' +
      '<br>' +
      '<input id="hl" name="hl" value="ja" type="radio"' + (hl_value == 'ja' ? ' checked' : '') + '>' +
      '<label for="hl"> ' + ja_if_cap + ' </label>' +
      '<input id="hl_en" name="hl" value="en" type="radio"' + (hl_value == 'en' ? ' checked' : '') + '>' +
      '<label for="hl_en"> ' + en_if_cap + ' </label>';
  }

  var gs_elem = getElementUniqueByName('gs');
  if (gs_elem) {
    var lr_options = ['all', 'il', 'il_en', 'il_ja'];
    var hl_options = ['hl', 'hl_en'];
    var workaround = (gs_elem.innerHTML == '');
    // Enable workaround for strange Firefox behavior in Google search result page.
    if (workaround) {
      gs_elem.innerHTML =
        '<input type="hidden" id="lr_hidden" name="lr">' +
        '<input type="hidden" id="hl_hidden" name="hl">';
      var lr_hidden_elem = document.getElementById('lr_hidden');
      var hl_hidden_elem = document.getElementById('hl_hidden');
    }
    var fclick = function(hidden, elem) {
      if (elem) {
        var onClick = function() {
          if (workaround) {
            hidden.value = elem.value;
          }
          if (CLICK_TO_SUBMIT) {
            gs_elem.submit();
          }
        };
        elem.addEventListener('click', onClick, false);
        if (workaround && elem.checked) {
          hidden.value = elem.value;
        }
      }
    };
    for (var i in lr_options) {
      var e = document.getElementById(lr_options[i]);
      fclick(lr_hidden_elem, e);
    }
    for (var i in hl_options) {
      var e = document.getElementById(hl_options[i]);
      fclick(hl_hidden_elem, e);
    }
  }
})();

})();
