// ==UserScript==
// @name           Youtube mini 0.1
// @namespace     http://blog.crara.cc/
// @description   Youtube mini
// @include       http://youtube.*
// ==/UserScript==

// thanks:
// http://d.hatena.ne.jp/ktat/20061226/1167064171
// http://wildlifesanctuary.blog38.fc2.com/blog-entry-141.html
// http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/
// http://www.eonet.ne.jp/~wdf/software/fx_gm_openimagelayer.html
// http://zerobase.jp/blog/entry-272.html

(function() {

window.addEventListener('load', function(e){addScript();}, false);

var divs = getElementsByClassName(document, "div", "v120vEntry");
if (!divs.length){
  var divs = getElementsByClassName(document, "div", "vEntry");
  if (!divs.length){
    var divs = getElementsByClassName(document, "div", "myvVidStill");
    if (!divs.length){
      var divs = getElementsByClassName(document, "div", "vstill");
      if (!divs.length) return;
    }
  }
}

for (var i = 0; i < divs.length; ++i) {
  var div = divs[i];

  var links = div.getElementsByTagName("a");
  if (!links.length) continue;
  
  for (var li = 0; li < links.length; ++li) {
    var link = links[li];
    var uri = link.href;
    if (!uri) continue;

    if(uri.match(/^http:\/\/youtube\.com\/watch\?v\=/)) {
      var key = uri.replace("http://youtube.com/watch?v=","");
      link.id='link-'+key;
      link.href="javascript:setobject(\'"+key+"\');";
      break;
    }
  }
}

  function getElementsByClassName(oElm, strTagName, strClassName){
/*
  Written by Jonathan Snook, http://www.snook.ca/jonathan
  Add-ons by Robert Nyman, http://www.robertnyman.com
*/

    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
      oElement = arrElements[i];      
      if(oRegExp.test(oElement.className)){
        arrReturnElements.push(oElement);
      }   
    }
    return (arrReturnElements);
  }
  


function addScript() {

  var code = '<!--\n' +
  'function setobject(key){\n' +
  'var div = document.getElementById("link-"+key);\n' +
  'div.style.display="none";\n' +
  'var elm12 = document.createElement("OBJECT");\n' +
  'elm12.setAttribute("width", "130");\n' +
  'elm12.setAttribute("height", "97");\n' +
  'var elm4 = document.createElement("PARAM");\n' +
  'elm4.setAttribute("value", "http://www.youtube.com/v/"+key);\n' +
  'elm4.setAttribute("name", "movie");\n' +
  'elm12.appendChild(elm4);\n' +
  'var elm6 = document.createElement("PARAM");\n' +
  'elm6.setAttribute("value", "transparent");\n' +
  'elm6.setAttribute("name", "wmode");\n' +
  'elm12.appendChild(elm6);\n' +
  'var elm8 = document.createElement("EMBED");\n' +
  'elm8.setAttribute("width", "130");\n' +
  'elm8.setAttribute("height", "97");\n' +
  'elm8.setAttribute("wmode", "transparent");\n' +
  'elm8.setAttribute("type", "application/x-shockwave-flash");\n' +
  'elm8.setAttribute("src", "http://www.youtube.com/v/"+key);\n' +
  'elm12.appendChild(elm8);\n' +
  'div.parentNode.insertBefore(elm12, div.nextSibling);\n' +
  '}\n' +
  '//-->';

  var head = document.getElementsByTagName("head")[0];
  var script = document.createElement("script");
  script.type = "text/javascript";
  script.appendChild(document.createTextNode(code));
  head.appendChild(script);
  
}

})();

