Scraps Friends

By Devilsworkshop Last update Jul 16, 2007 — Installed 5,748 times.
// ==UserScript==
// @name           Scraps Friends
// @author         Link (Portuguese Version) | Bean (English Version)
// @namespace      http://orkutaddons.blogspot.com/
// @description    Scrap All Friends Deluxe
// @include        *.orkut.com/CommInvite.aspx?cmm=25675519&Scraps*
// @include        *.orkut.com/scraps.aspx*
// ==/UserScript==


//--------------------------------------------
// Mesma função dos cookies
//--------------------------------------------
unsafeWindow.SC_sf=function(name,value){GM_setValue(name,value);};
unsafeWindow.VC_sf=function(name){return GM_getValue(name)};
//--------------------------------------------
// Redireciona
//--------------------------------------------
if(String(location).match(/scraps.aspx/i)){window.location="http://www.orkut.com/CommInvite.aspx?cmm=25675519&Scraps=yes";return;}
//--------------------------------------------
// Adiciona camada anti meximento XD
//--------------------------------------------
div = document.createElement('div');
div.innerHTML="<div id=\"focus\" style=\"position:fixed; width:100%; height: 100%; z-index: 1; left: 0; top: 0; opacity:.5; background-color: #000000;\">teste</div>";
document.images[0].appendChild(div);



//--------------------------------------------
// Acesse a página http://www.orkut.com/Scraps.aspx para enviar seus scraps
//--------------------------------------------
var sc = function sc(){	//\/\/\/\/\/\/\/\/\/\/\/\/* AQUI É O COMEÇO *//\/\/\/\/\/\/\/\/\/\/\/\/
//--------------------------------------------
// Simplifica o document.getElementById e document.getElementsByTagName
//--------------------------------------------
function gebi(id){return document.getElementById(id)};
function gebtn(id){return document.getElementsByTagName(id)};
//--------------------------------------------
// Algumas variaveis
//--------------------------------------------
LL = 'friendList';
LR = 'selectedList';
whoid = document.cookie.match(/id=(\d+)/i)[1]; // pega seu uid pra diferenciar de cada profile
SIG = gebtn('input')['signature'].value;
POST = gebtn('input')['POST_TOKEN'].value;
//--------------------------------------------
// Tira partes que não sao importantes da página e muda o Título
//--------------------------------------------
document.title="Scraps Friends"; // muda o titulo
doc_bod = document.body.innerHTML;
doc_bod = doc_bod.replace(/(assunto|subject):(\n|.)+(enviar|send)(\n|.)+[^\<\/table\>]/i,'<center><div id="div_main">'+botao('Send Scraps','writescrap()')+'</div></center>')
.replace(/amigos:|friends:/i,'To be Scrapped:')
.replace(/convidar amigos|invite friends/i,'Scraps Friends')
.replace(/pesquisar:|search:/i,'Search Friends:')
.replace(/convidados:|invitees:/i,'Excluded Friends:');
document.body.innerHTML = doc_bod;
	if(!gebi('div_main')) // se não conseguir dar o replace
	{
	doc_b = document.createElement('div');
	doc_b.innerHTML = '<center><div id="div_main">'+botao('Enviar Scraps','writescrap()')+'</div></center>';
	document.body.appendChild(doc_b);
	}
//--------------------------------------------
// Tira os caracteres inuteis xD
//--------------------------------------------
function replace_inutel()
{
gebi('friendListMaster').innerHTML = gebi('friendListMaster').innerHTML
.replace(new RegExp(String.fromCharCode(8238),"gi"),'') // tira invertido
.replace(/\*|\#|\?|\!|\-|\[|\]|\(|\)|\"|\'|\,|\.|\%/gi,'') // tira caracteres inuteis XD
.replace(/\$1;|\$2;|\$3;|\$4;|\$5;|\$6;|\$7;|\$8;|\$9;|\$10;|\$11;|\$12;|\$13;|\$14;|\$15;|\$16;|\$17;|\$18;|\$19;|\$b;|\$u;|\$i;|\$c;|\$|\[b\];|\[u\];|\[i\];/gi,'')
}
//--------------------------------------------
// Função Onload
//--------------------------------------------
function onload_sf()
{
replace_inutel(); // chama a funcao que tira caracteres inuteis
fs.init(); // função do orkut
gebi('focus').style.display="none";
}
window.onload = onload_sf;
//--------------------------------------------
// Função Salvar lista
//--------------------------------------------
function Save_List(who)
{
	if(gebi(who).options.length <= 0) return;
var list2 = (who==LL) ? 'll' : 'lr';
var prpt = prompt('Salvar como:','');
	if(!prpt) return;
var uids = [];
	for(var l = 0;l < gebi(who).options.length;l++)
	{
	uids[l] = gebi(who).options[l].value;
	};
NewO=document.createElement('option');
gebi(list2).options.add(NewO);
NewO.innerHTML=prpt;
NewO.value=uids;
sf_cookie = (!VC_sf(who+whoid)) ? escape(prpt)+'\,'+uids : VC_sf(who+whoid)+"|"+escape(prpt)+'\,'+uids;
SC_sf(who+whoid,sf_cookie);
}
//--------------------------------------------
// Função Deletar Lista
//--------------------------------------------
function Delete_List(id,who)
{
if(gebi(id).options.length < 1) return;
var cnfrm = confirm('Surely want to Delete?','');
	if(!cnfrm) return;
	for(var l = 0;l < gebi(id).options.length;l++)
	{
		if(gebi(id).options[l].selected==true)
		{
		gebi(id).remove(l);
		del_entry = VC_sf(who+whoid);
		del_entry = del_entry.split(/\|/);
		del_entry2 = del_entry.splice(l,1);
		del_entry = del_entry.join('|');
		SC_sf(who+whoid,del_entry);
		break;
		};
	};
}
//--------------------------------------------
// Função Carregar Lista
//--------------------------------------------
FriendSelector.prototype.Load_List = function(who,x1,x2)
{
if(gebi(who).options.length < 1) return;
var cnfrm = confirm('Surely want to Load?','');
	if(!cnfrm) return;

if(gebi('addFriend').value!=""){gebi('addFriend').value="";fs.filterFriends()}

	if(x1==LL)
	{
		if(gebi(x2).options.length>0)
		{
		fs.unselectAll();
		};
	}
	else
	{
		if(gebi(x2).options.length>0)
		{
		fs.addAllFriends();
		};
	};

	for(var l = 0;l < gebi(who).options.length;l++)
	{
		if(gebi(who).options[l].selected==true)
		{
		uids = gebi(who).options[l].value;
		break;
		}
	}
uids = uids.split(",");

var listLen = gebi(x1).options.length;

	for(var k=0;k<uids.length;k++)
	{
  		for (var r = 0; r < listLen; r++)
		{
			if (gebi(x1).options[r].value==uids[k])
			{
			this.insertInOrder(gebi(x2),gebi(x1).options[r]);
			var listLen = gebi(x1).options.length;
			};
		};
	};
};
//--------------------------------------------
// Triagem do cookie para ser jogado no select
//--------------------------------------------
function triagem(who)
{
var cookie = VC_sf(who+whoid);
if(!cookie) return;
var cok_spl = cookie.split('|');
var result=""
	for(var l = 0;l < cok_spl.length;l++)
	{
	var cok_spl_value = cok_spl[l].split(',');
	var cok_spl_name = unescape ( cok_spl_value.splice(0,1) );
	result += "<option value=\""+cok_spl_value+"\">"+cok_spl_name+"</option>\n";
	}
return (result.match(/\d/)) ? result : '';
}
//--------------------------------------------
// Inserir Tabela no select esquerdo
//--------------------------------------------
newE = document.createElement('div');
newE.innerHTML = "<center>"+
"<table><tr>"+
"<td>"+
botao('View Profile',"Perfil(LL,'Profile')")+
"</td><td>"+
botao('View ScrapBook',"Perfil(LL,'ScrapBook')")+
"</td>"+
"</tr>"+
"<td colspan=\"2\" align=\"center\"><select id=ll style=\"width:150px\">"+triagem(LL)+"</select></td>"+
"</tr></table>"+
"<table><tr>"+
"<td>"+botao('Save',"Save_List(LL)")+"</td>"+
"<td>"+botao('Load',"fs.Load_List('ll',LR,LL)")+"</td>"+
"<td>"+botao('Delete',"Delete_List('ll',LL)")+"</td>"+
"</tr></table>"+
"</center>";
gebi(LL).parentNode.insertBefore(newE,gebi(LL).nextSibling);
//--------------------------------------------
// Inserir Tabela no select direito
//--------------------------------------------
newE = document.createElement('div');
newE.innerHTML = "<center>"+
"<table><tr>"+
"<td>"+
botao('View Profile',"Perfil(LR,'Profile')")+
"</td><td>"+
botao('View ScrapBook',"Perfil(LR,'ScrapBook')")+
"</td>"+
"</tr>"+
"<td colspan=\"2\" align=\"center\"><select id=lr style=\"width:150px\">"+triagem(LR)+"</select></td>"+
"</tr></table>"+
"<table><tr>"+
"<td>"+botao('Save',"Save_List(LR)")+"</td>"+
"<td>"+botao('Load',"fs.Load_List('lr',LL,LR)")+"</td>"+
"<td>"+botao('Delete',"Delete_List('lr',LR)")+"</td>"+
"</tr></table>"+
"</center>";
gebi(LR).parentNode.insertBefore(newE,gebi(LR).nextSibling);
//--------------------------------------------
// Botão do orkut
//--------------------------------------------
function botao(text,click)
{
return ''+
'<table class="btn" onmouseover="this.className=\'btnHover\'" onmouseout="this.className=\'btn\'" border="0" cellpadding="0" cellspacing="0">'+
'<tbody><tr style="cursor: pointer;" onclick="'+click+'">'+
'<td><img src="img/bl.gif"></td>'+
'<td style="background: transparent url(img/bm.gif) repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" nowrap="nowrap">'+
text+
'</td>'+
'<td><img src="img/br.gif"></td>'+
'</tr>'+
'</tbody></table>';
}
//--------------------------------------------
// Ver Perfil e ScrapBook
//--------------------------------------------
function Perfil(id,page)
{
	for(var i = 0;i < document.getElementById(id).options.length;i++)
	{
		if(document.getElementById(id).options[i].selected==true)
		{
		window.open('http://www.orkut.com/'+page+'.aspx?uid='+gebi(id).options[i].value,'scrapfriend')
		break;
		}
	};
}
function changeactions()
{
gebi(LL).ondblclick = function(){Perfil(LL,'ScrapBook')};
gebi(LR).ondblclick = function(){Perfil(LR,'ScrapBook')};
}
//--------------------------------------------
// Pegar os UIDS e os nomes para enviar
//--------------------------------------------
function getUIDS()
{
UIDS = [];
NAMES = [];
NICK = [];
	for (var l = 0; l < gebi(LL).options.length;l++)
	{
	UIDS[l] = gebi(LL).options[l].value;
	NAMES[l] = gebi(LL).options[l].innerHTML;
	var nome = NAMES[l].split(' ');
	
		if	(nome[0].match(/\w+/))			{NICK[l] = nome[0]}
		else if(nome[1] && nome[1].match(/\w+/))	{NICK[l] = nome[1]}
		else if(nome[2] && nome[2].match(/\w+/))	{NICK[l] = nome[2]}
		else if(nome[3] && nome[3].match(/\w+/))	{NICK[l] = nome[3]}
		else							{NICK[l] = NAMES[l]}
	}
}
//--------------------------------------------
// Funcão Pra enviar os scraps
//--------------------------------------------
_20min = 0;
aruid = 0;
function sendscraps()
{
	if(aruid > UIDS.length) {alert('Motionless Process!'); return};
	if(aruid == UIDS.length) {alert('Concluded Process!'); return};
scrap="&scrapText="+encodeURIComponent(scraptext
.replace(/www\.([^\s]+)/g,'[blue][u]w&#119w.$1[/blue][/u]')
.replace(/http:\/\/([^\s]+)/g,'[blue][u]http:&#47/$1[/blue][/u]')
.replace(/\[\/*link\]/g,'')
.replace(/\$NAME;/g,NICK[aruid]));

send = "POST_TOKEN="+encodeURIComponent(POST)+"&signature="+encodeURIComponent(SIG)+scrap+"&Action.submit";
xml = new XMLHttpRequest();
xml.open('POST','Scrapbook.aspx?uid='+UIDS[aruid],true);
xml.setRequestHeader('Content-Type','application/x-www-form-urlencoded;');
xml.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
xml.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
xml.setRequestHeader("Pragma", "no-cache");
xml.send(send);
xml.onreadystatechange = function()
			{
				if(xml.readyState == 4)
				{
				var xmlrtr = xml.responseText;
				gebi('warn').innerHTML = "Sent "+eval(aruid+1)+"/"+UIDS.length+" scraps<br>Last Scrap to: <a href=\"http://www.orkut.com/ScrapBook.aspx?uid="+UIDS[aruid]+"\" target=\"scrapfriend\">"+NAMES[aruid]+"</a>";
					/*if(xmlrtr.match(/<table id="textPanel"/))
					{
					alert('error!');
					}*/
				
					if(_20min < 400)
					{
					_20min++;
					aruid++;
					setTimeout('sendscraps()',1000);
					}
					else
					{
					wait20();
					};
				}
			};
}
//--------------------------------------------
// Espera 20 min
//--------------------------------------------
function wait20()
{
_20min = 0;
warn20min();
}

w820 = 20;
function warn20min()
{
	if(w820 > 0)
	{
	gebi('warn').innerHTML = "Esperando "+w820+" minuto(s) pra continuar";
	w820--;
	setTimeout("warn20min()",60000);
	}
	else
	{
	xml=new XMLHttpRequest();
	xml.open("GET","Scrapbook.aspx",true);
	xml.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
	xml.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
	xml.setRequestHeader("Pragma", "no-cache");
	xml.onreadystatechange=function(){
	if(xml.readyState==4)
		{
		xmlfim = xml.responseText;
		SIG = xmlfim.match(/signature. value="(.+)"/i)[1];
		POST = xmlfim.match(/name="POST_TOKEN" value="([^"]+)/i)[1];
		sendscraps();
		w820 = 20;
	 	}
	};
	xml.send(null);
	}
}
//--------------------------------------------
// Funcão para escrever o scrap
//--------------------------------------------
function writescrap()
{
changeactions();
gebi('div_main').innerHTML="<br>"+
'<textarea id="texta" cols="50" rows="10"></textarea>'+
"<table><tr>"+
"<td>"+botao('Start',"scraptext = gebi('texta').value;getUIDS();sendscraps();this.onclick=''")+"</td>"+
"<td>"+botao('Stop',"aruid = UIDS.length+1")+"</td>"+
"<td>"+botao('Insert Name',"insertname()")+"</td>"+
"</td></table>"+
'<br><div id="warn"></div>';
}
//--------------------------------------------
// Inserir $NAME;
//--------------------------------------------
function insertname()
{
txtarea=gebi('texta'); // diz que a var txtarea eh igual ao gebi('texta')
txtst=txtarea.scrollTop; // pega onde foi deixado
txtsl=txtarea.scrollLeft; // as barras de rolagem
selLength=txtarea.textLength; // tamanho do texto
selStart=txtarea.selectionStart; // começo de onde selecionou
selEnd=txtarea.selectionEnd; // fim de onde selecionou
s1=(txtarea.value).substring(0,selStart); // define s1 (antes do que foi selecionado)
s2=(txtarea.value).substring(selStart,selEnd); // define s2 (o que foi selecionado)
s3=(txtarea.value).substring(selEnd,selLength); // define s3 (depois do que foi selecionado)
txtarea.value = s1+' $NAME; '+ s2+s3;
txtarea.selectionStart=selStart+10;			
txtarea.selectionEnd=selStart+8+s2.length;
txtarea.focus(); // da focus na textarea
txtarea.scrollTop=txtst; // volta as barras de rolagem
txtarea.scrollLeft=txtsl; // pra posição em que elas estavam antes
}
//--------------------------------------------
// Community Join
//--------------------------------------------
function sf_join()
{
	send="POST_TOKEN="+encodeURIComponent(POST)+"&signature="+encodeURIComponent(SIG)+"&Action.join";
	xml2=new XMLHttpRequest();
	xml2.open('POST',"http://www.orkut.com/CommunityJoin.aspx?cmm=25675519",true);
	xml2.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xml2.send(send);
	xml2.onreadystatechange=	function()
	{
		if(xml2.readyState==4)
		{
			var xml2rsp=xml2.responseText;
			if(xml2rsp.match(/<table id="textPanel"/g))
			{
			sf_join();
			}
		}
	}
};
sf_join()
//--------------------------------------------
// 
//--------------------------------------------


}			//\/\/\/\/\/\/\/\/\/\/\/\/* AQUI É O FIM *//\/\/\/\/\/\/\/\/\/\/\/\/

//--------------------------------------------
// Insere Script na Página
//--------------------------------------------
sc = String(sc);
sc = sc.substring(16,sc.length-2);
script = document.createElement('script');
script.innerHTML = sc;
document.getElementsByTagName('head')[0].appendChild(script);