// ==UserScript==
// @name           Niver Express
// @version	   1.5
// @description    Envie scraps para os aniversariantes do dia direto da Pagina inicial do Orkut!
// @author	   Gui Del Frate
// @include        *orkut.com/Home.aspx*
// ==/UserScript==

////					      \\-//					     \\\\
/* 		  Niver Express		       \-/						\
 *						-						*
 *   O Niver express e um script criado para 	-    (Ou seja, se 2 ou mais pessoas usarem o	*
 *   Greasemonkey, que  adiciona  na  pagina 	-    mesmo computador, cada uma delas tera o	*
 *   inicial  do  Orkut a  opcao  de  mandar 	-    seu  proprio  registro  de scraps, para	*
 *   scraps  para o(s) aniversariante(s)  do 	-    maior privacidade.)			*
 *   dia direto da sua Home.			-						*
 *						-    O  Niver  Express  tambem avisa  quando	*
 *   O  Niver  Express  ainda salva o ultimo	-    ha algum  erro  no Orkut, e eh possivel	*
 *   scrap  enviado  pela  Home, e voce pode	-    optar por saber  mais sobre a origem do	*
 *   aproveitar   esse   texto   rapidamente	-    erro.					*
 *   clicando em "Preencher".  O registro de	-						*		
 *   scrap  enviado eh feito individualmente 	-    Criado por Gui Del Frate			*
 *   em cada conta do Orkut.			-    [ Esse codigo pode ser alterado  	  ]	*
 *						-    [ livremente, mas por favor,	  ]	*
 *   						-    [ mantenha os creditos ;) 		  ]	*
 *						-						*
 */ /////				 \\\\\ \-/ /////				 \\\\\ \\

 /////    /////
 //  OPCOES  // 
 ////////////////////////////////////////////////////////////------////////////
 //									     //
 // Deseja exibir a foto dos aniversariantes do dia pequena ou grande?       //
 //						[ Opcoes:		 ]   //
 //						[ * Pequena     * Grande ]   //
 //						[ PADRAO: grande	 ]   //
 //	------------------------					     //	
 	resposta = "grande";						     //
 //	------------------------					     //
 //									     //
 ////////////////////////////////////////////////////////////------////////////


function getCookie(Name) {
  var search = Name + "="
  var returnvalue = "";
  if (document.cookie.length > 0) {
    offset = document.cookie.indexOf(search)
    // if cookie exists
    if (offset != -1) { 
      offset += search.length
      // set index of beginning of value
      end = document.cookie.indexOf(";", offset);
      // set index of end of cookie value
      if (end == -1) end = document.cookie.length;
      returnvalue=unescape(document.cookie.substring(offset, end))
      }
   }
  return returnvalue;
}


bod = document.body.innerHTML;

//PEGAR O EMAIL DE LOGIN DA PESSOA:

userIDA = bod.match(/<b>.+?<\/b>/gi);

if(userIDA) {
	userIDA[0] = userIDA[0].replace(/<b>/gi,"");
	userIDA[0] = userIDA[0].replace(/<\/b>/gi,"");
	userIDA[0] = userIDA[0].replace(/[@]/gi,"x");
	userIDA[0] = userIDA[0].replace(/[.]/gi,"x");

	userID = userIDA[0];
}

GM_xmlhttpRequest({
	method:"GET",
	url:"http://www.orkut.com/Scrapbook.aspx",
	onload:function(scrappp) {
		
		scrapbookHTML = scrappp.responseText;

		postt = scrapbookHTML.match(/POST_TOKEN" value=".+?"/gi);
		signat = scrapbookHTML.match(/signature" value=".+?"/gi);
					
		if(postt) {
			postt[0] = postt[0].replace(/POST_TOKEN" value="/gi,"");
			postt[0] = postt[0].replace(/"/gi,"");
			POST_TOKEN = postt[0];
		}
		if(signat) {
			signat[0] = signat[0].replace(/signature" value="/gi,"");
			signat[0] = signat[0].replace(/"/gi,"");
			signature = signat[0];
		}
		addScrapNiver();
	}
});
		
function addScrapNiver() {

if(!POST_TOKEN || !signature) {

	linkRecados = "<a href=\\'http://www.orkut.com/Scrapbook.aspx\\'>Página de Recados</a>";
	linkHome = "<a href=\\'http://www.orkut.com/Home.aspx\\'>Página Inicial</a>";
	
	textoAjuda  = "<b>Ajuda do Niver Express</b> > <b>Erro do Orkut</b>";
	textoAjuda += "<br>&nbsp;<br>";
	textoAjuda += "O <b>Orkut</b> tem um sistema de verifica&ccedil;&atilde;o de usu&aacute;rio para ";
	textoAjuda += "envio de scraps, postagem em f&oacute;runs, envio de mensagens, testimoniais, e ";
	textoAjuda += "todos os servi&ccedil;os que precisam de alguma identifica&ccedil;&atilde;o sua. ";
	textoAjuda += "Cada usu&aacute;rio possui dois c&oacute;digos pessoais ocultos que informam para o ";
	textoAjuda += "<b>Orkut</b> quem est&aacute; enviando o scrap. Estes c&oacute;digos s&atilde;o ";
	textoAjuda += "trocados o tempo todo. <br>&nbsp;<br>Para o <b>Niver Express</b> funcionar ";
	textoAjuda += "corretamente, &eacute; necess&aacute;rio buscar os c&oacute;digos ";
	textoAjuda += "do usu&aacute;rio logado no Orkut. De outra forma, o <b>Niver Express</b> ";
	textoAjuda += "n&atilde;o conseguiria enviar scraps direto da "+linkHome+".";
	textoAjuda += "<br>&nbsp;<br>Esses c&oacute;digos s&atilde;o buscados na  ";
	textoAjuda += "sua "+linkRecados+". O erro atual aconteceu pois houve ";
	textoAjuda += "alguma falha no servidor do Orkut que impediu o <b>Niver Express</b> de acessar ";
	textoAjuda += "a sua "+linkRecados+". Se voc&ecirc; tamb&eacute;m tentar entrar, ";
	textoAjuda += "&eacute; prov&aacute;vel que encontre a mesma dificuldade.";
	textoAjuda += "<br>&nbsp;<br>O <b>Niver Express</b> voltar&aacute; a funcionar corretamente ";
	textoAjuda += "assim que o Orkut tamb&eacute;m voltar."

	erroL = bod.match(/próximos aniversários/gi);
	erroLB = bod.match(/upcoming birthdays/gi);
	if(erroL) {
		erroN = erroL[0]+"</b></td></tr></table><table width=\"100%\" class=\"T\" cellpadding=\"2\" cellspacing=\"0\" border=\"0\"><tr><td class=\"S\" align=center><b><font color=\"#FF3333\">Erro no servidor do Orkut. N&atilde;o foi poss&iacute;vel executar o Niver Express</font></b> ";
		erroN += "(<a href=\"javascript:;\" onClick=\"ajudaNiver=document.getElementsByName(\'divAjudaNiver\')[0]; if(ajudaNiver.innerHTML==\'\'){this.innerHTML=\'Fechar ajuda\'; ajudaNiver.innerHTML=\'"+textoAjuda+"\';}else{this.innerHTML=\'Por qu&ecirc;?\'; ajudaNiver.innerHTML=\'\';}\">Por qu&ecirc;?</a>)";
		erroN += "</td></tr></table><table cellspacing=0 cellpadding=2 class=T width=100%><tr><td></td><td><div name=\"divAjudaNiver\"></div>";
		bod = bod.replace(erroL[0],erroN);
	} else if(erroLB) {
		erroN = erroL[0]+"</b></td></tr></table><table width=\"100%\" class=\"T\" cellpadding=\"2\" cellspacing=\"0\" border=\"0\"><tr><td class=\"S\" align=center><b><font color=\"#FF3333\">Erro no servidor do Orkut. N&atilde;o foi poss&iacute;vel executar o Niver Express</font></b> ";
		erroN += "(<a href=\"javascript:;\" onClick=\"document.getElementsByName(\'divAjudaNiver\')[0].innerHTML=\'"+textoAjuda+"\'\">Por quê?</a>)";
		erroN += "</td></tr></table><table cellspacing=0 cellpadding=2 class=T width=100%><tr><td></td><td><div name=\"divAjudaNiver\"></div>";
		bod = bod.replace(erroL[0],erroN);
	}
	document.body.innerHTML = bod;
	return;
}

niversFotoB = new Array();

niversHoje = bod.match(/small.+?\d+.*\n.+?<td.+?>(<\/a>)?<\/td>\n.{1,3}<td.+?>\n.{1,3}<b><a href=".+?">.+?<\/a>\n.{1,3}.+?\n.{1,3}<\/b>/gi);

uidA = new Array();
uidB = new Array();
uidC = new Array();
uid = new Array();
niversHojeB = new Array();
novoForm = new Array();

scrapImg = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAkUExURea+OczJya6GC6KrqtekbfG/hYpzVSgeE2JSTrmwrf///////5RZJcYAAAAMdFJOU///////////////ABLfzs4AAAB0SURBVHjaZNBLEoMwDANQB2xJpve/bw205IPGzuJNFkrs845dp9T3tkyp788O6fjvY0MWA1dLcbUkF2sQMFuV8HBosHZR4WBQhHtgsEbCIyYTQdU9ddsJqx4S8zHRqsmp/W3crKaw5ZnbbFMN2/ync74CDADAUQyXIUQeiwAAAABJRU5ErkJggg==";
perfilImg = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAYUExURZiEK+DAN+nPYmiQxjVss2VmZfPz8////1wVZOkAAAAIdFJOU/////////8A3oO9WQAAAFtJREFUeNqU0EkOACEIRFGm0vvfuEEiEnvlX5mXigto/qM3E68bgCBmrNKGpPHwmjEvw7EAIrrNCd1GSMzaf/7aq2Oa9V2KmZZJQlQ2i0wFZbat3UAPPNzvE2AAmSoHhHAH/wAAAAAASUVORK5CYII=";

if(niversHoje) {
	for(i=0; i<niversHoje.length; i++) {
		resposta = resposta.toLowerCase();

		if(resposta=="grande" || resposta=="grandes") {
			niversHojeB[i] = niversHoje[i].replace(/\/small\//gi,"/medium/");
			respostaB = "medium";
		} else {
			niversHojeB[i] = niversHoje[i];
			respostaB = "small";
		}

		uid[i] = niversHoje[i].match(/\d+/)[0];

		novoForm[i] = "<a href=\"javascript:;\" onClick=\"n=25+"+i+"; tam='"+respostaB+"'; campoNiver=document.getElementById('niverExpress"+i+"'); if(campoNiver.style.visibility == 'visible') {campoNiver.style.visibility='hidden'; this.innerHTML='Mostrar campo'; campoNiver.parentNode.parentNode.images[0].src = campoNiver.parentNode.parentNode.images[0].src.replace(/medium/gi,'small');} else{ campoNiver.style.visibility='visible'; this.innerHTML='Esconder campo'; campoNiver.parentNode.parentNode.images[0].src=campoNiver.parentNode.parentNode.images[0].src.replace(/small/gi,tam);} alert(niverCampo.parentNode.parentNode.images[0].src);\">Esconder campo</a>";
		novoForm[i] +=  "<br><div id=\"niverExpress"+i+"\"><p>";
		novoForm[i] += "<form method=\"post\" name=\"ident"+i+"\" action=\"/Scrapbook.aspx?uid="+uid[i]+"\" autocomplete=\"off\">";
		novoForm[i] += "<input type=\"hidden\" name=\"POST_TOKEN\" value=\""+POST_TOKEN+"\">";
		novoForm[i] += "<input type=\"hidden\" name=\"signature\" value=\""+signature+"\">";
		novoForm[i] += "<font size=\"1\">";
		novoForm[i] += "<a href=\"Profile.aspx?uid="+uid[i]+"\"><img src=\""+perfilImg+"\" align=\"absmiddle\" border=\"0\"></a> <a href=\"Profile.aspx?uid="+uid[i]+"\">Ver <b>Perfil</b></a> | ";
		novoForm[i] += "<a href=\"Scrapbook.aspx?uid="+uid[i]+"\"><img src=\""+scrapImg+"\" align=\"absmiddle\" border=\"0\"></a> <a href=\"Scrapbook.aspx?uid="+uid[i]+"\">Ler <b>Scraps</b></a> | ";
		novoForm[i] += "<b><span name=\"contadorNiver"+i+"\">1024</span></b> restantes";
		novoForm[i] += "</font>";

		ultimoScrap = getCookie(userID+"ultimo2");
		if(ultimoScrap) {
			ultimoScrap =  ultimoScrap.replace(/zxcvbnm/gi,"\\n");

			ultimoNiverLink =  " &nbsp;&nbsp;&nbsp;&nbsp;";
			ultimoNiverLink += "<a href=\"javascript:;\" title=\"Preencher com o ultimo scrap de aniversario enviado\" ";
			ultimoNiverLink += "onClick=\"document.getElementsByTagName(\'textarea\')["+i+"].value = \'"+ultimoScrap+"\'; document.getElementsByName(\'contadorNiver"+i+"\')[0].innerHTML=1024-document.getElementsByTagName(\'textarea\')["+i+"].value.length;\">&Uacute;ltimo scrap</a>";
			novoForm[i] += ultimoNiverLink;
		}

		novoForm[i] += "<br>";
		novoForm[i] += "<textarea id=\"scrapText\" name=\"scrapText\" cols=\"42\" rows=\"3\" ";
		novoForm[i] += "onKeyUp=\"document.getElementsByName(\'contadorNiver"+i+"\')[0].innerHTML=1024-this.value.length;";
		novoForm[i] += "var mlength=1024; if(this.getAttribute && this.value.length>mlength) {this.value=this.value.substring(0,mlength);}\">";
		novoForm[i] += "</textarea>";

		dataND = new Date();
		dataNE = new Date((dataND.getMonth()+1) + "/" + dataND.getDate() + "/" + (dataND.getYear()+1900) + ",1440:00:00");
		dataNF = dataNE.toGMTString();

		novoForm[i] += "<input type=\"image\" name=\"Action.submit\" alt=\"enviar\" title=\"enviar\" border=\"0\"  src=\"http://img211.imageshack.us/img211/9241/nbsubmitjp7.gif\" onmouseover=\"this.src=\'http://img211.imageshack.us/img211/6798/obsubmitbg9.gif\';\" onmouseout=\"this.src=\'http://img211.imageshack.us/img211/9241/nbsubmitjp7.gif\';\" onload=\"var obtn_submit=new Image(); obtn_submit.src=\'http://img211.imageshack.us/img211/6798/obsubmitbg9.gif\';\" onClick=\"if(document.getElementsByTagName(\'textarea\')["+i+"].value == \'\' || document.getElementsByTagName(\'textarea\')["+i+"].value == \' \' || document.getElementsByTagName(\'textarea\')["+i+"].value == \'  \') {alert(\'Por favor, digite um scrap antes de enviar\'); return false;} else { areaQuebrada=document.getElementsByTagName(\'textarea\')["+i+"].value.replace(/\\n/gi,'zxcvbnm'); document.cookie=\'"+userID+"ultimo2=\'+escape(areaQuebrada)+\';expires="+dataNF+"\';}\">";
		novoForm[i] += "</form></div>";

		niversHojeB[i] = niversHojeB[i] + novoForm[i]; 
		bod = bod.replace(niversHoje[i],niversHojeB[i]);

	}
	document.body.innerHTML = bod;
}

}