﻿version="v2.21v";
chglog="- Videos that have caused an error (e.g. removed videos)  \n are now marked green in the playlist and do not stop play anymore \n If you right click on this videos in your playlist, you now get alternatives for them. \n - You can now hide the Data you putted in for the current Video \n - Hopefully improved randomzing \n - Added Export \n SOON THIS GM SCRIPT WILL BECOME AN OWN FIREFOX ADD-ON!!";
// ==UserScript==
// @name		Youtube Music Player
// @version        	2.20
// @changes        	- Added drag and drop (for links into playlist)
// @namespace		localhost
// @description		Music Player for youtube ;)
// @include        	http://*.youtube.com/*
// @require        	http://userscripts.org/scripts/version/33024/60305.user.js
// @resource       	Library1Resources http://www.fileden.com/files/2008/9/2/2077873/JavascriptLibrary/0_4_0/Library1.xml
// @resource       	Library1Resources_de http://www.fileden.com/files/2008/9/2/2077873/JavascriptLibrary/0_4_0//Library1_de.xml
// @resource       	Library1Resources_es http://www.fileden.com/files/2008/9/2/2077873/JavascriptLibrary/0_4_0/Library1_es.xml
// @resource       	Library1Resources_fr http://www.fileden.com/files/2008/9/2/2077873/JavascriptLibrary/0_4_0/Library1_fr.xml
// @resource       	Library1Resources_it http://www.fileden.com/files/2008/9/2/2077873/JavascriptLibrary/0_4_0/Library1_it.xml
// @resource       	YoutubeLyricsResources http://www.fileden.com/files/2008/9/2/2077873/YoutubeLyrics/3_2_0/YoutubeLyrics.xml
// @resource       	YoutubeLyricsResources_de http://www.fileden.com/files/2008/9/2/2077873/YoutubeLyrics/3_2_0/YoutubeLyrics_de.xml
// @resource       	YoutubeLyricsResources_es http://www.fileden.com/files/2008/9/2/2077873/YoutubeLyrics/3_2_0/YoutubeLyrics_es.xml
// @resource       	YoutubeLyricsResources_fr http://www.fileden.com/files/2008/9/2/2077873/YoutubeLyrics/3_2_0/YoutubeLyrics_fr.xml
// @resource       	YoutubeLyricsResources_it http://www.fileden.com/files/2008/9/2/2077873/YoutubeLyrics/3_2_0/YoutubeLyrics_it.xml
// @resource       	LyricsSitesDefinitions  http://userscripts.org/scripts/source/34831.user.js
// ==/UserScript==

//Copyright: dark.cton
//You are allowed to copy this code as often as you want
//If you want to change this code or use parts of it please contact me at beamgeraet@web(dot)de
//Enjoy

//Notes:
//existing playlists: playlists (% divider)
//Songs in playlist: pl-name (% divider)
//plcur: current playing playlist

//TODO: 
//Adding a full channel
//Alternatives for ERROR-VIDEOS (erroralts)
//site:lastfm.de google search ;) (dofetchd)

//Greasemonkey.scriptvals.localhost/Youtube Music Player.

//VARIABLES
var xrepeat = 0;
var next = "";
var searcha = new Array();
var added = 0;
var rem = 0;
var showing =0;
var playlista = new Array();
var playlistax = new Array();
var playit = 0;
var iplay = "";
var randomize = 0;
var zaehler=0;
var ended=0;
var data="";
var repeat = 0;
var interpret = "";
var song = "";
var addmediav = 0;
var searchv = 0;
var page = 1;
var noerror = 0;
var id=0;
var x=0;
var splitx=new Array("");
var adding=0;
var plistenv=0;

var rtime=0;
var maincount=0;

var buttonex=0;

var images = new Array();

var language="de";

var changing = 0;
var divf="";


//Variables which have to be visible everywhere
window.imgl	= 0;
window.donepl = 0;
window.curbl = "";	
window.drag  = "";
window.set   = "";
window.charn = 0;
window.already = "";
window.api="";
window.toadd="";
window.pre="";
window.vdragndrop="";
window.maind="";
window.err="";
window.fetchd=new Array();

//Language function
function lang(xlang, word, meaning)
{
	if(typeof word=="string")
	{
		if(meaning!="")
		{
			if(typeof langa[xlang]=="object")
			{
				langa[xlang][word]=meaning;
			}
			else
			{
				GM_log("Language Array not found: "+xlang+". Creating it!");
				langa[xlang]=new Array();
				langa[xlang][word]=meaning;
			}
		}
	}
	else
	{
		return langa[language][xlang];
	}
}

//Language addings
var langa = new Array();
langa["en"] = new Array();
langa["de"] = new Array();

lang("en", "errorn1", 		"The video ");
lang("en", "errorn2",		" has caused an error! Remove video from library?");

lang("en", "usuccess1",		"Update from version ");
lang("en", "usuccess2",		" to version ");
lang("en", "usuccess3",		" was successful");
lang("en", "upd",		"There's an update available. Update?");

lang("en", "alts", 		"Alternatives:");

lang("en", "searchres",		"Search results");
lang("en", "all",		"All");
lang("en", "more",		"More");
lang("en", "notknown",		"Unknown");
lang("en", "dosearch",		"Search");
lang("en", "loading",		"Loading");
lang("en", "remd",		"Video removed");
lang("en", "addd",		"Video added");
lang("en", "nosearch",		"No search results");
lang("en", "searching",		"Search for ");
lang("en", "addmedia",		"Find music");
lang("en", "addmediah",		"<strike>Find music</strike>");
lang("en", "search",		"Search media library");
lang("en", "searchh",		"<strike>Search media library</strike>");
lang("en", "showpl",		"Media library");
lang("en", "hidepl",		"<strike>Media library</strike>");
lang("en", "interpret",		"Interpret:");
lang("en", "song",		"Title:");
lang("en", "mlength",		"Length:");
lang("en", "album",		"Album:");
lang("en", "oplayed",		"Played:");
lang("en", "genre",		"Genre:");
lang("en", "chgdata",		"Change data");
lang("en", "remp",		"Remove from playlist");
lang("en", "remm",		"Remove from library");
lang("en", "sortby", 		"Sort by:");
lang("de", "export", 		"Export");

lang("en", "savepl",		"Save");
lang("en", "savepl2",		"Save");
lang("en", "hsavepl2",		"<strike>Save</strike>");
lang("en", "loadpl",		"Load");
lang("en", "loadpl2",		"Playlists");
lang("en", "hloadpl2",		"<strike>Playlists</strike>");
lang("en", "nopls",		"No saved playlists found");
lang("en", "addpl",		"Add to playlist");
lang("en", "plnext",		"Play next");
lang("en", "playt",		"Play");

lang("en", "rename",		"Rename");
lang("en", "delete",		"Delete");
lang("en", "realrem",		"Really delete playlist ");

lang("en", "nextsong",'Next Song');

lang("en", "repeat", 'Repeat');
lang("en", "nrepeat", 'Stop Repeat');

lang("en", "rem",'Remove from Playlist');
lang("en", "add",'Add to Playlist');

lang("en", "shuffle", 'Shuffle');
lang("en", "stopshuffle",'Stop Shuffle');

lang("en", "stop",'Stop');
lang("en", "play", 'Play');
lang("en", "error", "Error:");
//VARIABLEN ENDE

lang("de", "errorn1", 		"Das Video ");
lang("de", "errorn2",		" hat einen Fehler verursacht! Video aus der Playlist entfernen?");

lang("de", "usuccess1",		"Update von Version ");
lang("de", "usuccess2",		" auf Version ");
lang("de", "usuccess3",		" war erfolgreich");
lang("de", "upd",		"Ein Update ist verf&uuml;gbar. Herunterladen?");

lang("de", "alts", 		"Alternativen:");

lang("de", "searchres",		"Suchergebnisse");
lang("de", "all",		"Alle");
lang("de", "more",		"Mehr");
lang("de", "notknown",		"Unbekannt");
lang("de", "dosearch",		"Suche");
lang("de", "loading",		"Wird geladen");
lang("de", "remd",		"Video gel&ouml;scht");
lang("de", "addd",		"Video hinzugef&uuml;gt");
lang("de", "nosearch",		"Keine Suchergebnisse");
lang("de", "searching",		"Suche nach ");
lang("de", "addmedia",		"Musik suchen");
lang("de", "addmediah",		"<strike>Musik suchen</strike>");
lang("de", "search",		"Bibliothek durchsuchen");
lang("de", "searchh",		"<strike>Bibliothek durchsuchen</strike>");
lang("de", "showpl",		"Bibliothek");
lang("de", "hidepl",		"<strike>Bibliothek</strike>");
lang("de", "interpret",		"Interpret:");
lang("de", "song",		"Titel:");
lang("de", "mlength",		"L&auml;nge:");
lang("de", "album",		"Album:");
lang("de", "oplayed",		"Gespielt:");
lang("de", "genre",		"Genre:");
lang("de", "chgdata",		"Daten &auml;ndern");
lang("de", "remp",		"Aus Playlist entfernen");
lang("de", "remm",		"Aus Bibliothek entfernen");
lang("de", "sortby", 		"Sortieren nach:");
lang("de", "export", 		"Exportieren");

lang("de", "savepl",		"Speichern");
lang("de", "savepl2",		"Speichern");
lang("de", "hsavepl2",		"<strike>Speichern</strike>");
lang("de", "loadpl",		"Laden");
lang("de", "loadpl2",		"Playlisten");
lang("de", "hloadpl2",		"<strike>Playlisten</strike>");
lang("de", "nopls",		"Keine Playlist gefunden");
lang("de", "addpl",		"Zu Playlist hinzuf&uuml;gen");
lang("de", "plnext",		"Als n&auml;chstes Spielen");
lang("de", "playt",		"Spielen");

lang("de", "rename",		"Umbenennen");
lang("de", "delete",		"L&ouml;schen");
lang("de", "realrem",		"Playlist wirklich l&ouml;schen:");

lang("de", "nextsong",'N&auml;chster Song');

lang("de", "repeat", 'Wiederholen');
lang("de", "nrepeat", 'Nicht mehr Wiederholen');

lang("de", "rem",'Remove');
lang("de", "add",'Add');

lang("de", "shuffle", 'Shuffle');
lang("de", "stopshuffle",'Stop Shuffle');

lang("de", "stop",'Stop');
lang("de", "play", 'Play');
lang("de", "error", "Fehler:");

var symba = new Array();
var symbs = new Array();

function symb(ref, data)
{
	if(typeof data=="string")
	{
		if(data!=1)
		{
			symba[ref]=data;

			symbs[ref]=new Image();
			symbs[ref].src = "data:image/png;base64,"+data;
		}
		else
		{
			return symba[ref];
		}
	}
	else
	{
		return '<img src="data:image/png;base64,'+symba[ref]+'" alt="'+lang(ref)+'"';
	}
}

symb("rem", "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");

symb("add", "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");


symb("stop", "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");

symb("play", "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");


symb("repeat", "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");

symb("nrepeat", "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");


symb("shuffle", "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");

symb("stopshuffle", "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");


symb("nextsong", "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");
//VARIABLEN ENDE

//BEin paar standard Funktionen: insert(array), gradd, htmlentities, addGlobalStyle, kill, gel, in array, array teil lÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¯ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¿ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â½schen, anfangs/endsymbol auslesen/lÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¯ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¿ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â½schen, array_unique
//Some Standard functions: insert(array), gradd, htmlentities, addGlobalStyle, kill, gel, in array, array delete part, beginning/end symbol delete/read [in a string], array_unique

window.addEventListener("beforeunload", function (e) {}, false);

function maxlen(text, len)
{
	textneu="";

	while(text.length>len)
	{
		text2=text.substr(0, len);
		if(text2.lastIndexOf(" ")>0)
		{
			text2=text2.substr(0, text2.lastIndexOf(" "));
		}
		
		textneu+=text2+"<br>";

		text=text.substr(text2.length, text.length-text2.length);
	}

	textneu+=text;

	return textneu;
}

function insert(array, index, value){

if (index == 0){ // einfuegen an erster array-position
array.unshift(value);
return array;
}

if (index == array.length){ // einfuegen an letzter array-position
array.push(value);
return array;
}

// einfuegen irgendwo in der mitte
var arr_tmp1 = array.slice(0, index);
var arr_tmp2 = array.slice(index, array.length);
arr_tmp2.unshift(value);
return arr_tmp1.concat(arr_tmp2);
}

function showpr()
{
	alert("..");	
}

function hidepr(xid)
{
	
}

function Numsort (a, b) {
  return a - b;
}

function gradd(id, before, text)
{
	var ele = document.createElement("div");
	ele.style.border="1px solid #CCC";
	ele.style.margin="0px 0px 5px 0px";
	ele.style.align="right";
	ele.id=id;
	ele.innerHTML=text;

	document.getElementById(divf).insertBefore(ele, before);
}

function goto(site)
{
	location.replace(site);
}

function goto2(site)
{
	window.location.href=site;
}

function htmlentities(string){
	return string;
}

function addGlobalStyle(css) {
    var head, style;
    head = document.getElementsByTagName('head')[0];
    if (!head) { return; }
    style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = css;
    head.appendChild(style);
}

function kill(ele)
{
	document.getElementById(divf).removeChild(ele);
}

function gel(ele)
{
	if(document.getElementById(ele))
	{
		return document.getElementById(ele)
	}
	else
	{
		GM_log("Error: Element "+ele+" could not be found");
	}
}

function egel(ele)
{
	if(document.getElementById(ele))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function in_array(xarray, xtext)
{
	for (var i = 0; i < xarray.length; i++)
	{
		if(xarray[i]==xtext)
		{
			return new Boolean(true)
		}
	}
}
function delarray(xarray, xtext)
{
	for (var i = 0; i < xarray.length; i++)
	{
		if(xarray[i]==xtext)
		{
			xarray.splice(i, 1);
		}
	}

	return xarray;
}
function stripsecure(text)
{
	text=text.replace(/\n/g, "");
	text=text.replace(/&/g, "");
	text=text.replace(/%/g, "");

	return text;
}
function symbol(text, suf)
{
	if(suf == "f")
	{
		return text.substring(0,1);
	}
	else
	{
		return text.substring(text.length-1, text.length);
	}
}
function symboldel(text, suf)
{
	if(suf == "f")
	{
		return text.substring(1,text.length);
	}
	else
	{
		return text.substring(0, text.length-1);
	}
}
function rand(min, max)
{
	number = Math.floor(Math.random() * (max - min + 1) + min);

	return number;
}
//BEnde Standardfunktionen
//End standard functions

//If the alternative Player is not used, we need to wait the time the video is long and than play the next one

function played()
{
//	rtime2=1*rtime*1+1*3*1;
//	rtime3=rtime2*1000;
//	window.setTimeout(endxy, rtime3);
}

//Is called in the end of a song
function endxy()
{
	//Add one to how often the song was played
	var played=GM_getValue(id+"-oplayed","");
	played = 1*played*1 + 1;
	GM_setValue(id+"-oplayed",played);

	//playit:: play playlist, when 1 play next song (with url parameter #play)
	if(playit || repeat)
	{
		nextSong();
	}

	//set ended to 1
	ended=1;

	goto('#');
}

//is called when the next song is played
window.nextSong=function()
{
	//if repeat is 1 repeat the actual song (id)
	if(repeat)
	{
		playsong(id);
	}

	if(next!="")
	{
		if(playit)
		{
			playsong(next);
		}
		else
		{
			playsong(next);
		}
	}

	//reload the playlist
	playlist();

	if(randomize=="1")
	{
		randomID();
	}
	else
	{
		nextID();
	}
}

function playsong(title)
{
	if(window.donepl==0 && title.length>4)
	{
		GM_setValue("toplay", title);
		if(repeat)
		{
			goto2("http://de.youtube.com/watch?v="+title+"&r="+Math.random()+"#xrepeat");
		}
		else if (playit)
		{
			goto2("http://de.youtube.com/watch?v="+title+"&r="+Math.random()+"#play");
		}
		else
		{
			goto2("http://de.youtube.com/watch?v="+title+"&r="+Math.random());
		}

		GM_log("toplay:"+title+"-"+toadd);

		window.donepl=1;
	}

	return 0;
}

//FLeitet einen auf das NÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¤chste Lied der Playlist weiter
function nextID()
{
	if(isID() && playlistax.length>1)
	{
		for (var i = 0; i < playlistax.length; i++)
		{
			if(x==1)
			{
				if(playlistax[i]=="")
				{
					playsong(playlistax[0]);
				}
				else
				{
					playsong(playlistax[i]);
				}
				x=2;
			}
	
			if(playlistax[i]==id)
			{
				x=1;
			}	
		}	
	
		playsong(playlistax[0]);
	}
	else
	{
		playsong(playlistax[0]);
	}

	playsong(playlistax[0]);	
}

//FLeitet einen auf einen ZufÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¯ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¿ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â½lligen Song weiter
function randomID()
{
	var length=playlistax.length-2;
	
	a = rand(0,length);

	if(isID()) 
	{
		while ((playlistax[a] == id || playlistax[a] == "1") && zaehler < 1000000) 
		{
			a = rand(0,length);
			zaehler++;
		}
	}

	last=GM_getValue("lastpl", "");
	last=last.split("%");
	llength=last.length-1;
	
	if(llength>((length+1)/2))
	{
		last=last.slice(llength-(length/2), llength+1);
	}

	if(llength>length+100)
	{
		last=last.slice(llength-(length+100), llength+1);

		end="";
		for (var i = 0; i < last.length; i++)
		{
			end+=last[i]+"%";
		}

		GM_setValue("lastpl", end);
	}

	zaehler=0;
	while(in_array(last, playlistax[a]) && zaehler < 1000000)
	{
		a = rand(0,length);
		zaehler++;
	}

//	GM_log("plrand:"+a+"-"+playlistax[a]+"-"+zaehler);

	old=GM_getValue("log", "");
	GM_setValue("log", old+"-"+a);
	old=GM_getValue("lastpl", "");
	GM_setValue("lastpl", old+"%"+playlistax[a]);

	playsong(playlistax[a]);
}

//FLiest die aktuelle Video ID aus
function getvideoid()
{
	myurl = document.location.href;
	myurl2 = myurl.split("v=");
	if(typeof myurl2[1] == "string")
	{
		myurl3=myurl2[1].split("&");
		myurl4=myurl3[0].split("#");
		id=myurl4[0];
	}
}

//FLiest die LÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¯ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¿ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â½nge eines Liedes aus
function gettime()
{
	if(data != "" && 1==2)
	{
		sdata=data.split(":");
		rtime=sdata[2];
	}
	else
	{
		if(document.getElementById("movie_player"))
		{
			var player=document.getElementById("movie_player");		
			var vars = player.getAttribute("FlashVars");

			vars2=vars.split("&l=");
			vars3=vars2[1].split("&");
		
			rtime=vars3[0];
			rtime=1*rtime*1+1
		}
	}

	if(GM_getValue(id,"")=="")
	{
		if(egel("watch-vid-title"))
		{
			var xsong=gel("watch-vid-title").innerHTML.replace(/<h1>/gi,"");
			xsong=xsong.replace(/<.h1>/gi,"");
		}
		else
		{
			var xsong="Unknown";
		}

		GM_setValue(id+"-length", rtime);
		GM_setValue(id+"-oplayed", 0);

		GM_setValue(id+"-song", xsong);

		GM_setValue(id, "length-oplayed-song");

	}
	else
	{
		xdata=GM_getValue(id,"");
		xdata2=xdata.split("-");
		if(in_array(xdata2,"oplayed")){}else
		{
			GM_setValue(id,xdata+"-oplayed");
			GM_setValue(id+"-oplayed",0);

		}
	}

	played();
}

function loadplayer()
{
	var sGetter = document.createElement('script');		sGetter.type = "text/javascript";		
	sGetter.innerHTML = ""+	
	"var embedUrl = 'http://www.youtube.com/v/"+id+"&hl=de&fs=1&enablejsapi=1&playerapiid=ytplayer';"+
//	"var watchSetWmode = true;"+
	"var fo = writeMoviePlayer('watch-player-div');"+
	"function onYouTubePlayerReady(id) {"+
		""+
		"var ytplayer=document.getElementById('movie_player');"+
		""+
		"ytplayer.addEventListener('onStateChange', 'onytplayerStateChange');"+
	"}"+
	
	"function onytplayerStateChange(newState) {"+
		"if(newState==0) {window.location.href='#ended';}"+
	"}"+


	//"fo.onStateChange() {alert('x');}"+
	//"window.onClipDone = function() {window.location.href='#ended'};"+
	"";

	document.getElementsByTagName('head')[0].appendChild(sGetter);
	
	//Check if the actual version is not the same like the version the last time the script was run
	if(GM_getValue("version", "")!=version)
	{
		valt=symboldel(symboldel(GM_getValue("version", ""),"l"),"f");
		vneu=symboldel(symboldel(version,"l"),"f");
		if(valt=="")
		{
	
		}
		else
		{
			alert(lang("usuccess1")+valt+lang("usuccess2")+vneu+lang("usuccess3"));
			alert("Changes: "+chglog);
		}
	}

	GM_setValue("version", version);
}

//Funktion zum Auslesen von Lieddaten
function getdata()
{
	gettime();

	interpret =  GM_getValue(id+"-"+interpret, "");
	song =  GM_getValue(id+"-song", "");
	album =  GM_getValue(id+"-album", "");
	genre =  GM_getValue(id+"-genre", "");
}

function showAsk(inid)
{
	var ask = document.createElement("div");
	ask.style.border="1px solid #CCC";
	ask.id = "askit";
		
	var datax=GM_getValue(inid, "");
	var datax2=datax.split("-");
	
	xask="<center><form action='#chgdata2:"+inid+"' onsubmit='window.location.href=\"#chgdata2:"+inid+"\"; return false;'><table>";
		
	var valuea = new Array();
		
	for (var y=0; y<datax2.length && datax2.length!=0; y++)
	{
		value=datax2[y];
		if(value!="length" && value!="oplayed" && value!="")
		{
//			GM_log("ask:"+value);
			var wert = GM_getValue(inid+"-"+value, "");
			wert = htmlentities(wert);

			xask = xask + "<tr><td>"+lang(value)+"</td><td><input type='text' id='"+value+"' value='"+wert+"' name='"+value+"'></td>";

			valuea.push(value);
		}
	}
		
	var wert="";
	if(in_array(valuea, "song")) {} else {value="song";	xask = xask + "<tr><td>"+lang(value)+"</td><td><input type='text' id='"+value+"' value='"+wert+"' name='"+value+"'></td>";}
	if(in_array(valuea, "interpret")) {} else {value="interpret";	xask = xask + "<tr><td>"+lang(value)+"</td><td><input type='text' id='"+value+"' value='"+wert+"' name='"+value+"'></td>";}
	if(in_array(valuea, "album")) {} else {value="album";	xask = xask + "<tr><td>"+lang(value)+"</td><td><input type='text' id='"+value+"' value='"+wert+"' name='"+value+"'></td>";}
	if(in_array(valuea, "genre")) {} else {value="genre";	xask = xask + "<tr><td>"+lang(value)+"</td><td><input type='text' id='"+value+"' value='"+wert+"' name='"+value+"'></td>";}

	xask=xask+"</table><input type='submit' value='ok'></form></center>";
		
	ask.innerHTML = xask;
				
	document.getElementById(divf).insertBefore(ask, document.getElementById(divf).firstChild);
}

function dofetchd()
{
	url='http://www.google.com/search?num=1&hl=de&q=site%3Alastfm.de+Korn+-+Evolution&btnG=Suche&lr=';
	parse="<a.*?href=\"(lastfm.de/music/[^/]*?)\".*?>(.*?)(?: -.*?)?</a>";
}

function erroralts(title)
{
	var url="http://gdata.youtube.com/feeds/api/videos?q="+GM_getValue(title+"-song", "")+" "+GM_getValue(title+"-interpret", "")+"&alts="+title;

	GM_xmlhttpRequest({
		method: 'GET',
		url: url,
		headers: {
			'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
		},
		onload: function(resp) 
		{
			var ids= new Array();
			var titles=new Array();
			var lengths=new Array();
			
			text=resp.responseText;
			Ergebnis=text.split("<media:title type='plain'>");
			for(var i=0; i<Ergebnis.length; i++)
			{
				btw2=Ergebnis[i].split("</media:title>");
				titles[i]=btw2[0];
			}

			Ergebnis=text.split("yt:duration seconds='");
			for(var i=0; i<Ergebnis.length; i++)
			{
				btw2=Ergebnis[i].split("'/>");
				lengths[i+1]=btw2[0];
			}

			Ergebnis=text.split("href='http://www.youtube.com/watch?v=");
			for(var i=0; i<Ergebnis.length; i++)
			{
				btw2=Ergebnis[i].split("'/>");
				ids[i]=btw2[0];
			}

			end="";
			
			for(var i=1; i<titles.length; i++)
			{
				if(!in_array(playlista, ids[i]))
				{
					xid=ids[i];
					xid=stripsecure(xid);

					title=titles[i];
					title=stripsecure(title);

					end+=xid+"&"+title+"%";
				}
			}

			xtitle=resp.finalUrl.split("alts=");
			xtitle=xtitle[1];

			GM_setValue(xtitle+"-alts", end)	
		}
	});	
}

function main()
{
	try
	{
		if(fetchd.length>0)
		{
			alert(fetchd.length);
		}

		akt=new Date();
		window.maind=akt.getTime();

		if(noerror==0)
		{
			var bodyi=document.body.innerHTML;
			if(bodyi.lastIndexOf('class="errorBox"')>0 && !issearch() && GM_getValue("toplay","")!="")
			{
				btw1=bodyi.split('<div class="errorBox">');
				btw2=btw1[1].split("</div>");
				error=btw2[0].replace(/\n/g, "");

				toplay=GM_getValue("toplay","");

				if(toplay.length>5)
				{
					GM_setValue(toplay+"-error", "1");
					GM_setValue(toplay+"-errorc", error);
				}

				id=toplay;
		
				fplay();
				nextSong();

				GM_setValue("toplay", "");
			}
			noerror=1;
		}

		if(document.location.href.lastIndexOf("#")>0)
		{
			splitx=document.location.href.split("#");
			splitx2=splitx[splitx.length-1].split(":");

			if(splitx2.length>2)
			{
				doact(splitx2[0], splitx2[1], splitx2[2]);
			}
			else if(splitx2.length==2)
			{
				doact(splitx2[0], splitx2[1]);
			}
			else if(splitx2.length==1)
			{
				doact(splitx2[0]);
			}
		}
		else
		{
			var splitx2=new Array("");
		}

		if(document.images.length>window.imglength)
		{
			grpics();
		}

		if(GM_getValue("toplay", "")==id)
		{
			GM_setValue("toplay", "");
		}

		Math.random();
		window.setTimeout(main, 1000);
	}
	catch(exception)
	{
		splitx=document.location.href.split("#");
		url="http://vokabelnpauken.de/trigger.php?err="+splitx[1]+"&and="+exception;

		GM_xmlhttpRequest({
			method: 'GET',
			url: ''+url+''
		});
		
	}
}

function checka()
{
	akt=new Date();
	akt=akt.getTime();

	if(window.maind+5000<akt)
	{
		window.setTimeout(main, 1000);
		goto('#');
	}

	window.setTimeout(checka, 5000);
}

function doact(action, extra1, extra2)
{
		if(isID())
		{
			if(action=="ended")
			{
				endxy();
			}

			if(in_array(playlista, id))
			{
				if(action=="rem" && rem==0)
				{
					frem();
				}
			}
			else
			{
				if(action=="add" && added==0)
				{
					fadd();
				}	
			}
		}

		if(in_array(playlistax, extra1))
		{
				if(action=="dorem" && rem==0)
				{
					fdorem(extra1);
				}
		}
		else
		{
			if(action=="doadd" && added==0 && adding==0)
			{
				adding=1;
				fdoadd(extra1,extra2);
				adding=0;
			}
		}

		switch (action) 
		{
			case "plnext": next=extra1; goto('#'); break;
			case "remp": fremp(extra1); break;
			case "pl": playsong(extra1); break;
			case "chgdata": fchgdata(extra1); break;
			case "chgdata2": fchgdata2(extra1); break;
			case "addms": faddms(extra1, extra2); break;
			case "playpl": fplaypl(extra1); break;
			case "mediapl": fmediapl(); break;
			case "addmedia": faddmedia(); break;
			case "addmediah": faddmediah(); break;
			case "searchm": fsearchm(); break;
			case "search": fsearch(); break;
			case "searchh": fsearchh(); break;
			case "xrepeat": fxrepeat(); break;
			case "show": fshow(); break;
			case "hide": fhide(); break;
			case "plisten": fplisten(); break;
			case "hplisten": fhplisten(); break;
			case "savepl": fsavepl(); break;
			case "hsavepl": fhsavepl(); break;
			case "play": fplay(); break;
			case "stop": fstop(); break;
			case "next": nextSong(); break;
			case "random":frandom(); break;
			case "norandom":fnorandom(); break;
			case "plays":fplays(); break;
			case "playadd":fplayadd(); break;
			case "data":fdata(); break;
			case "sortpl":fsortpl(extra1); break;
			case "rnmpl":frnmpl(extra1); break;
			case "hrnmpl":fhrnmpl(extra1); break;
			case "rempl":frempl(extra1); break;
			case "reple":freple(extra1, extra2); break;
			case "export":fexport(); break;
			case "simport":fsimport(); break;
			case "import":fimport(); break;
			
			default: break;
		}
}

//Action functions
function upset(title, f)
{
	if(f==0)
	{
		if(symbol(GM_getValue(title+"-song", ""),"f")==" ")
		{
			return symboldel(	GM_getValue(title+"-song", ""),"f")+"-"+GM_getValue(title+"-interpret", "")+"-p-"+title;
		}
		else
		{
			return			GM_getValue(title+"-song", "")+"-"+GM_getValue(title+"-interpret", "")+"-p-"+title;
		}	
	}
	else
	{
		if(symbol(GM_getValue(title+"-interpret", ""),"f")==" ")
		{
			return symboldel(	GM_getValue(title+"-interpret", ""),"f")+"-"+GM_getValue(title+"-song", "")+"-p-"+title;
		}
		else
		{
			return			GM_getValue(title+"-interpret", "")+"-"+GM_getValue(title+"-song", "")+"-p-"+title;
		}	
	}
}

function fexport()
{
	ausgabe=exportit();
	alert(ausgabe);

	goto('#');
}

function exportit()
{
	//To export: Media Library, Video Data, Playlists, (again Video Data if not happened already)
	var exported=new Array();
	var songst=new Array();
	var ausgabe="";

	media=GM_getValue("media","");
	if(media!="")	
	{
		ausgabe+="media="+media;
		songst=songst.concat(media.split("%"));
	}

	plcur=GM_getValue("plcur", "");
	if(plcur!="")
	{
		ausgabe+="&plcur="+plcur;
		songst=songst.concat(plcur.split("%"));
	}

	if(GM_getValue("playlists", "")!="")	
	{
		playlists=GM_getValue("playlists", "");

		ausgabe+="&playlists="+playlists;

		playlistsa=playlists.split("%");
		for(var i=0; i<playlistsa.length; i++)
		{
			if(playlistsa[i]!="" && GM_getValue("pl-"+playlistsa[i],"")!="")
			{
				songsa=GM_getValue("pl-"+playlistsa[i],"");

				ausgabe+="&pl-"+playlistsa[i]+"="+songsa;

				songsa=songsa.split("%");
				songst=songst.concat(songsa);
			}
		}
	}

	for(var i=0; i<songst.length; i++)
	{
		if(!in_array(exported, songst[i]) && songst[i]!="")
		{
			exported.push(songst[i]);
			data=GM_getValue(songst[i],"");
			datax=data.split("-");
			ausgabe+="&"+songst[i]+"="+data;
			for(var q=0; q<datax.length; q++)
			{
				ausgabe+="&"+songst[i]+"-"+datax[q]+"="+GM_getValue(songst[i]+"-"+datax[q], "");
			}
		}
	}

	return ausgabe;
}

function fsimport()
{
	if(!egel("importe"))
	{
		var importy="";
		importy+="<form action=''  onsubmit='window.location.href=\"#import\"; return false;'>";
		importy+="<input type='text' value='' id='importstr'> <input type='submit' value='ok'>";
		importy+="</form>";
		gradd("importe", gel(divf).firstChild, importy);
	}
	goto('#');
}

function fimport()
{
	if(egel("importstr"))
	{
		importstr=gel("importstr").value;
		exportstr=exportit();
		importstra=importstr.split("&");

		for(var i=0; i<importstra.length; i++)
		{
			cur=importstra[i];
			cur2=cur.split("=");
			if(typeof cur2[0]=="string" && typeof cur2[1]=="string" && cur2[0]!="" && cur2[1]!="")
			{
				alert(cur2[0]+"-"+cur2[1]);
				GM_setValue(cur2[0], cur2[1]);
			}
		}
	}

	if(egel("importe"))
	{
		kill(gel("importe"));
	}
	goto('#');
}
	
function freple(xnew, xold)
{	
	top="song";
	if(GM_getValue(xold+"-"+top, "")!="") {GM_setValue(xnew+"-"+top, GM_getValue(xold+"-"+top, ""));}
	
	top="interpret";
	if(GM_getValue(xold+"-"+top, "")!="") {GM_setValue(xnew+"-"+top, GM_getValue(xold+"-"+top));}
	
	top="album";
	if(GM_getValue(xold+"-"+top, "")!="") {GM_setValue(xnew+"-"+top, GM_getValue(xold+"-"+top));}
	
	top="genre";
	if(GM_getValue(xold+"-"+top, "")!="") {GM_setValue(xnew+"-"+top, GM_getValue(xold+"-"+top));}
	
	if(GM_getValue(xold, "")!="") {GM_setValue(xnew, GM_getValue(xold));}

	GM_setValue("media", GM_getValue("media","").replace(xold, xnew));
	GM_setValue("plcur", GM_getValue("plcur","").replace(xold, xnew));
	playlist();
	reloadplaylist();
	reloadpl();
	
	goto('#');
}	

function fsortpl(numb)
{
	nplaylistax=new Array();
	playlist3="";

	if(numb==1 || numb==2)
	{
		names=new Array();
		for(var i=0; i<playlistax.length; i++)
		{
			names[i]=upset(playlistax[i],0)
		}

		names.sort();

		while(names.length>0)
		{

			name=""+names.slice(0,1)+"";
			
			titlex=name.split("-p-");
			title=titlex[1];

			if(title!="")
			{
				nplaylistax.push(title);
				playlist3=playlist3+title+"%";
			}

			names.shift();
		}

		playlistax=nplaylistax;
	}

	if(numb==3 || numb==4)
	{
		names=new Array();
		for(var i=0; i<playlistax.length; i++)
		{
			names[i]=upset(playlistax[i],1);
		}

		names.sort();

		while(names.length>0)
		{
			name=""+names.slice(0,1)+"";
			
			titlex=name.split("-p-");
			title=titlex[1];

			if(title!="")
			{
				nplaylistax.push(title);
				playlist3=playlist3+title+"%";
			}

			names.shift();
		}

		playlistax=nplaylistax;
	}

	if(numb==2 || numb==4)
	{
		playlistax.reverse();
	}

	GM_setValue("plcur", playlist3);

	reloadpl();
}

function fmediapl()
{
	playlistax=playlista;
	GM_setValue("plcur", GM_getValue("media",""));
	GM_setValue("curpl", "")
	reloadpl();

	goto('#');
}

function fdoadd(extra1, extra2)
{
	alert(lang("addd"));
				
	if(extra1==id)
	{
		rem = 0;
		added = 1;
		button=document.getElementById("xmybutton");
		button.innerHTML="<a href='#rem'><center>"+symb("rem")+"</center></a>";
	}
				
	var cookie=GM_getValue("media", "");
					
	if(cookie!="")
	{
		cookie=cookie+extra1+"%";
	}
	else
	{
		cookie=extra1+"%";
	}
	
	GM_setValue("media", cookie);

	var plist=GM_getValue("plcur", "");
	var plist=extra1+"%"+plist;
	GM_setValue("plcur", plist);
	playlistax.splice(0,0,extra1);
	reloadpl();
						
	if(GM_getValue(extra1, "")=="")
	{
		if(egel("watch-vid-title"))
		{
			var sdata=document.getElementById("watch-vid-title").innerHTML;
		}
		else
		{
			var sdata="Unknown";
		}
				
		GM_setValue(extra1+"-song", sdata);
		GM_setValue(extra1+"-length", rtime);
		GM_setValue(extra1+"-oplayed", 0);
		GM_setValue(extra1, "song-length-oplayed");
	}

	if(extra2!="")
	{
		GM_setValue(extra1+"-song", extra2.replace(/%20/gi, " "));
	}

	goto("#chgdata:"+extra1);
				
	playlista.push(extra1);
		
	if(showing==1)
	{
		reloadplaylist();
	}
}

function fdorem(extra1)
{
	alert(lang("remd"));
		
	if(extra1==id)
	{
		rem = 1;
		added = 0;
		button=document.getElementById("xmybutton");
		button.innerHTML="<a href='#add'><center>"+symb("add")+"</center></a>";
	}
		
	playlista=delarray(playlista, extra1);
	var playlist3="";
	for (var i = 0; i < playlista.length; i++)
	{
		if(playlista[i]=="")	{	}
		else
		{
			playlist3=playlist3+playlista[i]+"%";
		}	
	}
				
	GM_setValue("media", playlist3);

	if(in_array(playlistax, extra1))
	{
		playlistax=delarray(playlistax,extra1);
	}

	var playlist3="";
	for (var i = 0; i < playlistax.length; i++)
	{
		if(playlistax[i]=="")	{	}
		else
		{
			playlist3=playlist3+playlistax[i]+"%";
		}	
	}

	GM_setValue("plcur", playlist3);

	reloadpl();

	if(showing==1)
	{
		reloadplaylist();
	}

	goto('#');
}

function fchgdata(extra1)
{
	if(changing==0)
	{
		showAsk(extra1);
		changing=1;

		goto('#');
	}
}

function faddmedia()
{
	if(addmediav == 0 && egel("addmediae"))
	{
		addmediav = 1;
		addmediae = document.getElementById("addmediae");
		addmediae.innerHTML = "<center><a href='#addmediah'>"+lang("addmediah")+"</a></center>";	

		text="";
		text=text+"<center>";
		text=text+"<form action=''  onsubmit='window.location.href=\"#addms\"; return false;'>";
		text=text+"<input type='text' value='' id='addmsi'> <input type='submit' value='"+lang("dosearch")+"'></form>";
		text=text+"</center><a name='searchxd'><div ID='searchansw'></div>";

		gradd("addmedia2e", gel("plbutd").nextSibling, text);		
	}
}

function fchgdata2(tochange)
{
	if(changing==1)
	{
		titlei=tochange;
	
		var data = "";
		
		song=document.getElementById("song").value;		
		interpret=document.getElementById("interpret").value;
		album=document.getElementById("album").value;
		genre=document.getElementById("genre").value;
		
		if(song!="")
		{
			data=data+"song-";
			GM_setValue(titlei+"-song", song);
		}
				
		if(interpret!="")
		{
			data=data+"interpret-";
			GM_setValue(titlei+"-interpret", interpret);
		}
		
		if(album!="")
		{
			data=data+"album-";
			GM_setValue(titlei+"-album", album);
		}
		
		if(genre!="")
		{
			data=data+"genre-";
			GM_setValue(titlei+"-genre", genre);
		}
	
		data=data+"length-";
		GM_setValue(titlei+"-length", rtime);
		data=data+"oplayed";
	
		GM_setValue(titlei, data);

		if(egel("askit"))
		{
			kill(gel("askit"));
		}

		changing=0;
				
		if(showing == 1)
		{
			reloadplaylist();
			goto('#');
		}
			
		if(tochange==id)
		{
			if(egel("isplayinge"))
			{
				kill(gel("isplayinge"));
				if(GM_getValue("datap","1")=="1")
				{
					grisplaying();
				}
				else
				{
					hiddenplaying();
				}
			}
		}

		if(egel("song-"+titlei))
		{
			reloadpl();
		}

		goto("#");
	}		
}

function faddmediah()
{
	if(addmediav == 1 && document.getElementById("addmediae"))
	{
		addmediav = 0;
		addmediae = document.getElementById("addmediae");
		addmediae.innerHTML = "<center><a href='#addmedia'>"+lang("addmedia")+"</a></center>";

		kill(gel("addmedia2e"));
	}

	xdie=xdie+1;
}

function fsearchm()
{
	gel("myplist").innerHTML=searchpl();

	goto("#searchf");
}

function fsearch()
{
	if(searchv == 0 && document.getElementById("searche"))
	{
		searchv = 1;
		searche = document.getElementById("searche");
		searche.innerHTML = "<center><a href='#searchh'>"+lang("searchh")+"</a></center>";

		var text="<a name='searchf'><form action='' name='sform' onsubmit='window.location.href=\"#searchm\"; return false;'><table width=100%>";
		text=text+"<tr><td><center><input type='text' 	id='sall' name='sall' 		value='"+lang("all")+"' onfocus=\"if(this.value=='"+lang('all')+"') {this.value=''}\" onblur=\"if(this.value=='') {this.value='"+lang('all')+"'}\"'></center>";
		text=text+"</td><td><center><input type='text' 	id='ssong' 		value='"+symboldel(lang("song"),"l")+"' onfocus=\"if(this.value=='"+symboldel(lang('song'),'l')+"') {this.value=''}\" onblur=\"if(this.value=='') {this.value='"+symboldel(lang('song'),'l')+"'}\"></td></tr>";
		text=text+"<tr><td><center><input type='text' 	id='sinterpret' 	value='"+symboldel(lang("interpret"),"l")+"' onfocus=\"if(this.value=='"+symboldel(lang('interpret'),'l')+"') {this.value=''}\" onblur=\"if(this.value=='') {this.value='"+symboldel(lang('interpret'),'l')+"'}\"></center>";
		text=text+"</td><td><center><input type='text' 	id='salbum' 		value='"+symboldel(lang("album"),"l")+"' onfocus=\"if(this.value=='"+symboldel(lang('album'),'l')+"') {this.value=''}\" onblur=\"if(this.value=='') {this.value='"+symboldel(lang('album'),'l')+"'}\"></center></td></tr>";
		text=text+"<tr><td><center><input type='text' 	id='sgenre' 		value='"+symboldel(lang("genre"),"l")+"' onfocus=\"if(this.value=='"+symboldel(lang('genre'),'l')+"') {this.value=''}\" onblur=\"if(this.value=='') {this.value='"+symboldel(lang('genre'),'l')+"'}\"></center></center>";
		text=text+"</td><td><center><input type='submit' value='"+lang("dosearch")+"'></center></td></tr>";
		text=text+"</table></form>";

		gradd("search2e", gel("addmediame").nextSibling, text);

		goto("#searchf");
	}
}

function fsearchh()
{
	if(searchv == 1 && egel("searche"))
	{
		searchv = 0;
		searche = gel("searche");
		searche.innerHTML = "<center><a href='#search'>"+lang("search")+"</a></center>";

		gel("myplist").innerHTML=searchpl(1);

		kill(gel("search2e"));
	}
}

function faddms(extra1, extra2)
{
	if(egel("addmsi"))
	{
		if(typeof extra1!="string")
		{
			extra1=1;
		}

		page=extra1;

		if(extra2!="" && typeof extra2=="string")
		{
			tosearch=extra2;
		}
		else
		{
			tosearch=gel("addmsi").value;
		}

		var url2="http://gdata.youtube.com/feeds/api/videos?q="+tosearch;

		gel("searchansw").innerHTML=lang("searching")+"'"+tosearch.replace(/%20/gi, " ")+"'";

		GM_xmlhttpRequest({
		    method: 'GET',
		    url: url2,
		    headers: {
		        'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
		        'Accept': 'application/atom+xml,application/xml,text/xml',
		    },
		    	onload: function(resp) 
			{
				var ids= new Array();
				var titles=new Array();
				var lengths=new Array();
			

				text=resp.responseText;
				Ergebnis=text.split("<media:title type='plain'>");
				for(var i=0; i<Ergebnis.length; i++)
				{
					btw2=Ergebnis[i].split("</media:title>");
					titles[i]=btw2[0];
				}

				Ergebnis=text.split("yt:duration seconds='");
				for(var i=0; i<Ergebnis.length; i++)
				{
					btw2=Ergebnis[i].split("'/>");
					lengths[i+1]=btw2[0];
				}

				Ergebnis=text.split("href='http://www.youtube.com/watch?v=");
				for(var i=0; i<Ergebnis.length; i++)
				{
					btw2=Ergebnis[i].split("'/>");
					ids[i]=btw2[0];
				}
				
				end="<table width=100% border=1>";
	
				for(var i=1; i<titles.length; i++)
				{
					if(!in_array(playlista, ids[i]))
					{
						end=end+"<tr><td id='search-"+ids[i]+"'><a href='#doadd:"+ids[i]+":"+titles[i]+"'>"+titles[i]+"</a></td><td>"+lengths[i+1]+"</td></tr>";
					}
					else
					{
						end=end+"<tr><td id='search-"+ids[i]+"'><font color=RED>"+titles[i]+"</font></td><td>"+lengths[i+1]+"</td></tr>";
					}
				}
				page=1*page*1+1*1*1;
				end=end+"</table>";
//				end+="<br><center><a href='#addms:"+page+":"+tosearch+"'>"+lang("more")+"</a></center>";

				gel("searchansw").innerHTML=end;

				for(var i=1; i<titles.length; i++)
				{
					gel("search-"+ids[i]).addEventListener("mouseover", function (e)
					{
						if(egel("pre-"+window.pre))
						{
							document.body.removeChild(gel("pre-"+window.pre));
						}
						

						xid=this.id;
						xid=xid.replace(/search-/, "");
						
						var ele = document.createElement("div");
						ele.id = "pre-"+xid;
						window.pre = xid;

						top=""+window.innerHeight;
						left=""+window.innerWidth;
						top=top.replace(/px/, "");
						left=left.replace(/px/, "");
						top=1*top*1-344;
						left=0;//1*left*1-425;
	
						ele.style.top=top+"px";
						ele.style.left=left+"px";
						ele.style.position="fixed";

						ele.innerHTML='<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/'+xid+'&hl=de&fs=1&autoplay=true"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/'+xid+'&hl=de&fs=1&autoplay=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>';

						document.body.insertBefore(ele, document.body.firstChild);
					}, false);

					gel("search-"+ids[i]).addEventListener("mouseout", function (e)
					{
						xid=this.id;
						xid=xid.replace(/search-/, "");
						
						if(egel("pre-"+xid))
						{
							document.body.removeChild(gel("pre-"+xid));
						}
					}, false);
				}
		    	}

		});
	}
			goto('#');
}

function fshow()
{
	if(!showing)
	{
		showing=1;
		showplaylist();
	}
}

function fxrepeat()
{
	if(egel("repeat"))
	{
		repeate = gel("repeat");

		if(repeat)
		{
			repeate.innerHTML = "<center>"+symb("repeat")+"</center>";
			repeat=0;
		}
		else
		{
			repeate.innerHTML = "<center>"+symb("nrepeat")+"</center>";				
			repeat=1;
		}
	}
	else
	{
		if(repeat)
		{
			repeat=0;
		}
		else
		{
			repeat=1;
		}
	}

	goto('#');
}

function fhide()
{
	if(showing) 
	{
		showing=0; 
		hideplaylist(); 
		goto('#');
	}
}

function fplisten()
{
	plistenv = 1;
	plistene = gel("plistene");
	plistene.innerHTML = "<center><a href='#hplisten'>"+lang("hloadpl2")+"</a></center>";

	plistenv2=GM_getValue("playlists","");
	if(plistenv2=="")
	{
		text=lang("nopls");
	}
	else
	{
		text="<table style='width:100%; border-bottom: 1px solid;'>";
		btw=plistenv2.split("%");
		for(var u=0; u<btw.length; u++)
		{
			value=btw[u];
			if(value!="")
			{
				title=GM_getValue("pl-"+value, "");
				title=title.split("%");
				anz=title.length-1;
				text+="<tr><td><a href='#playpl:"+btw.indexOf(value)+"'>"+value+"</a> ("+anz+")</td>";
				text+="<td><a href='#rnmpl:"+btw.indexOf(value)+"'>"+lang("rename")+"</a></td>";
				text+="<td><a href='#rempl:"+btw.indexOf(value)+"'>"+lang("delete")+"</a></td></tr>";
			}
		}

		text+="</table>";
	}

	gradd("xplistene", gel(divf).firstChild, text);

	goto('#');
}

function fhplisten()
{
	plistenv = 0;
	plistene = gel("plistene");
	plistene.innerHTML = "<center><a href='#plisten'>"+lang("loadpl2")+"</a></center>";

	if(egel("xplistene"))
	{
		kill(gel("xplistene"));
	}

	goto('#');
}

function frnmpl(extra)
{
	if(egel("rnmpl"))
	{
		kill(gel("rnmpl"));
	}

	plistenv2=GM_getValue("playlists","");
	btw=plistenv2.split("%");
	name=btw[extra];

	text="<center><form action=''  onsubmit='window.location.href=\"#hrnmpl:"+extra+"\"; return false;'>";
	text+="<input type='text' value='"+name+"' id='rnmplx' onload='this.focus();'>";
	text+="<input type='submit' value='"+lang("rename")+"'>";
	text+="</form></center>";

	gradd("rnmpl", gel(divf).firstChild, text);	

	goto('#');
}

function fhrnmpl(extra)
{
	plistenv2=GM_getValue("playlists","");
	btw=plistenv2.split("%");

	if(egel("rnmpl"))
	{
		newname=gel("rnmplx").value;

		end="";

		for(var i=0; i<btw.length; i++)
		{
			if(i!=extra)
			{
				end+=btw[i]+"%";
			}
			else
			{
				end+=newname+"%";
			}
		}

		end=end.substr(0, end.length-1);

		GM_setValue("playlists", end);

		if(plistenv) {fhplisten();fplisten();}
		
		kill(gel("rnmpl"));
	}	
	goto('#');
}

function frempl(extra)
{
	plistenv2=GM_getValue("playlists","");
	btw=plistenv2.split("%");
	name=btw[extra];

	if(confirm(lang("realrem")+"'"+name+"'?"))
	{
		endx="";
		for (var i=0; i<btw.length; i++)
		{
			if(i!=extra)
			{
				endx+=btw[i]+"%";
			}
		}

		endx=endx.substr(0, endx.length-1);

		GM_setValue("playlists", endx);
	}

	if(plistenv) {fhplisten(); fplisten();}

	goto('#');
}

function fplaypl(extra)
{
	playlists=GM_getValue("playlists","");
	btw=playlists.split("%");
	btw2=btw[extra];
	if(typeof btw2 == "string")
	{
		data=GM_getValue("pl-"+btw2);
		GM_setValue("plcur",data);
		playlistax=data.split("%");

		GM_setValue("curpl", ""+btw2);

		reloadpl();
	}

	goto("#");
}

function fsavepl()
{
	saveplv = 1;
	saveple = gel("saveple");
	saveple.innerHTML = "<center><a href='#hsavepl'>"+lang("hsavepl2")+"</a></center>";

	text="<center><form action=''  onsubmit='window.location.href=\"#hsavepl\"; return false;'>";
	text+="<input type='text' value='"+GM_getValue("curpl", "")+"' id='saveplx' onload='this.focus();'>";
	text+="<input type='submit' value='"+lang("savepl")+"'>";
	text+="</form></center>";

	gradd("savepl2", gel(divf).firstChild, text);

	goto('#');
}

function fhsavepl()
{
	saveplv = 0;
	saveple = gel("saveple");
	saveple.innerHTML = "<center><a href='#savepl'>"+lang("savepl2")+"</a></center>";

	if(egel("saveplx"))
	{
		var plname=gel("saveplx").value;

		var playlists=GM_getValue("playlists","");
		playlistsa=playlists.split("%");
		if(!in_array(playlistsa,plname))
		{
			GM_setValue("playlists", GM_getValue("playlists","")+"%"+plname);
		}
	
		var playlist3="";
		for (var i = 0; i < playlistax.length; i++)
		{
			if(playlistax[i]=="")	{	}
			else
			{
				playlist3=playlist3+playlistax[i]+"%";
			}	
		}

		GM_setValue("pl-"+plname, playlist3);
	
		GM_setValue("curpl", plname);

		kill(gel("savepl2"));

		if(plistenv) {fhplisten(); fplisten();}
	}

	goto('#');
}

function fplay()
{
	playit = 1;

	if(isID())
	{	
		if(in_array(playlistax, id))	{	}	else
		{
			nextSong();
		}
	}
	else
	{
		nextSong();
	}

	if(ended==1)
	{
		nextSong();
	}
	
	iplay = gel("letplay");
	iplay.innerHTML = "<center>"+symb("stop")+"</center>";
	
	goto('#');
}

function fstop()
{
	playit = 0;
	iplay = gel("letplay");
	iplay.innerHTML = "<center>"+symb("play")+"</center>";
	
	goto('#');
}

function fadd()
{
	showAsk(id);
	changing=1;
	
	alert(lang("addd"));
		
	var cookie=GM_getValue("media", "");
	
	if(cookie!="")
	{
		cookie=cookie+id+"%";
	}
	else
	{
		cookie=id+"%";
	}
	
	GM_setValue("media", cookie);

	var plist=GM_getValue("plcur", "");
	var plist=id+"%"+plist;
	GM_setValue("plcur", plist);
	playlistax.splice(0,0,id);

	reloadpl();

	added=1;
	rem=0;
					
	if(GM_getValue(id, "")=="")
	{
		if(egel("watch-vid-title"))
		{
			var sdata=gel("watch-vid-title").innerHTML;
			sdata=sdata.substring(7, sdata.length-7);
		}
		else
		{
			var sdata="Unknown";
		}
		GM_setValue(id+"-song", sdata);
		GM_setValue(id+"-length", rtime);
		GM_setValue(id+"-oplayed", 0);

		GM_setValue(id, "song-length-oplayed");
	}
		
	button=gel("xmybutton");
	button.innerHTML="<a href='#rem'><center>"+symb("rem")+"</center></a>";
		
	playlista.push(id);
}

function chgplay()
{
	if(playit)
	{
		fstop();
	}
	else
	{
		fplay();
	}
}

function chgrandom()
{
	if(randomize==1)
	{
		fnorandom();
	}
	else
	{
		frandom();
	}
}

function frandom()
{
	randomize=1;
	GM_setValue("random", 1);
	irandom = gel("randomdiv");
	irandom.innerHTML = "<center>"+symb("stopshuffle")+"</center>";	

	goto('#');
}

function fnorandom()
{
	randomize=0;
	GM_setValue("random", "0");
	irandom = gel("randomdiv");
	irandom.innerHTML = "<center>"+symb("shuffle")+"</center>";
	
	goto('#');	
}

function fplays()
{
	playlistax=searcha;

	reloadpl();

	var playlist3="";
	for (var i = 0; i < playlistax.length; i++)
	{
		if(playlistax[i]=="")	{	}
		else
		{
			playlist3=playlist3+playlistax[i]+"%";
		}	
	}
		
	GM_setValue("plcur", playlist3);			

	goto('#');
}

function fplayadd()
{
	for (var u=0; u < searcha.length; u++)
	{
		if(!in_array(playlistax, searcha[u]))
		{
			playlistax.push(searcha[u]);
		}
	}

	var playlist3="";
	for (var i = 0; i < playlistax.length; i++)
	{
		if(playlistax[i]=="")	{	}
		else
		{
			playlist3=playlist3+playlistax[i]+"%";
		}
	}
		
	GM_setValue("plcur", playlist3);			

	reloadpl();

	goto('#');
}

function frem()
{
	alert(lang("remd"));
	rem = 1;
	added = 0;
	button=gel("xmybutton");
	button.innerHTML="<a href='#add'><center>"+symb("add")+"</center></a>";
	playlista=delarray(playlista, id);
	var playlist3="";
	for (var i = 0; i < playlista.length; i++)
	{
		if(playlista[i]=="")	{	}
		else
		{
			playlist3=playlist3+playlista[i]+"%";
		}	
	}

	GM_setValue("media", playlist3)

	if(in_array(playlistax, id))
	{
		playlistax=delarray(playlistax,id);
	}
	
	var playlist3="";
	for (var i = 0; i < playlistax.length; i++)
	{
		if(playlistax[i]=="")	{	}
		else
		{
			playlist3=playlist3+playlistax[i]+"%";
		}	
	}

	reloadpl();

	GM_setValue("plcur", playlist3)
}

function fdata()
{
	if(changing==1)
	{
		changing=0;
		var data = "";

		song=gel("song").value;		
		interpret=gel("interpret").value;
		album=gel("album").value;
		genre=gel("genre").value;
		
		if(song!="")
		{
			data=data+"song-";
			GM_setValue(id+"-song", song);
		}
				
		if(interpret!="")
		{
			data=data+"interpret-";
			GM_setValue(id+"-interpret", interpret);
		}

		if(album!="")
		{
			data=data+"album-";
			GM_setValue(id+"-album", album);
		}
		
		if(genre!="")
		{
			data=data+"genre-";
			GM_setValue(id+"-genre", genre);
		}
		
		data=data+"length-";
		GM_setValue(id+"-length", rtime);
	
		if(symbol(data, "l")=="-")
		{
			data=symboldel(data, "l");
		}
		
		GM_setValue(id, data);
		
		goto("#");

		if(egel("askit") && egel(divf))
		{
			gel(divf).removeChild(gel("askit"));
		}

		if(showing==1)
		{
			reloadplaylist();
			goto('#');
		}
	}
}

//Filter fÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¯ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¿ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â½r die Playlist
function checks2(attr, title, x)
{
	var wert=GM_getValue(title+"-"+attr,"").toLowerCase();

	var wert2=gel("s"+attr).value;

	wert2=wert2.toLowerCase();

	if(wert.lastIndexOf(wert2)<0)
	{
		return true;
	}

	return false;
}

function checks3(title)
{
	var zutreffend=new Array();
	var vals=GM_getValue(title,"").toLowerCase();
	var valsa=vals.split("-");

	var wert2=gel("sall").value;
	var wert2a=wert2.split(" ");
	for (var t=0; t<valsa.length; t++)
	{
		value=valsa[t]
		var wert=""+GM_getValue(title+"-"+value,"")+"";
		wert=wert.toLowerCase();
		
		for(var i=0;i<wert2a.length;i++)
		{
			if(wert.lastIndexOf(wert2a[i].toLowerCase())>-1)
			{
//				GM_log(i+"-"+wert+"-"+wert2a[i]+"-ok");
				zutreffend[i]=1;
			}
			else
			{
//				GM_log(i+"-"+wert+"-"+wert2a[i]+"-fail");
			}
		}
	}

	for(var i=0;i<wert2a.length;i++)
	{
		if(zutreffend[i]!=1)
		{
			return false;
		}
	}

	return true;
}

function checks(title)
{
	var checked=0;	

	if(gel("sall").value!=lang("all")  && gel("sall").value!="")
	{
		if(checks3(title))
		{
		
		}
		else
		{
			return false;
		}
	}

	if(gel("ssong").value!=symboldel(lang('song'),'l')  && gel("ssong").value!="")
	{
		if(checks2("song", title))
		{
			return false;
		}
	}

	if(gel("sinterpret").value!=symboldel(lang('interpret'),'l') && gel("sinterpret")!="")
	{
		if(checks2("interpret", title))
		{
			return false;		
		}
	}

	if(gel("sgenre").value!=symboldel(lang('genre'),'l') && gel("sgenre").value!="")
	{
		if(checks2("genre", title))
		{
			return false;
		}		
	}

	if(gel("salbum").value!=symboldel(lang('album'),'l') && gel("salbum").value!="")
	{
		if(checks2("album", title))
		{
			return false;
		}		
	}

	return true;
}

function searchpl()
{
	searcha=new Array();
	playlist();

	var anzt=0;

	var endausgabe="";
	endausgabe=endausgabe+"<table width=100%>";

	for (var i = 0; i < playlista.length; i++)
	{
		var title=playlista[i];
		var searchok=new Boolean(true);
		if(title=="") {} else
		{
			if(checks(title) || arguments[0]=="1")
			{

				searcha.push(title);
				anzt=anzt+1;

				var datax=GM_getValue(title, "");
				var datax2=datax.split("-");
				var ausgabe="<table width=100%>";
				for (var y=0; y<datax2.length && datax2.length!=0; y++)
				{
					value=datax2[y];
					var wert = GM_getValue(title+"-"+value, "");
					value2=lang(value);
	
					if(value=="length")
					{
						value2=lang("mlength");
						min = Math.round(wert / 60);
						sec = wert - (min*60);
			
						if(sec < 0)
						{
							min = min - 1;
							sec = wert - (min*60);
						}
	
						if(sec < 10)
						{
							sec = "0"+sec;
						}
	
						wert=min+":"+sec;
					}
	
					if(typeof value2 == "string")
					{
						value3 = value2;
					}
					else
					{
						value3 = value;
					}
	
					ausgabe=ausgabe+"<tr><td width=30%>"+value3+"</td><td>"+wert+"</td></tr>";
	
				}
	
				ausgabe=ausgabe+"<tr><td><a href='#pl:"+title+"'>"+symb("play")+"</a>&nbsp;<a href='#dorem:"+title+"'>"+symb("rem")+"</a></td><td><a href='#chgdata:"+title+"'>"+lang("chgdata")+"</a></td></tr>";
	
				ausgabe=ausgabe+"</table>";
	
				var xborder = "style='border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:black;'";
		
				endausgabe=endausgabe+"<tr><td "+xborder+"><img src='http://i"+rand(1,4)+".ytimg.com/vi/"+title+"/default.jpg'></td><td "+xborder+"><div>";
				endausgabe=endausgabe+ausgabe;
				endausgabe=endausgabe+"</div></td></tr>";
				
				
			}
		}
	}

	endausgabe=endausgabe+"</table>";
	if(arguments[0]=="1")
	{
		endausgabe="<center>"+anzt+" "+symboldel(lang("song"),"l")+"</center>"+endausgabe;
	}
	else
	{
		if(anzt>0)
		{
			endausgabe="<center>"+anzt+" "+lang("searchres")+" <a href='#plays'>"+lang("playt")+"</a> <a href='#playadd'>"+lang("addpl")+"</a></center>"+endausgabe;
		}
		else
		{
			endausgabe="<center>"+anzt+" "+lang("searchres")+"</center>"+endausgabe;
		}
	}

	return endausgabe;
}

function reloadplaylist()
{
	if(showing==1)
	{
		hideplaylist();
		showplaylist();
	}
}

//FZeigen und Verstecken der Playlist!
function showplaylist()
{
	playlist();

	addmediat="<table width=100%><tr>";
	addmediat+="<td id='searche'><center><a href='#search'>"+lang("search")+"</a></center></td>";
	addmediat+="<td ID='export'><center><a href='#export'>"+lang("export")+"</a></center></td>";
	addmediat+="<td ID='playme'><center><a href='#mediapl'>"+lang("playt")+"</a></center></td>";
	addmediat+="</table>";

	var anzt=0;

	var endausgabe="";
	endausgabe=endausgabe+"<div id='scrollt'><table width=100%>";

	for (var i = 0; i < playlista.length; i++)
	{
		var title=playlista[i];
		var searchok=new Boolean(true);
		if(title=="") {} else
		{
			anzt=anzt+1;
			var datax=GM_getValue(title, "");
			var datax2=datax.split("-");
			var ausgabe="<table width=100%>";

			for (var y=0; y<datax2.length && datax2.length!=0; y++)
			{
				value=datax2[y];
				var wert = GM_getValue(title+"-"+value, "");
				value2=lang(value);

				if(value=="length")
				{
					value2=lang("mlength");
					min = Math.round(wert / 60);
					sec = wert - (min*60);
		
					if(sec < 0)
					{
						min = min - 1;
						sec = wert - (min*60);
					}

					if(sec < 10)
					{
						sec = "0"+sec;
					}

					wert=min+":"+sec;
				}

				if(typeof value2 == "string")
				{
					value3 = value2;
				}
				else
				{
					value3 = value;
				}

				ausgabe=ausgabe+"<tr><td width=30%>"+value3+"</td><td>"+wert+"</td></tr>";
			}

			ausgabe=ausgabe+"<tr><td><a href='#pl:"+title+"'>"+symb("play")+"</a>&nbsp;<a href='#dorem:"+title+"'>"+symb("rem")+"</a></td><td><a href='#chgdata:"+title+"'>"+lang("chgdata")+"</a></td></tr>";

			ausgabe=ausgabe+"</table>";

			var xborder = "style='border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:black;'";
	
			endausgabe=endausgabe+"<tr><td "+xborder+"><img src='http://i"+rand(1,4)+".ytimg.com/vi/"+title+"/default.jpg'></td><td "+xborder+"><div>";
			endausgabe=endausgabe+ausgabe;
			endausgabe=endausgabe+"</div></td></tr>";
		}
	}

	endausgabe=endausgabe+"</table></div>";

	endausgabe="<center>"+anzt+" "+symboldel(lang("song"),"l")+"</center>"+endausgabe;

	gradd("myplist", gel("plbutd").nextSibling, endausgabe)
	gradd("addmediame", gel("plbutd").nextSibling, addmediat)

	showpl = gel("showpl");
	showpl.innerHTML = "<a href='#hide'><center>"+lang("hidepl")+"</center></a>";
}
function hideplaylist()
{
	kill(gel("myplist"));
	kill(gel("addmediame"));
	if(egel("addmedia2e"))
	{
		addmediav=0;
		kill(gel("addmedia2e"));
	}

	if(egel("search2e"))
	{
		searchv=0;
		kill(gel("search2e"));
	}

	showpl = gel("showpl");
	showpl.innerHTML = "<a href='#show'><center>"+lang("showpl")+"</center></a>";
}


//Funktion zum ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¯ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¿ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â½berprÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¯ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¿ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â½fen ob eine ID existiert
function isID()
{
	if(id.length > 2)
	{
		return true;
	}
	else
	{
		return false;
	}
}

function issearch()
{
	return document.location.href.lastIndexOf("search_query")>0;
}

function playlist()
{
	var playlist2 = GM_getValue("media", "");
	var playlist3 = playlist2.toString();

	randomize = GM_getValue("random","0");

	playlista = playlist3.split("%");

	playlistx();
}

//FFunktion zum erkennen der Playlist
function playlistx()
{
	if(GM_getValue("plcur", "")=="")
	{
		GM_setValue("plcur", GM_getValue("media",""));
	}
	var playlistx2 = GM_getValue("plcur", "");
	var playlistx3 = playlistx2.toString();

	playlistax = playlistx3.split("%");

	if(buttonex==0)
	{
		buttonex=1;
		grafics();
	}
}

function fremp(title)
{
	if(in_array(playlistax,title) && egel("song-"+title))
	{
		playlistax=delarray(playlistax,title);
		gel("songstbl2").removeChild(gel("song-"+title));
	
		var playlist3="";
		for (var i = 0; i < playlistax.length; i++)
		{
			if(playlistax[i]=="")	{	}
			else
			{
				playlist3=playlist3+playlistax[i]+"%";
			}	
		}

		GM_setValue("plcur", playlist3);
	}
}

function updater()
{
	GM_xmlhttpRequest({
	    method: 'GET',
	    url: 'http://vokabelnpauken.de/youtube_music_player.user.js?r='+Math.random(),
	    headers: {
	        'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
	    },
	    onload: function(resp) {
	        var answ=resp.responseText;
		var answ2=answ.split("v");
		var answ3=answ2["2"];
		var version2=version.split("v")
		var version3=version2["1"];
		if(1*answ3*1>1*version3*1 && GM_getValue("noupd", "")!=answ3)
		{
			if(confirm(lang("upd")))
			{
				GM_openInTab('http://'+Math.random()+'.vokabelnpauken.de/youtube_music_player.user.js', "");
			}
			else
			{
				GM_setValue("noupd", answ3);
			}
		}
	    }
	});
}

//FGrafik aufgerufen von: playlist() [Initalize]
function grafics()
{
	addGlobalStyle('.tip {border:0;padding:1px;visibility:hidden;position:absolute;z-index:100;background-color:#f77;}');
	addGlobalStyle('.tip img {border:5px solid white;}');

	if(isID())
	{
		divf='watch-other-vids';
	}
	else
	{
		divf='homepage-side-content';
	}

	if(!egel(divf))
	{
		divf='old-masthead';
		if(!egel(divf))
		{
			var ele = document.createElement("div");
			ele.id = "mydivf";
			document.body.insertBefore(ele, document.body.firstChild);
	
			divf="mydivf";
		}
	}

	grplaylist();

	if(isID())
	{
		interpret=GM_getValue(id+"-interpret", "")
		song=GM_getValue(id+"-song", "")

		var title=id;

		if(in_array(playlista, id))
		{
			addpl = "<a href='#rem'>"+symb("rem")+"</a>";
		}
		else
		{
			addpl = "<a href='#add'>"+symb("add")+"</a>";
		}
	}
	else
	{
		addpl = "";
	}

	if(playit==1)
	{
		playpl=symb("stop");
	}
	else
	{
		playpl=symb("play");
	}

	if(randomize=="1")
	{
		random = ""+symb("stopshuffle")+"";
	}
	else
	{
		random = ""+symb("shuffle")+"";
	}

	buttonsy = "<table style='width:100%'><tr>";
	buttonsy2 = "<table style='width:100%'><tr>";

	buttonsy = buttonsy + "<td ID='xmybutton'><center>"+addpl+"</center></td>";

	if(playlista.length>1)
	{
		buttonsy2 += "<td ID='showpl' style='text-align:right;'><a href='#show'>"+lang("showpl")+"</a></td><td><a href='#mediapl'>("+lang("playt")+")</a></td>";
	}

	buttonsy2 += "<td id='addmediae'><center><a href='#addmedia'>"+lang("addmedia")+"</a></center></td>";
	buttonsy2 += "<td ID='plistene'><center><a href='#plisten'>"+lang("loadpl2")+"</a></center></td>";
	buttonsy2 += "<td ID='saveple'><center><a href='#savepl'>"+lang("savepl")+"</a></center></td>";

	if(isID())
	{
		buttonsy = buttonsy + "<td ID='repeat'><center>"+symb("repeat")+"</center></td>";
	}

	if(playlistax.length>1)
	{
		buttonsy = buttonsy + "<td ID='letplay'><center>"+playpl+"</center></td>";
		buttonsy = buttonsy + "<td ID='randomdiv'><center>"+random+"</center></td>";
		buttonsy = buttonsy + "<td ID='nextdiv'><center>"+symb("nextsong")+"</center></td>";
	}

	buttonsy = buttonsy + "</tr></table>";
	buttonsy2 = buttonsy2 + "</tr></table>";

	if(!issearch())
	{
		gradd("plbutd", gel(divf).firstChild, buttonsy2);
		gradd("mymenu", gel(divf).firstChild, buttonsy);
	}

	if(isID())
	{
		if(GM_getValue("datap","1")=="1")
		{
			grisplaying();
		}
		else
		{
			hiddenplaying(id);
		}
	}

	if(egel("nextdiv")) gel("nextdiv").addEventListener("click", function (e) {doact("next");},false);
	if(egel("repeat")) gel("repeat").addEventListener("click", function (e) {doact("xrepeat");},false);
	if(egel("randomdiv")) gel("randomdiv").addEventListener("click", function (e) {chgrandom();},false);
	if(egel("letplay")) gel("letplay").addEventListener("click", function (e) {chgplay();},false);

	grlinks();
	grpics();
}

function grpics()
{
	for (var i = 0; i < document.images.length; i++) 
	{

		window.imglength=document.images.length;
		img=document.images[i];
		src=img.src;
		xsong=img.title;

		if(src.match(/http\:\/\/i[0-4]\.ytimg\.com\/vi\//) || img.getAttribute("class")=="vimg90")
		{
			if(src=="http://s.ytimg.com/yt/img/pixel-vfl73.gif" && img.parentNode.href)
			{
				myurl=img.parentNode.href;
				myurl2 = myurl.split("?v=");
				if(typeof myurl2[1] == "string")
				{
					myurl3=myurl2[1].split("&");
					myurl4=myurl3[0].split("#");
					title=myurl4[0];
				}
			}
			else if(src)
			{
				var title=src.replace(/http\:\/\/i[0-4]\.ytimg\.com\/vi\//,"");
				title=title.split("/");
				title=title[0];
			}

//			torem=gel("add-to-quicklist-"+title);
			torem=gel("quicklist-icon-"+title);

			if(torem && torem.firstChild)
			{
//				GM_log("yes-"+title);
				torem.removeChild(torem.firstChild);			

				var ele = document.createElement("div");
				ele.id="newb-"+title;
				if(in_array(playlistax, title))
				{
					ele.innerHTML="<a href='#dorem:"+title+":"+xsong+"'>"+symb("rem")+"</a>";
				}
				else
				{
					ele.innerHTML="<a href='#doadd:"+title+":"+xsong+"'>"+symb("add")+"</a>";
				}

				torem.insertBefore(ele, torem.firstChild)
			}
		}
	}
}

function reloadpl()
{
	grplaylist(1);
}

function grplaylist()
{
	if(arguments[0]!=1)
	{
		addGlobalStyle('#cplist {position:fixed; background-color:WHITE;border:1px solid #CCC; top:0px; min-width:160px; max-width:160px; height:100%; overflow:scroll;}');
		addGlobalStyle('#fu {position:fixed; top:0px; left:840px;border:1px solid #CCC; min-width:160px; max-width:160px; max-height:490px; overflow:scroll;}');

		if(isID())
		{
			addGlobalStyle('#song-'+id+' {background-color:RED;color:WHITE;}');
		}

		addGlobalStyle('#songstbl {border:0px;border-spacing:0px;}');
		addGlobalStyle('#mycontext {position:fixed;font-family: Arial, Helvetica, sans-serif;font-size:13px;color: #336699;border-collapse:collapse; top:0px; left:0px;border:1px solid #CCCCCC;background-color: #EEEEEE;}');
		addGlobalStyle("#mycontext a {color:#000000;display: block;text-decoration: none;}");
		addGlobalStyle("#mycontext a:hover {background-color:BLUE;color:#FFFFFF;}");

		addGlobalStyle('#mycontext2 {position:fixed;font-family: Arial, Helvetica, sans-serif;font-size:13px;color: #336699;border-collapse:collapse; top:0px; left:0px;border:1px solid #CCCCCC;background-color: #EEEEEE;}');
		addGlobalStyle("#mycontext2 a {color:#000000;display: block;text-decoration: none;}");
		addGlobalStyle("#mycontext2 a:hover {background-color:BLUE;color:#FFFFFF;}");
	
		window.addEventListener("click", function (e)
		{
			window.drag="";

			if(egel("mycontext"))
			{
				document.body.removeChild(gel("mycontext"));
			}

			if(egel("mycontext2"))
			{
				document.body.removeChild(gel("mycontext2"));
			}
		},false);

		window.addEventListener("mousedown", function (e)
		{
			if(egel(window.curbl))
			{
				pluncolor();
			}
		},false);
	
		document.body.addEventListener("contextmenu", function (e)
		{
			window.drag="";
			if(egel("mycontext"))
			{
				document.body.removeChild(gel("mycontext"));
			}		

			if(egel("mycontext2"))
			{
				document.body.removeChild(gel("mycontext2"));
			}
		},true);
	
		window.addEventListener("keydown", function (e) 
		{
			key=String.fromCharCode(window.event ? window.event.keyCode : e.which);

			if(e.which==13 && egel(window.curbl))
			{
				xd=window.curbl.split("-");
				window.location.href="#pl:"+xd[1];
			}
	
			if(e.which==46 && egel(window.curbl))
			{
				next=playlistax.indexOf(window.curbl.replace(/song-/,""));
				fremp(window.curbl.replace(/song-/,""));
				if(egel("song-"+playlistax[next]))
				{
						pluncolor();
						plcolor("song-"+playlistax[next]);
				}
				else if(egel("song-"+playlistax[next-1]))
				{
						pluncolor();
						plcolor("song-"+playlistax[next-1]);
				}
			}
	
			if(e.which==40) //nach Unten
			{
				if(window.curbl=="" ||  !egel(window.curbl))
				{
					if(isID())
					{
						window.curbl="song-"+id;
					}
				}
	
				if(egel(window.curbl))
				{
					e.preventDefault();
					next=playlistax.indexOf(window.curbl.replace(/song-/,""));
					if(egel("song-"+playlistax[next+1]))
					{
						pluncolor();
						plcolor("song-"+playlistax[next+1]);
						gel("song-"+playlistax[next+1]).scrollIntoView(false);
					}
				}
			}
	
			if(e.which==38) //nach Oben
			{
				if(window.curbl=="" ||  !egel(window.curbl))
				{
					if(isID())
					{
						window.curbl="song-"+id;
					}
				}
	
				if(egel(window.curbl))
				{
					e.preventDefault();
					next=playlistax.indexOf(window.curbl.replace(/song-/,""));
					if(egel("song-"+playlistax[next-1]))
					{
						pluncolor();
						plcolor("song-"+playlistax[next-1]);
						gel("song-"+playlistax[next-1]).scrollIntoView(true);
					}
				}
			}
		}, false);
	}

	if(egel("outerplist"))
	{
		gel("outerplist").style.width="500px";
	}

	var text="<div id='outerplist'><table id='songstbl' style='width:100% ! important;'><tbody id='songstbl2'>";
	for(var s=0; s<playlistax.length; s++)
	{
		xsong=playlistax[s]
		if(xsong!="")
		{
			var ysong=""+GM_getValue(xsong+"-song", "");
			var yinterpret=""+GM_getValue(xsong+"-interpret", "");
	
			text+="<tr id='song-"+xsong+"'";
			text+="><td>";
			if(ysong!="") text+=ysong; else text+=lang("notknown");
			if(yinterpret!="") text+=" - "+yinterpret;
			text+="</td></tr>";
		}
	}
	text=text+"</tbody></table></div>";

	if(arguments[0]==1)
	{
		gel("cplist").innerHTML=text;
		plcolor(window.curbl);
	}	
	else
	{
		var ele = document.createElement("div");
		ele.id="cplist";
		ele.innerHTML=text;

		if(egel("baseDiv"))
		{
			document.body.insertBefore(ele, gel("baseDiv").nextSibling);
		}
	}

	gel("cplist").style.left=document.body.offsetWidth*1-20+"px";

	gel("cplist").addEventListener("mouseover", function(e)
	{
		if(gel("cplist").style.left==document.body.offsetWidth*1-20+"px")
		{
			gel("cplist").style.left=document.body.offsetWidth*1-gel("cplist").offsetWidth+"px";
		}

		if(window.vdragndrop!="")
		{
			myurl = window.vdragndrop;
			myurl2 = myurl.split("v=");
			if(typeof myurl2[1] == "string")
			{
				myurl3=myurl2[1].split("&");
				myurl4=myurl3[0].split("#");
				xid=myurl4[0];
			}
	
			doact("doadd", xid, "");
		}
		
	},false);

	gel("cplist").addEventListener("mouseout", function(e) 
	{
		if(gel("cplist").style.left==document.body.offsetWidth*1-gel("cplist").offsetWidth+"px")
		{
			mousex=e.clientX;

			divy=gel("cplist").style.left.replace(/px/g,"");

			if(mousex<divy || e.clientY<1 || e.clientY>document.body.offsetHeight-5)
			{
				gel("cplist").style.left=document.body.offsetWidth*1-20+"px";
			}
			else
			{
				GM_log(e.clientY+"-"+document.body.offsetHeight);
			}
		}
	},false);



	if(egel("outerplist"))
	{
		gel("outerplist").style.width="500px";
	}
	xwidth=gel("songstbl").offsetWidth;
	if(1*xwidth*1<145)
	{
		xwidth=145;
	}
	gel("outerplist").style.width=xwidth+"px";

	if(egel("song-"+id))
	{
		gel("song-"+id).scrollIntoView(false);
	}

	for(var s=0; s<playlistax.length; s++)
	{
		xsong=playlistax[s];
		if(xsong!="" && gel("song-"+xsong))
		{
			eventlistener(xsong);
		}
	}
}

function pluncolor()
{
	ele=gel("outerplist").getElementsByTagName("tr");
	for(var i=0; i<ele.length; i++)
	{
		if(GM_getValue(ele[i].id.replace(/song-/, "")+"-error", "")=="1")
		{
			ele[i].style.backgroundColor="GREEN";
		}
		else
		{
			ele[i].style.backgroundColor="";
		}
		ele[i].style.color="#000000";
	}

	if(arguments[0]!=1)
	{
		window.charn=0;
		window.already="";
	}

	window.curbl="";
}

function plcolor(title)
{
	if(egel(title))
	{
		window.curbl=title;
		gel(title).style.backgroundColor="BLUE";
		gel(title).style.color="WHITE";
	}
}

function eventlistener(xsong)
{
	if(GM_getValue(xsong+"-error", "")=="1")
	{
		gel("song-"+xsong).style.backgroundColor="GREEN";

		if(GM_getValue(xsong+"-alts", "")=="") {erroralts(xsong);}
	}

	gel("song-"+xsong).addEventListener("dblclick", function (e)
	{
		btw=this.id;
		btw2=btw.replace(/song-/g,"");
		goto("#pl:"+btw2+"");
	},false);

	gel("song-"+xsong).addEventListener("mousedown", function (e) 
	{
		e.preventDefault();
		window.drag=this.id;
	},false);

	gel("song-"+xsong).addEventListener("click", function (e) 
	{
		e.preventDefault();
		pluncolor();
		plcolor(this.id);		
	},false);

	gel("song-"+xsong).addEventListener("mouseup", function (e) 
	{
		window.drag="";
	},false);

	gel("song-"+xsong).addEventListener("selectstart", function (e)
	{
		return false;
	},false);

	gel("song-"+xsong).addEventListener("mouseover", function(e) 
	{
		mtop=this.offsetTop+31;
		middle=mtop+(this.offsetHeight*0.5);
		if(egel(window.drag) && window.drag!=this.id)
		{
			var dragtext=gel(window.drag).innerHTML;
			gel("songstbl2").removeChild(gel(window.drag));
			newtr=document.createElement("tr");
			newtr.id=window.drag;
			newtr.innerHTML=dragtext;
			newtr.style.backgroundColor="BLUE";
			newtr.style.color="WHITE";
			overid=playlistax.indexOf(this.id.replace(/song-/,""));
			playlistax.splice(playlistax.indexOf(window.drag.replace(/song-/,"")), 1);
			if(e.clientY>middle)
			{
				playlistax.splice(overid, 0, window.drag.replace(/song-/,""));
				gel("songstbl2").insertBefore(newtr,gel(this.id));
			}
			else
			{
				playlistax.splice(overid, 0, window.drag.replace(/song-/,""));
				next=playlistax.indexOf(this.id.replace(/song-/,""));
				gel("songstbl2").insertBefore(newtr,gel(this.id).nextSibling);
			}

			var playlist3="";
			for (var i = 0; i < playlistax.length; i++)
			{
				if(playlistax[i]=="")	{	}
				else
				{
					playlist3=playlist3+playlistax[i]+"%";
				}	
			}

			GM_setValue("plcur", playlist3);

//			GM_log(playlistax.indexOf(window.drag.replace(/song-/,"")));

			eventlistener(window.drag.replace(/song-/,""));
		}
	},false);

	gel("song-"+xsong).addEventListener("contextmenu", function(e) 
	{
		window.drag="";

		if(egel("mycontext"))
		{
			document.body.removeChild(gel("mycontext"));
		}

		if(egel("mycontext2"))
		{
			document.body.removeChild(gel("mycontext2"));
		}

		e.preventDefault();

		btw=this.id;
		btw2=btw.split("-");
		btw2[1]=btw.replace(/song-/g,"");
		pluncolor();
		plcolor(this.id);	
		
		var datax=GM_getValue(btw2[1], "");
		var datax2=datax.split("-");
		var ausgabe="<table style='border:0px;border-spacing:0px;'>";
		for (var y=0; y<datax2.length && datax2.length!=0; y++)
		{
			value=datax2[y]; 
			var wert = GM_getValue(btw2[1]+"-"+value, "");
			value2=lang(value);

			if(value=="length")
			{
				value2=lang("mlength");
				min = Math.round(wert / 60);
				sec = wert - (min*60);
	
				if(sec < 0)
				{
					min = min - 1;
					sec = wert - (min*60);
				}
				if(sec < 10)
				{
					sec = "0"+sec;
				}
				wert=min+":"+sec;
			}
			
			if(typeof value2 == "string")
			{
				value3 = value2;
			}
			else
			{
				value3 = value;
			}
			ausgabe+="<tr><td>"+value3+"</td><td>"+wert+"</td></tr>";
		}

		if(GM_getValue(btw2[1]+"-error", "")=="1")
		{
			ausgabe+="<tr><td>"+lang("error")+"</td><td>"+maxlen(GM_getValue(btw2[1]+"-errorc", ""),30)+"</td></tr>";
		}

		ausgabe=ausgabe+"</table>";

		if(GM_getValue(btw2[1]+"-alts", "")!="")
		{
			ausgabe+="<div id='altse'>"+lang("alts")+"<br><table>";

			alts=GM_getValue(btw2[1]+"-alts", "");
			btw=alts.split("%");
			anz=0;
			for (var i=0; i<btw.length; i++)
			{
				btw3=btw[i].split("&");
				if(btw3.length==2)
				{
					ausgabe+="<tr><td id='alts-"+btw3[0]+"'><a href='#reple:"+btw3[0]+":"+btw2[1]+"'>"+btw3[1]+"</a>"+"</td></tr>";
					anz++;
				}

				if(anz==7) {break;}
			}

			ausgabe+="</table><br></div>";
		}

		text="<table id='contbl'>"
		text+="<tr><td>"+ausgabe+"</td></tr>"
		if(GM_getValue(btw2[1]+"-error", "")!="1") text+="<tr><td><a href='#pl:"+btw2[1]+"'>"+lang("playt")+"</a></td></tr>"
		if(GM_getValue(btw2[1]+"-error", "")!="1") text+="<tr><td><a href='#plnext:"+btw2[1]+"'>"+lang("plnext")+"</a></td></tr>"
		text+="<tr><td><a href='#chgdata:"+btw2[1]+"'>"+lang("chgdata")+"</a></td></tr>"
		text+="<tr><td><a href='#remp:"+btw2[1]+"'>"+lang("remp")+"</a></td></tr>"
		text+="<tr><td><a href='#dorem:"+btw2[1]+"'>"+lang("remm")+"</a></td></tr>"
		text+="<tr><td><a id='sort'>"+lang("sortby")+"</a></td></tr>"
		text+="</table>";
		var ele = document.createElement("div");
		ele.id = "mycontext";
		ele.innerHTML=text;
		ele.style.zIndex="200";
		ele.style.backgroundColor="WHITE";
		ele.style.visibility="hidden";

		document.body.insertBefore(ele, gel("baseDiv").nextSibling);

		if(GM_getValue(btw2[1]+"-alts", "")!="")
		{
			alts=GM_getValue(btw2[1]+"-alts", "");
			btw=alts.split("%");
			anz=0;
			for (var i=0; i<btw.length; i++)
			{
				btw3=btw[i].split("&");			

				if(egel("alts-"+btw3[0]))
				{
					gel("alts-"+btw3[0]).addEventListener("mouseover", function (e)
					{
						if(egel("pre-"+window.pre))
						{
							document.body.removeChild(gel("pre-"+window.pre));
						}
							
						xid=this.id;
						xid=xid.replace(/alts-/, "");
							
						var ele = document.createElement("div");
						ele.id = "pre-"+xid;
						window.pre = xid;

						top=""+window.innerHeight;
						left=""+window.innerWidth;
						top=top.replace(/px/, "");
						left=left.replace(/px/, "");
						top=1*top*1-344;
						left=0;//1*left*1-425;
	
						ele.style.top=top+"px";
						ele.style.left=left+"px";
						ele.style.position="fixed";

						ele.innerHTML='<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/'+xid+'&hl=de&fs=1&autoplay=true"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/'+xid+'&hl=de&fs=1&autoplay=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>';

						document.body.insertBefore(ele, document.body.firstChild);
					}, false);

					gel("alts-"+btw3[0]).addEventListener("mouseout", function (e)
					{
						xid=this.id;
						xid=xid.replace(/alts-/, "");
							
						if(egel("pre-"+xid))
						{
							document.body.removeChild(gel("pre-"+xid));
						}
					}, false);

					gel("alts-"+btw3[0]).addEventListener("click", function (e)
					{
						xid=this.id;
						xid=xid.replace(/alts-/, "");
							
						if(egel("pre-"+xid))
						{
							document.body.removeChild(gel("pre-"+xid));
						}
					}, false);
				}

				anz++;
			}
		}

		gel("sort").addEventListener("mouseover", function (e) 
		{
			if(!egel("mycontext2"))
			{
				text="<table id='contbl2'>"
				+"<tr><td><a ID='sort1'>"+lang("song")+" A->Z</a></td></tr>"
				+"<tr><td><a ID='sort2'>"+lang("song")+" Z->A</a></td></tr>"
				+"<tr><td><a ID='sort3'>"+lang("interpret")+" A->Z</a></td></tr>"
				+"<tr><td><a ID='sort4'>"+lang("interpret")+" Z->A</a></td></tr>"
				+"</table>";
				var ele = document.createElement("div");
				ele.id = "mycontext2";
				ele.innerHTML=text;
				ele.style.zIndex="205";
				ele.style.backgroundColor="WHITE";
				ele.style.visibility="hidden";
	
				document.body.insertBefore(ele, gel("baseDiv").nextSibling);
	
				ywidth=gel("contbl2").offsetWidth;
				yheight=gel("contbl2").offsetHeight;
				xw=1*e.clientY*1-1*yheight*1;
				xh=1*gel("mycontext").style.left.replace(/px/, "")*1-1*ywidth*1;
	
				if(xw<0)
				{
					xw=e.clientY;
				}
	
				gel("mycontext2").style.top=xw+"px";
				gel("mycontext2").style.left=xh+"px";
				gel("mycontext2").style.visibility="visible";

				gel("sort1").addEventListener("click", function (e)
				{
					doact("sortpl", "1");
				},false);

				gel("sort2").addEventListener("click", function (e)
				{
					doact("sortpl", "2");
				},false);

				gel("sort3").addEventListener("click", function (e)
				{
					doact("sortpl", "3");
				},false);

				gel("sort4").addEventListener("click", function (e)
				{
					doact("sortpl", "4");
				},false);
			}
		},false);

		ywidth=gel("contbl").offsetWidth;
		yheight=gel("contbl").offsetHeight;
		xw=1*e.clientY*1-1*yheight*1;
		xh=1*e.clientX*1-1*ywidth*1;		

		if(xw<0)
		{
			xw=e.clientY;
		}

		gel("mycontext").style.top=xw+"px";
		gel("mycontext").style.left=xh+"px";
		gel("mycontext").style.visibility="visible";

	},true);
}


function grlinks()
{
	var xlinks=document.getElementsByTagName("a");
	for (var i=0; i<xlinks.length; i++)
	{
		if(xlinks[i].href.match(/watch\?v\=/))
		{
			xlinks[i].addEventListener("mousedown", function (e) 
			{
				myurl = this.href;
				myurl2 = myurl.split("v=");
				if(typeof myurl2[1] == "string")
				{
					myurl3=myurl2[1].split("&");
					myurl4=myurl3[0].split("#");
					title=myurl4[0];
				}
				
				if(!in_array(title, playlistax))
				{
					window.toadd=this.href;
				}
			},false);
		}
	}
}

function grisplaying()
{
	if(egel("isplayinge"))
	{
		kill(gel("isplayinge"));
	}

	var datax=GM_getValue(id, "");

	var datax2=datax.split("-");
	var ausgabe="<table width=100%>";

	for (var y=0; y<datax2.length && datax2.length!=0; y++)
	{
		value=datax2[y];
		var wert = GM_getValue(id+"-"+value, "");
		value2=lang(value);

		if(value=="length")
		{
			value2=lang("mlength");
			min = Math.round(wert / 60);
			sec = wert - (min*60);

			if(sec < 0)
			{
				min = min - 1;
				sec = wert - (min*60);
			}
			if(sec < 10)
			{
				sec = "0"+sec;
			}
			wert=min+":"+sec;
		}
	
		if(typeof value2 == "string")
		{
			value3 = value2;
		}
		else
		{
			value3 = value;
		}
		ausgabe=ausgabe+"<tr><td width=30%>"+value3+"</td><td>"+wert+"</td></tr>";
	}

	ausgabe+="<tr><td></td><td><a href='#chgdata:"+id+"'>"+lang("chgdata")+"</a></td></tr>";
	
	ausgabe+="</table>";

	endausgabe="<div style='text-align:right; width:100%; color:BLUE; font-size:10px;'><a href='Javascript:void(0);' ID='hideisplayinge'>Hide</a></div>";
	endausgabe+="<table width=100%><tr><td><img src='http://i"+rand(1,4)+".ytimg.com/vi/"+id+"/default.jpg'></td><td><div>";
	endausgabe+=ausgabe;
	endausgabe=endausgabe+"</div></td></tr></table>";

	var datae = document.createElement("div");
	datae.style.margin = "0px 0px 5px 0px";
	datae.style.border = "1px solid #CCC";
	datae.style.align = "right";
	datae.id = "isplayinge";
	datae.innerHTML = endausgabe;

	gel('watch-other-vids').insertBefore(datae, gel('watch-other-vids').firstChild);	
	gel('hideisplayinge').addEventListener("click",function (e) {hiddenplaying();},false);

	GM_setValue("datap", "1");
}

function hiddenplaying()
{
	if(egel("isplayinge"))
	{
		kill(gel("isplayinge"));
	}

	endausgabe="<div style='text-align:right; width:100%; color:BLUE; font-size:10px;'><a href='Javascript:void(0);' ID='showisplayinge'>Show</a></div>";

	var datae = document.createElement("div");
	datae.style.margin = "0px 0px 5px 0px";
	datae.style.border = "1px solid #CCC";
	datae.style.align = "right";
	datae.id = "isplayinge";
	datae.innerHTML = endausgabe;

	gel('watch-other-vids').insertBefore(datae, gel('watch-other-vids').firstChild);
	gel('showisplayinge').addEventListener("click",function (e) {grisplaying();},false);

	GM_setValue("datap", "0");
}

function dragndrop()
{

	document.body.addEventListener("mouseup", function (e) 
	{
		window.vdragndrop="";
	},false);

	links=document.links;
	for (var i = 0; i < links.length; ++i)
	{
		if(links[i].href.indexOf("?v=")>0 )
		{
			links[i].addEventListener("mousedown", function (e)
			{
				e.preventDefault();
				window.vdragndrop=this.href;
			},false);
		}
	}
}

getvideoid();
if(isID())
{
	getdata();
}
playlist();

window.setTimeout(updater, 1500);

window.setTimeout(main, 1000);
window.setTimeout(checka, 5000);
window.setTimeout(loadplayer, 50);
window.setTimeout(dragndrop, 100);

//LYRICS
//MOD OF SCRIPT: http://userscripts.org/scripts/show/22569

var ScriptInfos={
	id: 22569,
	name: "Youtube Lyrics",
	version: new Version("3.02.00"),
	language: "en",
	idPrefix: "YL",
}

var CM=null
var RM=null;
var SU=null;
var DU=null;
init();

function init()
{
	CM=new ConfigurationManager();
	RM=new ResoucesManager();
//	SU=new Updater(22569,"Youtube Lyrics","updater","//div[@id='YLLyricsPanel']");
	DU=new Updater(34831,"Definitions","definitions","//div[@id='YLLyricsPanel']",installDefinitions);
	
//	SU.metaDataUrl="http://localhost/GM/YoutubeLyricsMeta.txt";
//	SU.installUrl="http://localhost/GM/YoutubeLyrics.user.js";
	
	DU.metaDataUrl="http://localhost/GM/LyricsSitesDefinitionsMeta.txt";
	DU.installUrl="http://localhost/GM/LyricsSitesDefinitions.user.js";
	
	if (ScriptInfos.version.compareTo(CM.config.updater.version)==1) updateOptions();
	ScriptInfos.language=CM.config.language;
	
	ScriptInfos.requestsCounter=0;

	$rmc("MenuOptions",[ScriptInfos.name],showOptionsPanel);
	
	var text1=getVideoCategory();
	if (CM.config.showOnCategory==text1 || ($isa(CM.config.showOnCategory) && CM.config.showOnCategory.contains(text1)))
	{
		var flag1=false;
		try{addLyricsPanel();}
		catch(ex)
		{
			flag1=true;
			GM_log(ex.message);
		}
//		SU.checkForNewVersion(flag1);
		if (!flag1) DU.checkForNewVersion(false,DU.config.autoInstall?installDefinitions:null);
	}
}

function updateOptions()
{
	var obj1={
		language:"en",
		updater:{
			lastCheckDate:new Date(),
			checkFrequency:1},
		showOnCategory:"10",
		showAlertOnSavePreferred:"on",
		showSearchTextBox:"on",
		showResultsDropDown:"on",
		showLinkOriginalPage:"on",
		showLinkSearchYoutube:"on",
		preferredSite:"",
		activeSites:[],
		definitions:{
			autoInstall:"on",
			lastCheckDate:new Date(),
			checkFrequency:1},
		lyricsSitesDefinitions:[]
		};
	$mo(obj1,CM.config);
	obj1.updater.version=ScriptInfos.version;
	var text1=GM_getResourceText("LyricsSitesDefinitions");
	obj1.definitions.version=new Version(/version.*?((?:\.|\d)+)/gm.exec(text1)[1]);
	mergeLyricsSites(obj1,$t2o(text1));
	setOptions(obj1);
}

function mergeLyricsSites(config,obj1)
{
	var array1=new Array();
	var obj2=config.lyricsSitesDefinitions;
	for(var num1=0;num1<obj1.length;num1++)
	{
		var flag1=false;
		var obj3=obj1[num1];
		var num3=obj3.id;
		for(var num2=0;num2<obj2.length;num2++) 
		{
			if (obj2[num2].id==num3) 
			{
				flag1=true;
				obj2[num2]=obj3;
				break;
			}
		}
		if (!flag1) 
		{
			config.activeSites.push(num2.toString());
			obj2.push(obj3);
		}
	}
}

function setOptions(options)
{
	if (options) CM.config=options;
	CM.save();
}

function savePreferredSite()
{
	var select1=$idp("LyricsSites");
	var option1=select1.options[select1.selectedIndex];
	CM.config.preferredSite=option1.value;
	if (CM.config.showAlertOnSavePreferred) alert(RM.getText("SavedPreferredSite",option1.textContent));
	setOptions();
}

function installDefinitions(updater,response)
{
	if (updater.newVersionAvailable)
	{
		var version1=new RegExp("YoutubeLyrics.*?((?:\\.|\\d)+)","gmi").test(response.responseText)?new Version(RegExp.$1):null;
		if (version1 && version1.compareTo(ScriptInfos.version)!=1)
		{
			var text1=RM.getText("NewLyricsSitesDefinitionNotSupported",[ScriptInfos.name,ScriptInfos.version,varsion1]);
			if (ScriptInfos.optionsPanelVisible) alert(text1);
			else createInfoMessage("NewVersionRequired",text1,null,"//div[@id='YLLyricsPanel']");
		}
		else sendGetRequest(updater.installUrl,$chf(this,installDefinitionsCallback,[updater]));
	}
}

function installDefinitionsCallback(updater,response)
{
	if (new RegExp("version.*?((?:\\.|\\d)+)","gmi").test(response.responseText)) updater.config.version=new Version(RegExp.$1);
	mergeLyricsSites(CM.config,$t2o(response.responseText));
	setOptions();
	updater.hideNewVersionHTML(false);
	var text1=RM.getText("LyricsSitesDefinitionsInstalled",[updater.config.version]);
	if (ScriptInfos.optionsPanelVisible) alert(text1);
	else createInfoMessage("NewVersionInstalled",text1,null,"//div[@id='YLLyricsPanel']");
}

function sendRequest(url,handler,encoding)
{
	ScriptInfos.requestsCounter++;
	var callback=function(requestsCounter,handler){var num1=requestsCounter; return function(response){if (num1==ScriptInfos.requestsCounter) handler(response);};}(ScriptInfos.requestsCounter,handler);
	sendGetRequest(url,callback,encoding);
}

function getVideoCategory()
{
	var node1=$x1("//a[contains(@href,'browse?s=mp&t=t&c=')]");
	return node1?node1.href.match(/&c=(\d+)/i)[1]:null;
}

function addLyricsPanel(reset)
{
	var div1=$idp("LyricsPanel");
	if (div1 && reset) {div1.parentNode.removeChild(div1); div1=null;}
	if (div1==null)
	{
		addHiddenStyle();
		if (!isStyleAdded("LyricsPanelStyle")) addStyle("LyricsPanelStyle",null,[ScriptInfos.idPrefix,RM.getText("LoadingImageSrc")]);
		
		var array1=RM.getObject("LyricsPanelTexts");
		array1[0]=ScriptInfos.idPrefix;
		array1[2]=RM.getText("SaveImageSrc");
		array1[3]=RM.getText("SaveImageWidth");
		array1[4]=RM.getText("SaveImageHeight");
		array1[5]=array1[5].format(ScriptInfos.name,ScriptInfos.version);
		div1=stringToHTML(RM.getText("LyricsPanelHTML",array1));
		
		var div2=$id("plbutd").nextSibling;
		div2.parentNode.insertBefore(div1,div2);
		
		var select1=$idp("LyricsSites");
		select1.options.length=0;
		for(var num1=0;num1<CM.config.lyricsSitesDefinitions.length;num1++)
		{
			var obj1=CM.config.lyricsSitesDefinitions[num1];
			if (obj1.enabled && CM.config.activeSites.indexOf(obj1.id.toString())!=-1)
			{
				var text1=obj1.name;
				var option1=$ce("option",text1,{value:obj1.id});
				option1.selected=obj1.id==CM.config.preferredSite;
				select1.appendChild(option1);
			}
		}

		select1.addEventListener("change",function(e){searchForLyrics();},false);
		$idp("PanelSwitch").addEventListener("click",function(e){if (!e.target.onlyOnce) {e.target.onlyOnce=true; searchForLyrics();}},false);
		$idp("SavePreferredSite").addEventListener("click",savePreferredSite,false);
		$idp("SearchText").addEventListener("keypress",function(e){if (e.which==13){searchForLyrics(e.target.value); return false;}},false);
		$idp("ResultsList").addEventListener("change",function(e){loadLyricsPage(e.target.selectedIndex);},false);
	}
	return div1;
}

function setLyricsDivContent(html,showLoadingIcon,showLyricsTextBox,showResultsDropDown,showLinkToOriginalPage,showLinkToSearchYoutube)
{
	with($idp("SearchText"))
	{
		className=showLyricsTextBox?"":"hidden";
		value=ScriptInfos.words;
	}
	
	var select1=$idp("ResultsList");
	select1.className=showResultsDropDown?"":"hidden";
	select1.options.length=0;
	if (ScriptInfos.lyricsLinks)
	{
		for(var num1=0;num1<ScriptInfos.lyricsLinks.length;num1++) 
		{
			var option1=new Option(decodeHTML(ScriptInfos.lyricsLinks[num1][1]));
			if (ScriptInfos.lyricsLinksIndex==num1) option1.selected=true;
			select1.options[num1]=option1;
		}
	}
	
	var text1="";
	var text2="";
	if (ScriptInfos.lyricsLinks && ScriptInfos.lyricsLinksIndex!=null)
	{
		var obj1=ScriptInfos.lyricsLinks[ScriptInfos.lyricsLinksIndex];
		text1=obj1[0];
		text2="http://{0}/results?search_query={1}".format(document.location.host,encodeURIComponent(obj1[1].replace(/-/gmi,"").replace(/lyrics/gmi,"").replace(/  /," ")).replace(/%20/gmi,"+"));
	}
	
	with($idp("OriginalPage"))
	{
		className=showLinkToOriginalPage?"":"hidden";
		setAttribute("href",text1);
	}
	
	with($idp("SearchYoutube"))
	{
		className=showLinkToSearchYoutube?"":"hidden";
		setAttribute("href",text2);
	}
	
	var text3="{0}Loading".format(ScriptInfos.idPrefix)
	var div1=$idp("LyricsContentDiv");
	var array1=div1.className.split(" ");
	if (!showLoadingIcon) array1.remove(text3);
	else if (array1.indexOf(text3)==-1) array1.push(text3);
	div1.className=array1.join(" ");
	
	$idp("Lyrics").innerHTML=html;
}

function initLyricsSiteDefinition(id)
{
	ScriptInfos.lyricsSiteId=id;
	var array1=CM.config.lyricsSitesDefinitions;
	for(var num1=0;num1<array1.length;num1++) if (array1[num1].id==id) {ScriptInfos.lyricsSite=$co(array1[num1]); break;}
	ScriptInfos.lyricsSite.parseListRegexp=new RegExp(ScriptInfos.lyricsSite.parseListRegexp,"gmi");
	ScriptInfos.lyricsSite.parseLyricsRegexp=new RegExp(ScriptInfos.lyricsSite.parseLyricsRegexp,"gmi");
}

function searchForLyrics(words)
{	
	ScriptInfos.lyricsLinks=null;
	ScriptInfos.lyricsLinksIndex=null;
	
	var select1=$idp("LyricsSites");
	initLyricsSiteDefinition(parseInt(select1.options[select1.selectedIndex].value));

	if (words) ScriptInfos.words=words;
	if (ScriptInfos.words==null) ScriptInfos.words=document.title.replace(/youtube/gmi,"").replace(/-/gmi," ").replace(/"/gmi," ").replace(/video/gmi," ").replace(/ +/gmi," ").replace(/^\s+/gmi,"").replace(/\s+$/gmi,"");

	var text1=ScriptInfos.lyricsSite.name=="get-lyrics.net"?"-":"+";
	var text2=encodeURIComponent(ScriptInfos.words).replace(/%20/gmi,text1);
	var text3=ScriptInfos.lyricsSite.searchUrl.format(text2);
	
	setLyricsDivContent(RM.getText("Searching",[ScriptInfos.lyricsSite.name,ScriptInfos.words]),true,CM.config.showSearchTextBox);
	sendRequest(text3,parseSearchResponse,ScriptInfos.lyricsSite.searchEncoding);
}

function parseSearchResponse(response)
{
	var text1="";
	var text2="";
	ScriptInfos.lyricsLinks=new Array();

	//debugRegexp(ScriptInfos.lyricsSite.parseListRegexp,response.responseText);

	ScriptInfos.lyricsSite.parseListRegexp.lastIndex=0;
	var match1=ScriptInfos.lyricsSite.parseListRegexp.exec(response.responseText);
	while(match1)
	{
		//GM_log(match1[1]+" "+match1[2]);
		ScriptInfos.lyricsLinks.push([ScriptInfos.lyricsSite.lyricsUrl+decodeHTML(match1[1]),match1[2].replace(/<\/?(b|em)>/gmi,"")]);
		match1=ScriptInfos.lyricsSite.parseListRegexp.exec(response.responseText);
	}
	
	if (ScriptInfos.lyricsLinks.length!=0) loadLyricsPage(0);
	else setLyricsDivContent(RM.getText("FoundNothing",ScriptInfos.lyricsSite.name),false,CM.config.showSearchTextBox);
}

function loadLyricsPage(index)
{
	ScriptInfos.lyricsLinksIndex=index;
	setLyricsDivContent(RM.getText("Loading",[ScriptInfos.lyricsSite.name,ScriptInfos.lyricsLinks[index][1]]),true,CM.config.showSearchTextBox,CM.config.showResultsDropDown,CM.config.showLinkOriginalPage,CM.config.showLinkSearchYoutube);
	sendRequest(ScriptInfos.lyricsLinks[index][0],parseLyricsPage,ScriptInfos.lyricsSite.lyricsEncoding);
}

function parseLyricsPage(response)
{	
	var text1="";
	
	if (response.status!=200) text1=RM.getText("LyricsParsingErrorHTML",[response.statusText,""]);
	else
	{
		try
		{
			//GM_log(response.responseText);
			//debugRegexp(ScriptInfos.lyricsSite.parseLyricsRegexp,response.responseText);
			ScriptInfos.lyricsSite.parseLyricsRegexp.lastIndex=0;
			var match1=ScriptInfos.lyricsSite.parseLyricsRegexp.exec(response.responseText);
			
			var text2=match1[1];
			var text3=match1[2];
			
			text2=text2.replace(/<br ?\/?>/gmi,"");
			if (response.responseText.match(/<pre>/gmi)) text3=text3.replace(/\n/gmi,"<br/>").replace(/\r/gmi,"");
			text3=text3.replace(/<br ?\/?>/gmi,"<br/>").replace(/<br\/>(?:\s*<br\/>)+/gmi,"<br/>").replace(/^\s*(?:<br\/>\s*)+/gi,"");
			
			text1=RM.getText("LyricsParsingSuccessHTML",[ScriptInfos.idPrefix,text2,text3]);
		}
		catch(ex){GM_log(ex.message); text1=RM.getHTMLTexts("LyricsParsingError");}
	}

	setLyricsDivContent(text1,false,CM.config.showSearchTextBox,CM.config.showResultsDropDown,CM.config.showLinkOriginalPage,CM.config.showLinkSearchYoutube);
}

function showOptionsPanel(reset)
{
	var div1=addModalDiv(hideOptions);
	var div2=addOptionsPanel(reset);
	
	setFormValues($idp("OptionsForm"),CM.config);

	$idp("EditLyricsSitesDefinitions").disabled=false; 
	with($idp("LyricsSitesDefinitions"))
	{
		readOnly=true;
		disabled=true;
	}
	
	div1.className="";
	div2.className="";
	ScriptInfos.optionsPanelVisible=true;
}

function addOptionsPanel(reset)
{
	var div1=$idp("OptionsContainer");
	if (div1 && reset) {div1.parentNode.removeChild(div1); div1=null;}
	if (div1==null)
	{
		addStyle("OptionsContainerStyle");
		addNoPaddedListStyle();
		
		var array1=new Array();
//		array1.push(RM.getHTMLTexts("OptionsGeneral",[ScriptInfos.idPrefix,,,,,,,,,,SU.homepageUrl]));
		array1.push(RM.getHTMLTexts("OptionsUpdater"));
		array1.push(RM.getHTMLTexts("OptionsDisplay"));
		array1.push(RM.getHTMLTexts("OptionsLyricsPanelContent"));
		array1.push(RM.getHTMLTexts("OptionsLyricsSites"));
		array1.push(RM.getHTMLTexts("OptionsLyricsSitesDefinitions"));
		div1=stringToHTML(RM.getHTMLTexts("OptionsContainer",[ScriptInfos.idPrefix,RM.getHTMLTexts("OptionsLeftSide",[ScriptInfos.idPrefix,ScriptInfos.name]),array1.join("\n")]));

		document.body.appendChild(div1);
		
		var li1=$idp("OptionsLyricsSites");
		var ul1=li1.parentNode;
		ul1.removeChild(li1);
		for(var num1=0;num1<CM.config.lyricsSitesDefinitions.length;num1++)
		{
			var obj1=CM.config.lyricsSitesDefinitions[num1];
			if (obj1.enabled)
			{
				var li2=li1.cloneNode(true);
				li2.innerHTML=li2.innerHTML.format(obj1.id,obj1.name);
				ul1.appendChild(li2);
			}
		}
		
//		$idp("CheckForUpdate").addEventListener("click",function(){SU.checkForNewVersion(true,$chf(SU,SU.newVersionDialog));},false);
		$idp("Apply").addEventListener("click",saveOptions,false);
		$idp("OK").addEventListener("click",saveOptions,false);
		$idp("Cancel").addEventListener("click",hideOptions,false);
		$idp("Definitions.CheckForUpdate").addEventListener("click",function(){DU.checkForNewVersion(true,$chf(DU,DU.newVersionDialog));},false);
		$idp("EditLyricsSitesDefinitions").addEventListener("click",enableLyricsSitesDefinitionsTextarea,false);
		$idp("ReinstallLyricsSitesDefinitions").addEventListener("click",function(){if (confirm(RM.getText("ReinstallLyricsSitesDefinitionConfirm"))) autoInstallDefinitions(DU,true,null);},false);
	}
	return div1;
}

function enableLyricsSitesDefinitionsTextarea(e)
{
	if (confirm(RM.getText("EditLyricsSitesDefinitionsConfirm"))) 
	{
		$idp("EditLyricsSitesDefinitions").disabled=true; 
		with($idp("LyricsSitesDefinitions"))
		{
			readOnly=false;
			disabled=false;
		}
	}
}

function hideOptions()
{
	ScriptInfos.optionsPanelVisible=false;
	$idp("ModalDiv").className="hidden";
	$idp("OptionsContainer").className="hidden";
}

function saveOptions(e)
{
	try{setOptions(getFormValues(e.target.form));}
	catch(ex)
	{
		alert(RM.getText("LyricsSitesDefinitionsError",ex.message)); 
		getFormValues(e.target.form);
	}
	if (ScriptInfos.language!=CM.config.language)
	{
		ScriptInfos.language=CM.config.language;
		showOptionsPanel(true);
	}
	if (e.target.name=="OK") hideOptions();
}
