Interactive Orkut Shortcuts

By Bean Last update Jan 4, 2008 — Installed 4,264 times.
// ==UserScript==
// @name 			Interactive Orkut Shortcuts
// @author 			Hugo Cesar Pessotti / Luiz Fernando da Silva Armesto
// @version 		0.3.7.1
// @include 		http://*orkut.com*
// ==/UserScript==
// ---------------- Esse script pode ser utilizado e modificado livremente ---------------- //

// ------------------------------- Inicio das configuracoes ------------------------------- //
var Xeretas = 1;			// 1 = Mostra foto das pessoas que te visitaram recentemente
							// 0 = Desliga a funcao
							// Padrao: 1
							// -- Obs. Esta funcao eh independende da MiniFotos --

var MiniFotos = 1;			// 1 = Mostra foto das pessoas ao passar o mouse
							// 0 = Desliga a funcao
							// Padrao: 1
							// -- Obs. Esta funcao eh independende da Xeretas --

var MiniComunas = 1;		// 1 = Mostra foto das comunidades ao passar o mouse
							// 0 = Desliga a funcao
							// Padrao: 1
							
var Simplificado = 1;		// 1 = Esconde os botoes add/remove // 0 = Mostra todos os botoes
							// Padrao: 1	

var FundoTransparente = 2;	// 0 = Nunca; 1 = sempre; 2 = quando mouse esta fora
							// Padrao: 2

var Opacidade = 0.8;		// Grau de transparencia da caixa, de 0 a 1
							// Padrao: 0.8

var Direcao = 0;			// 0 = Horizontal // 1 = Vertical esquerda // 2 = Vertical direita
							// Padrao: 2

var Bordas = 5;				// Grau de curvatura das bordas, de 0 a 10
							// Padrao: 5
							
var LarguraBorda = 3;		// Largura da borda
							// Padrao: 3

var CaixaCor  = "#AFC0EA";	// Cor mais de fundo da caixa
							// Padrao: #AFC0EA

var BordaCor1 = "#6F80EA";	// Cor mais clara da borda
							// Padrao: #6F80EA

var BordaCor2 = "#BABAD8";	// Cor mais escura da borda
							// Padrao: #BABAD8

var tempo  = 275;			// Tempo para abrir o popup, em milisegundos
							// Padrao: 275, minimo 150

var NovaAba = 0;			// 1 = Abre em novas abas; 0 = Abre na mesma janela
							// Padrao: 0
// -------------------------------- Fim das configuracoes -------------------------------- //

/*
Colaborador: Hugo Cesar
Desenvolvedor: Luiz Fernando

Changelog 0.3.7.1
	- Adicionado botoes de foto e video para o Xeretas

Changelog 0.3.7
	- Novas opcoes: Acesso a videos
	- Corrigido erro na home quando desativa a opcao de visitantes (bina) do orkut
*/

setTimeout(function() {
//addEventListener("load",function(){
	
	var toa			= 0;
	var ref			= new Array();
	var refs;
	var posX, posY;
	var tamX, tamY;
	var Opa			= Opacidade;
	var endereco	= location.href.toLowerCase()
	
	if (tempo < 150)
		tempo = 150;

	document.addEventListener('mousemove', function(event){
		posX = event.pageX;
		posY = event.pageY;
	}, false);
	
	var Esconder = function() {
		if (toa) {
			clearTimeout(toa);
			toa = 0;
		}
		Div1.style.visibility = "hidden";
	}
	
	var Mostrar = function() {
		if (toa) {
			clearTimeout(toa);
			toa = 0;
		}
		
		telaX = document.body.clientWidth + window.pageXOffset;
		telaY = document.body.clientHeight + window.pageYOffset;

		tamX = Div1.clientWidth+2*LarguraBorda;
		tamY = Div1.clientHeight+2*LarguraBorda;
				
		if (Direcao == 0) {
			Div1.style.top			= posY - ((posY+tamY+5 > telaY) ? tamY :0) -5 + "px";
			Div1.style.left			= posX + ((posX+tamX+15 > telaX) ? -tamX-6 : 6) + "px";
		}
		else if (Direcao == 1) {
			Div1.style.top			= posY - ((posY > telaY-tamX-5) ? tamX-15 : 9) + "px";
			Div1.style.left			= posX + ((posX < tamY+15) ? 6 : -tamY-6) + "px";
		}
		else if (Direcao == 2) {
			Div1.style.top			= posY - ((posY > telaY-tamX-5) ? tamX-15 : 9) + "px";
			Div1.style.left			= posX + ((posX > telaX-tamY-15) ? -tamY-6 : 6) + "px";
		}

		Div1.style.visibility	= "visible";
	};

	var ShowDiv = function(hrefLink, botoes) {
		if (toa) {
			clearTimeout(toa);
			toa = 0;
		}
		Div1.style.visibility = "hidden";
		
		LinkID = hrefLink.split("?");
		
		for (var i = 0; i < refs; i++) {
			Div1.removeChild(ref[i]);
		}
		refs = 0;
		
		for (var i = 0; i < botoes.length; i++) {
			botoes[i].href = botoes[i].link + LinkID[1];
			Div1.appendChild(botoes[i]);
			ref[i] = botoes[i];
			refs++;
		}
		this.src="";
		toa = setTimeout(Mostrar, tempo);
	};
	
	var HideDiv = function() {
		if (toa) {
			clearTimeout(toa);
			toa = 0;
		}
		toa = setTimeout(Esconder, tempo);
	};

	// Caixa
	Div1 = document.createElement('div');
	Div1.setAttribute("style","padding: 3px; z-index:10000000; position: absolute;");
	
	if (LarguraBorda > 0)
		Div1.style.border = "outset "+LarguraBorda+"px";
	else
		Div1.style.border = "outset 2px";

	Div1.style.borderColor 		= BordaCor1+" "+BordaCor2+" "+BordaCor2+" "+BordaCor1;
	Div1.style.backgroundColor 	= CaixaCor;

	if (FundoTransparente > 0)
		Div1.style.opacity = Opacidade;
		
	if (Bordas > 0)
		Div1.style.MozBorderRadius = Bordas;
		
	Div1.style.visibility = "hidden";
	
	Div1.addEventListener('mouseover', function(event){
		if (toa) {
			clearTimeout(toa);
			toa = 0;
		}
		
		if (FundoTransparente != 1)
			Div1.style.opacity = 1;
	}, false);
	
	Div1.addEventListener('mouseout', function(event){
		if (toa) {
			clearTimeout(toa);
			toa = 0;
		}
		
		if (FundoTransparente != 0)
			Div1.style.opacity = Opacidade;

		HideDiv();
	}, false);

	document.body.appendChild(Div1);
	
	//Links
	var xereta		= document.createElement('a');
	xereta.link		= "http://www.orkut.com/Profile.aspx?";

	var scrap		= document.createElement('a');
	scrap.link		= "http://www.orkut.com/ScrapBook.aspx?";
	
	var msgs		= document.createElement('a');
	msgs.link		= "http://www.orkut.com/Messages.aspx?a=Compose&";
	
	var foto		= document.createElement('a');
	foto.link		= "http://www.orkut.com/Album.aspx?";
	
	var video		= document.createElement('a');
	video.link		= "http://www.orkut.com/FavoriteVideos.aspx?";

	var add			= document.createElement('a');
	add.link		= "http://www.orkut.com/FriendAdd.aspx?";
	
	var forum		= document.createElement('a');
	forum.link		= "http://www.orkut.com/CommTopics.aspx?";
	
	var forumnew	= document.createElement('a');
	forumnew.link	= "http://www.orkut.com/CommMsgPost.aspx?";

	var join		= document.createElement('a');
	join.link		= "http://www.orkut.com/CommunityJoin.aspx?";
	
	var part		= document.createElement('a');
	part.link		= "http://www.orkut.com/CommunityUnjoin.aspx?";

	var members		= document.createElement('a');
	members.link	= "http://www.orkut.com/CommMembers.aspx?";

	var last		= document.createElement('a');
	last.link		= "http://www.orkut.com/CommMsgs.aspx?";

	var reply		= document.createElement('a');
	reply.link		= "http://www.orkut.com/CommMsgPost.aspx?";

	xereta.over		= "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFsAAAAgCAMAAABKDfSpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAGUExURT09Pf///0bN1+UAAAACdFJOU/8A5bcwSgAAAF5JREFUeNpiYKQdYBg1e9TsUbNHmNkMUEAlBiOSCI3NhnmBAUriYsDVEKMY3WwUF8BFEFJQrWjOHXiziQ0TAkYim02EC7DEHA41uNIJ1c0ezfOjZo+aPWo2dQBAgAEAA4QJlxW23xgAAAAASUVORK5CYII=";

	scrap.over		= "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAkUExURea+OczJya6GC6KrqtekbfG/hYpzVSgeE2JSTrmwrf///////5RZJcYAAAAMdFJOU///////////////ABLfzs4AAAB0SURBVHjaZNBLEoMwDANQB2xJpve/bw205IPGzuJNFkrs845dp9T3tkyp788O6fjvY0MWA1dLcbUkF2sQMFuV8HBosHZR4WBQhHtgsEbCIyYTQdU9ddsJqx4S8zHRqsmp/W3crKaw5ZnbbFMN2/ync74CDADAUQyXIUQeiwAAAABJRU5ErkJggg==";
	foto.over		= "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAYUExURQCh4kpKSiuQvvD//RcXF4y06AAAAP////Kn1dEAAAAIdFJOU/////////8A3oO9WQAAAEFJREFUeNpiYMcEDFQQYwEBVDEWRiCACYLE2JABTIwVAVDEgErQxdiYGRjY0MWYsIgxYIphMw/DXizuo2ZYAQQYAI5bCNJrJ5o7AAAAAElFTkSuQmCC";
	video.over		= "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAVUExURQAAAAmb44y06EpKSiQkJJqamv///3sw3SgAAAAHdFJOU////////wAaSwNGAAAAiklEQVR42mJgwwQAAcSARQwggLCJAQQQNjGAAMImBhBAYDEGCICJAQQQRIyFmZmZBS4GEEDYxAACiAGhFayZBYgBAggsxggBQDZYMUAAoYgxsIDVAgQQRIwJBBhh+gECCFWMFSwGEEBo5rGC+AABhG4vKxADBBA2vwEEEDYxgADCJgYQQNjEAAIMAPjnBn3jq+8BAAAAAElFTkSuQmCC";
	msgs.over		= "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAPUExURfT09K2trTMzM////////9JG0H0AAAAFdFJOU/////8A+7YOUwAAAEVJREFUeNqs0EESABAMQ9FQ9z+zqoYaxoa/6rxdirKHN8trbhAGWhoIvbsJUUlojo2mGRoFa2gUTdFoMXaxw46vv6oCDABYswSKNZyRXQAAAABJRU5ErkJggg==";
	add.over		= "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAYUExURYGj2Xd3aRgYAA8A0f//M////wAAAP///wdEdg4AAAAIdFJOU/////////8A3oO9WQAAAF5JREFUeNqM0FEOgCAMA9ButXD/GztE4hZMtB/7eGmAgb4Hn2ZuydoVP/yxKR4WTZTWiBezvScxnzdJyvfepJbet3rZ+ksvcEiru2GYipGUwGwEwBjMtvLz/2ZOAQYAQtsIY3tbRVMAAAAASUVORK5CYII=";
	
	forum.over		= "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAPUExURcrKyoeHhwAAAP///////yV/+ecAAAAFdFJOU/////8A+7YOUwAAAElJREFUeNqc0DkWACAIQ8EQvP+ZXUCFR6UpP1OBVoe3Jr7UdA63TWDNIgyJktRxY2wOb+NyQ6I6/XLwBcez3SLyltD7r9K6AAMAPs0EUj3z0BIAAAAASUVORK5CYII=";
	forumnew.over	= "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAYUExURXd3acrKyoeHhxgYAP//M////wAAAP///wBRnV4AAAAIdFJOU/////////8A3oO9WQAAAFxJREFUeNqUkEEOwCAIBNci+P8fd7HYQuzF1QuTcUnE2IMzdnkgKEwJpMvECEkJnhtMlYyjHyTGx71THIvZv7f1me+Vsnf2eSOapb4W+Zjam8WyFKxI539VcgswAIC1B4ex+yRTAAAAAElFTkSuQmCC";
	join.over		= "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAVUExURc5wcOq5ubpMTNqNjUABAQAAAP///31D5AYAAAAHdFJOU////////wAaSwNGAAAAcUlEQVR42nyQSxbDMAwCsRhy/yNXSRf+5LXaeYwFRtd79IsROBiyxMbwIHJWltFHasKHcUGK7W2FKlZdC52S2z1LllHYfTGYmdMSq9BtN//xrGx1FkaT9JaNtfs319IBFneCrZd2sTm6Isnf/o75CDAAXDYHPe5ogboAAAAASUVORK5CYII=";
	part.over		= "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASUExURc9ycuq4uNmLiz0AAAAAAP///zNWy1kAAAAGdFJOU///////ALO/pL8AAABqSURBVHjafJBJDsAwCAON7fz/yyVcAqlaDok0bCOw3oEvJksXEwhoMDFk0J05rKW4mCoxe2EFNXY4colul5TZOdfXnUWiph5m5n5upcPKpp5Wl0our1aXux2zNweCZdlvpZT5vd8VjwADAIcMBh4ZnqkaAAAAAElFTkSuQmCC";
	members.over	= "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAYUExURZiEK+DAN+nPYmiQxjVss2VmZfPz8////1wVZOkAAAAIdFJOU/////////8A3oO9WQAAAFtJREFUeNqU0EkOACEIRFGm0vvfuEEiEnvlX5mXigto/qM3E68bgCBmrNKGpPHwmjEvw7EAIrrNCd1GSMzaf/7aq2Oa9V2KmZZJQlQ2i0wFZbat3UAPPNzvE2AAmSoHhHAH/wAAAAAASUVORK5CYII=";

	last.over		= "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAYUExUReXk2qSimMmTGOrRfDtUbgICA6/A6v///2JHbIIAAAAIdFJOU/////////8A3oO9WQAAAGdJREFUeNqU0FEOwCAMAtCipbv/jSdaO5N9yecLSUV7/rEbo1eQxk5EMBShidq0xG1CgqcJyTYxrQ2bES7DKPZCz7ut7xi38aPdcxBmNsijLODjrlplcD2Mi5B7oaXkuXeF1//3CjAAp4sHkJSMJ2IAAAAASUVORK5CYII=";
	reply.over		= "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASUExURWxbNw4OAPmVF//PDMxmAP///ycU6p4AAAAGdFJOU///////ALO/pL8AAABYSURBVHjafNBRDsAgCANQCvX+Vx7ghnFulB/yYhOijDPya2SsgJSRqq4wwzJLDeMyMy+GZf0xhxn09tWdT6EcnWlM3FyWR2e4rHSzW1+Welgo+//bcwkwAAAcBYSWWG3sAAAAAElFTkSuQmCC";
	
	xereta.title	= "View Profile"
	scrap.title		= "See Scraps";
	msgs.title		= "Send Message";
	foto.title		= "See Photos";
	video.title		= "See Videos";
	add.title		= "Add Friend";
	
	forum.title		= "View Forum";
	forumnew.title	= "Post new Topic";
	join.title		= "Join Community";
	part.title		= "Leave Community";
	members.title	= "View States";

	last.title		= "Last Page";
	reply.title		= "Reply Topic";

	botoesloop = Array(xereta,scrap,msgs,foto,video,add,forum,forumnew,join,part,members,last,reply);
	i = botoesloop.length-1;
	do {
		botao = botoesloop[i];
		
		if (Direcao > 0)		
			botao.style.display = "block";
		if (NovaAba == 1)
			botao.target = "_new";
		
		botao.img = document.createElement('img');
		botao.img.style.border = "0px";
						
		botao.img.src = botao.over;
		botao.appendChild(botao.img);
		
		if (i > 0) {
			botao.style.opacity = 0.5;
			
			botao.addEventListener('mouseover', function(event){
				this.style.opacity = 1;
			}, false);
			botao.addEventListener('mouseout', function(event){
				this.style.opacity = 0.5;
			}, false);
		}
	} while (i--);
	
	xereta.style.display = "block";
	xeretastd = "";
	
	if (endereco.indexOf("home.aspx") == -1)
		Xeretas = 0;
	
	if (Xeretas == 1) {
    	var plinks = document.evaluate("//a[@href[contains(.,'News.aspx')]]/img", document, null, 7,null);
		if (plinks.snapshotLength > 0) {
			xeretastd = plinks.snapshotItem(0).parentNode.parentNode;
			xeretapics = new Array();
			
			function getPhoto(uid) {
				xereta.img.src = xereta.over;
				if (!xeretapics[uid]) {
					GM_xmlhttpRequest({
						method: 'GET',
						url: 'http://www.orkut.com/AlbumView.aspx?uid=' + uid,
						onreadystatechange: function(responseDetails) {
							if (responseDetails.readyState == 4) {
								xeretafoto = new String(responseDetails.responseText.match(/https?:\/\/images3?\.orkut\.com\/images\/medium\/.+\.jpg/gim));
								xeretapics[uid] = xeretafoto;
								xereta.img.src = xeretafoto;
							}
						}
					});
				}
				else
					xereta.img.src = xeretapics[uid];
			}
		}
	}
	
	links = document.evaluate("//a[contains(@href,'Home.aspx')]", document, null, 7,null);
	i = links.snapshotLength-1;
	if (i > -1) {
		do {
			obj = links.snapshotItem(i);
			obj.addEventListener('mouseover', function(event) {
				ShowDiv(this.href,Array(scrap,foto,video));
			}, false);
			obj.addEventListener('mouseout', function(event){
				HideDiv();
			}, false);	
		} while (i--);
	}
	
	if (endereco.indexOf("commmsgs.aspx?") == -1) {
		links = document.evaluate("//a[contains(@href,'CommMsgs.aspx?')]", document, null, 7,null);
		i = links.snapshotLength-1;
		if (i > -1) {
			do {
				obj = links.snapshotItem(i);
				obj.addEventListener('mouseover', function(event){
					ShowDiv(this.href+'&na=2',Array(last,reply));
				}, false);
				obj.addEventListener('mouseout', function(event){
					HideDiv();
				}, false);	
			} while (i--);
		}
	}
	
	links = document.evaluate("//a[contains(@href,'Community.aspx?')]", document, null, 7,null);
	i = links.snapshotLength-1;
	if (i > -1) {
		do {
			obj = links.snapshotItem(i);
			if (obj.innerHTML.indexOf(".gif") == -1) {
				obj.addEventListener('mouseover', function(event){
					imgfoto = new String(this.innerHTML.match(/(https?:\/\/(.+)klein(.+)\.jpg)/gim,"$1"));
					if (Simplificado == 0)
						botoes = Array(forum,forumnew,join,part,members);
					else
						botoes = Array(forum,forumnew);
					if ((imgfoto != "null") && (MiniComunas == 1)) {
						xereta.img.src = xereta.over;
						xereta.link = "http://www.orkut.com/Community.aspx?";
						xereta.img.src = imgfoto.replace("klein","mittel");
						botoes[botoes.length] = xereta;
					}	
					ShowDiv(this.href,botoes);
				}, false);
				obj.addEventListener('mouseout', function(event){
					HideDiv();
				}, false);	
			}
		} while (i--);
	}
	
	links = document.evaluate("//a[contains(@href,'Profile.aspx?') or contains(@href,'FriendsNet.aspx?')]", document, null, 7,null);
	i = links.snapshotLength-1;
	if (i > -1) {
		do {
			obj = links.snapshotItem(i);
			if (obj.innerHTML.indexOf(".gif") == -1) {
				if (obj.parentNode != xeretastd) {
					obj.addEventListener('mouseover', teste = function(event){
						imgfoto = new String(this.innerHTML.match(/(https?:\/\/(.+)small(.+)\.jpg)/gim,"$1"));
						if (Simplificado == 0)
							botoes = Array(scrap,foto,video,msgs,add);
						else
							botoes = Array(scrap,foto,video);
						if ((imgfoto != "null") && (MiniFotos == 1)) {
							xereta.img.src = xereta.over;
							xereta.link = "http://www.orkut.com/Profile.aspx?";
							xereta.img.src = imgfoto.replace("small","medium");
							botoes[botoes.length] = xereta;
						}
						ShowDiv(this.href,botoes);
					}, false);
				}
				else if (Xeretas == 1) {
					obj.addEventListener('mouseover', function(event){
						objlink = this.href;
						botoes = Array(scrap,foto,video);
						xereta.img.src = xereta.over;
						xereta.link = "http://www.orkut.com/Profile.aspx?";
						uid = new String(objlink.match(/(\d+)/gim,"$1"));
						getPhoto(uid);
						botoes[botoes.length] = xereta;
						ShowDiv(objlink,botoes);
					}, false);
				}
				obj.addEventListener('mouseout', function(event){
					HideDiv();
				}, false);	
			}
		} while (i--);
	}

//},false);
},350);