// ==UserScript==
// @name           Youtube Buddy
// @namespace      http://froschlaich.com
// @description    Erkennt Links zu Youtube Videos und bietet die Moeglichkeit, diese in der aktuellen Seite anzuzeigen
// @version        1.4

// @include       http://82.149.226.131/bb/thread.php*
// @include       http://forum.counter-strike.de/bb/thread.php*
// @include       http://forum.cstrike.de/bb/thread.php*
// @include       http://forum.mods.de/bb/thread.php*
// @exlude        *youtube.com*
// ==/UserScript==

/***************************************
***************************************/

// Soll das Video nach einem Klick automatisch gestartet werden?
// 1 = Ja
// 0 = Nein
var autoplay = 1;


// Die Breite des Videos in Pixeln (Hýhe wird automatisch proportional berechnet)
// Standard: 425
var width = 425;

/***************************************
***************************************/


function youtube_buddy() {
    // get all links
    var allLinks = document.getElementsByTagName('a');
    
    // autoplay?
    if(autoplay == 1)
        autoplay = '&autoplay=1';
    else
        autoplay = '';
    
    // get height
    var height = Math.round(width*0.788235);
    
    // walk
    for(var i=0; i < allLinks.length; i++) {
        var link = allLinks[i];
    
        // look for youtube links
		// http://www.youtube.com/watch?v=sample
        if(link.href.match(/youtube\.com\/watch\?v=(.*)/ig)) {

			// create image
            var toggle = document.createElement('img');
            
			// set video id
			toggle.id = RegExp.$1;
			
            // image source
            toggle.src = "data:image/gif,GIF89a%10%00%10%00%E6%00%00%FF%0A%0A%FF%1F%1E%FF%12%13%FF%FF%FF%00%00%00%FF33%22%22%22%CC%CC"+
            "%CC%11%11%11%EE%EE%EE%FF%B9%B9%FFZZ%FF..%BB%BB%BB%FF44%DD%DD%DD%88%88%88%FFJJ%FF%0F%0F%FF''%FF88%FF%AC%AC%FFcc%FF%00%00%F"+
            "F%02%02%FF%A5%A5%FF%26%26%FFWW%FF%88%86%FF%1D%1D%FF%05%05%FF77%FF%DF%DF%FF%9E%9E%FF%20%1E%FF%5B%5B%FF%D8%D8%FF%AA%AA%FF%E"+
            "0%E0%FF%B7%B7%FF%FB%FB%FF%AE%AE%FF%10%10%FF%C9%C9UUU%FF%B3%B3%FF%A0%A0%FF%83%83%FF%3D%3D%FF66%FFQQ%FF%2C%2C%FFMM%FF%F2%F2"+
            "%FF%EF%EF%FFvv%FF%F6%F6%FFDD%FF%22%22%FF%C2%C2%FF%19%19%FF%B0%B0%FFii%FFnn%FF%D1%D1%FF%D4%D4www%FF%16%16%FF%DD%DD%FFYY%FF"+
            "11%FF%E6%E6%FFyy%FF%7C%7C%FF%E2%E2%FF%A2%A2%FF%DA%DA%FF%CB%CB%FFaa%FFAA%FFpp%FFrr%FF%2B%2B%FF%85%85333%FF%A6%A6%FF%DE%DE%"+
            "FF((%FF%B2%B2%FF%AF%AF%FF%A9%A9%FF%C6%C6%FF%A1%A1%FFVV%FFdd%FF%2F%2F%FF%82%82%FF55%FFee%FF%5D%5D%00%00%00%00%00%00%00%00%"+
            "00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%0"+
            "0%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00!%F9%04%00%00%0"+
            "0%00%00%2C%00%00%00%00%10%00%10%00%00%07%C2%80%03%03%04%83%82%86%87%86%0F%04%10%04%0F%88%8F%03B%04%2C%09%06%04%06%83%07%0"+
            "8%88%09%04%07%03%06%09%08%0D%9E%9B%88%9E%A0%A2%A4%10%A6%87%9E%95%97%03T%04%84%90%B6%87Y%1A%02%22%051%14%01%0C%1B%1C%3B%40"+
            "%25%82%3C%24%82%13*%175_%17%1A%01Z7%82%05%1E%03%11%114aVX%1F%02UR0%82%0E%188%13G!%0A%5C6%0A.J%20%18%D5%00(%05%5BSK%15%23%"+
            "15'LD%12%F3%068h%12%25C%0F%0B-Vl%40%A2C%10%0C%00%03%0A%04%19%90A%C1%80%14I%06%98%18%22h%CC%8C'W(%E4%60%60D%06%03%09b%3A%2"+
            "C0%F4%C2%C7%0F'E%16%2C%E8%E2%05%8A%050%82%02%01%00%3B";
            
            // set some attributes
            toggle.style.cursor = 'pointer';
            toggle.style.marginLeft = '5px';
            toggle.style.verticalAlign = 'middle';
            toggle.title = 'Video anzeigen';
            
            // add onclick action
            toggle.addEventListener('click', function(event) {
                if(!this.youtube) {
                    // create object
                    var youtube = document.createElement('object');
                    
                    // loader image
                    var loader = "data:image/gif;base64,R0lGODlhEgASAMQaAHl5d66urMXFw3l5dpSUk5WVlKOjoq%2BvrsbGw6Sko7u7uaWlpbm5t3h4doiIhtLSz4aGhJaWlsbGxNHRz"+
                    "rCwr5SUkqKiobq6uNHRz4eHhf%2F%2F%2FwAAAAAAAAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2BQQFAAAaACwAAAAAEgASAAAFaaAmjmRplstyrkmbrCNFaUZtaF"+
                    "F0HvyhWRZNYVgwBY4BEmFJOB1NlYpJoYBpHI7RZXtZZb4ZEbd7AodFDIYVAjFJJCYA4ISoI0hyuUnAF2geDxoDgwMnfBoYiRgaDQ1WiIqPJBMTkpYaIQAh%2BQQFAAAaACwBAAE"+
                    "AEAAQAAAFY6AmjhpFkSh5rEc6KooWzIG2LOilX3Kd%2FAnSjjcyGA0oBiNlsZAkEtcoEtEgrghpYVsQeAVSgpig8UpFlQrp8Ug5HCiMHEPK2DOkOR0A0NzxJBMTGnx8GhAQZwOL"+
                    "A2ckDQ0uIQAh%2BQQFAAAaACwBAAEAEAAQAAAFZKAmjpqikCh5rVc6SpLGthSFIjiiMYx2%2FAeSYCggBY4B1DB1JD0ertFiocFYMdGENnHFugxgg2YyiYosFhIAkIpEUOs1qUA"+
                    "vkAb4gcbh0BD%2BBCgNDRoZhhkaFRVmh4hmIxAQLiEAIfkEBQAAGgAsAQABABAAEAAABWOgJo6aJJEoiaxIOj6PJsyCpigopmNyff0X0o43AgZJk0mKwSABAK4RhaJ5PqOH7GHA"+
                    "HUQD4ICm0YiKwCSHI7VYoDLwDClBT5Di8khEY%2BgbUBAQGgWEBRoWFmYEiwRmJBUVLiEAIfkEBQAAGgAsAQABABAAEAAABWSgJo7a85Aoia1YOgKAxraShMKwNk0a4iOkgXBAE"+
                    "hgFqEYjZSQ5HK6RQqHJWDPRi%2FZyxbq2Fw0EEhUxGKRIJEWhoArwAulAP5AIeIJmsdAE%2FgEoFRUaCYYJfoFRBowGZSQWFi4hACH5BAUAABoALAEAAQAQABAAAAVloCaOGgCQ"+
                    "KGma6eg42iAP2vOgWZ5pTaNhQAxJtxsFhSQIJDWZkCKR1kgi0RSuBSliiyB4CVKBWKCpVKQiMWmxSCkUqIQ8QbrYLySD3qChUDR3eCQWFhoHhwcaDAxoAY4BaCSOLSEAIfkEBQA"+
                    "AGgAsAQABABAAEAAABWOgJo6a45Aoma1ZOkaRxrYAgBZ4oUGQVtckgpBAGhgHqEol1WiQFgvX6PHQJK4JKWaLMXgNWq7GYpGKJhMShZKSSFCH%2BIGEqCNIgXxAo1BoBIACKHka"+
                    "F4YXf4JSh4hmIwwMLiEAIfkEBQAAGgAsAQABABAAEAAABWSgJo5aFJEoWaxFOi6LRsyE5jhooidaVWmZYIZkKBpIwiHJYklBICQKxTUCADSH7IFqtQa%2BAepgPNB8qaJGg6RQp"+
                    "B4P1GV%2BIWHuGBK9LpFo8HkkDAwaCIYIGhMTaAKNAmgkjS4hADs%3D";
                    
                    // set some attributes
                    youtube.width = width;
                    youtube.height = height;
                    youtube.style.display = 'block';
                    youtube.style.margin = '10px 0';
                    youtube.style.border = '2px dashed #ff0202';
                    youtube.style.background = 'url('+loader+') center center no-repeat';
                    youtube.innerHTML = '<param name="movie" value="http://www.youtube.com/v/'+this.id+autoplay+'"></param>'+
                    '<param name="wmode" value="transparent"></param>'+
                    '<embed src="http://www.youtube.com/v/'+this.id+autoplay+'" type="application/x-shockwave-flash" width="'+width+'" height="'+height+'" wmode="transparent"></embed>';
                    
                    // insert after toggle
                    this.parentNode.insertBefore(youtube, this.nextSibling);
                    
                    // change title
                    this.title = 'Video verstecken';
                    
                    // save
                    this.youtube = youtube;
                } else {
                    this.youtube.parentNode.removeChild(this.youtube);
                    this.youtube = '';
                    
                    // change title
                    this.title = 'Video anzeigen';
                }
                
                event.stopPropagation();
                event.preventDefault();
            }, true);
            
            // insert toggle after link
            link.parentNode.insertBefore(toggle, link.nextSibling);
        }
    }
}


// GO!
youtube_buddy();