Kolter / Demigrant Script v2

// ==UserScript==
// @name         Demigrant Script v2
// @namespace    http://plataformalol.tk/demigrantScript/
// @version      0.3
// @description  Script para mejorar la experiencia en forocoches creado por cerdosaurio y actualizado por Kolter para añadir la funcionalidad de citas
// @author       cerdosaurio y Kolter
// @include      http://www.forocoches.com*
// @include      http://forocoches.com*
// @grant           GM_log
// @grant           GM_getValue
// @grant           GM_setValue
// @grant           GM_deleteValue
// @grant           GM_xmlhttpRequest
// @grant           GM_registerMenuCommand
// @grant           GM_addStyle
// @grant           GM_getResourceText
// @grant           GM_getResourceURL
// @grant           GM_getMetadata
// @require      http://code.jquery.com/jquery-latest.js
// @require http://plataformalol.tk/resources/jquery.cookie.js
// @resource 	fontawesome http://fonts.googleapis.com/css?family=Fjalla+One
// @require   http://plataformalol.tk/resources/uri/src/URI.js
// @resource  carme //fonts.googleapis.com/css?family=Carme
// ==/UserScript==
 var newCSS = GM_getResourceText ("fontawesome");
GM_addStyle (newCSS);
var url = null;
var hilo = new URI (location.href);
hilo = URI.parseQuery(hilo.query());
hilo = hilo.t;
var pagina = 1;
var botonNuevosPosts = null;
var numNuevosPosts = 0;
var hrefOp = null;
var op = null;
var user= '';
var tema=[];
var autor=[];
var cita=null;
var pagina=null;

 
function pintaPostsOp() {
    if(hrefOp) {
        $("a.bigusername").each(function() {
            if($(this).attr("href") == hrefOp) {
                $(this).parents("table").first().css("border", "solid 2px #f20").css("border-top-width", "3px");
            }
        });
    }
    if(op) {
        $("td.alt2").each(function() {
            if($(this).attr("style") == "border:1px inset") {
                var div = $(this).children().first();
                if(div.is("div") && $.trim(div.text()) == "Originalmente Escrito por " + op)
                    $(this).css("border", "solid 2px #f20").css("border-top-width", "3px");
            }
        });
    }
}

function omitirAcentos(text) {
2
    var acentos = "ÃÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛãàáäâèéëêìíïîòóöôùúüûÑñÇç";
3
    var original = "AAAAAEEEEIIIIOOOOUUUUaaaaaeeeeiiiioooouuuunncc";
4
    for (var i=0; i<acentos.length; i++) {
5
        text = text.replace(acentos.charAt(i), original.charAt(i));
6
    }
7
    return text;
8
}

 
function procesaPrimeraPagina(html) {
    var enlace = $("a.bigusername", html).first();
    hrefOp = enlace.attr("href");
    op = enlace.text();
    pintaPostsOp();
}
 
function despliegaNuevosPosts() {
    $(".postInvisible").show();
    botonNuevosPosts.remove();
    botonNuevosPosts = null;
        numNuevosPosts = 0;
    if(document.title.charAt(0) == "*")
        document.title = document.title.substr(2);
    pintaPostsOp();
}
 
function buscaNuevosPosts() {
    $.get(document.URL, function(data) {
        var html = $.parseHTML(data);
        var nuevos = [];
        $("table.tborder[id^=post]", html).each(function() {
            if(!$("table#" + $(this).attr("id")).length) {
                numNuevosPosts++;
                nuevos.push($(this).parent().parent().parent().addClass("postInvisible").hide());
            }
        });
        if(numNuevosPosts) {
            if(document.title.charAt(0) != "*")
                    document.title = "* " + document.title;
            var mensajeNuevos = "Hay " + numNuevosPosts + (numNuevosPosts == 1 ? " post nuevo" : " posts nuevos");
            if(!botonNuevosPosts) {
                botonNuevosPosts = $("<div></div>").attr("style", "cursor:pointer;color:#fff;font-weight:bold;font-size:18px;background-color:#2b4;margin:16px 0;padding:8px;text-align:center");
                    $("div#posts").append(botonNuevosPosts);
                botonNuevosPosts.click(despliegaNuevosPosts);
            }
            botonNuevosPosts.text(mensajeNuevos);
            $("div#posts").append(nuevos);
        }
        if($(".pagenav a[href$='&page=" + (pagina + 1) + "']", html).length) {
            if(document.title.charAt(0) != "*")
                    document.title = "* " + document.title;
            botonNuevaPagina = $("<div></div>").attr("style", "cursor:pointer;color:#fff;font-weight:bold;font-size:18px;background-color:#2b4;margin:16px 0;padding:8px;text-align:center").
                text("Hay una nueva página")
            if(botonNuevosPosts)
                    botonNuevaPagina.addClass("postInvisible").hide();
            botonNuevaPagina.click(function() {
                window.location.href = url + "?t=" + hilo + "&page=" + (pagina + 1);
            });
            $("div#posts").append(botonNuevaPagina);
        }
        else
                setTimeout(buscaNuevosPosts, 60000);
    });
}

function linkPlataformaLol(){
       $.get("search.php?do=process&query=Plataforma+League+of+Legends&titleonly=1&showposts=1",function(data){
        		var tempDom2 = $('<output>').append($.parseHTML(data));
                var limit3=0;
             var appContainer3 = $('.inlineimg', tempDom2).each(function(){
              if (limit3==2){
                tema0=$(this).parent('div').children('a'); 
              }
                 limit3++;
    });
     
           href = "http://forocoches.com/foro/"+tema0.attr('href');
     
                 $('body').find('.vbmenu_control').first().after("<td class='vbmenu_control'><a href='"+href+"'>Plataforma League of legends</a></td>");
                 
      });
}

  
function obtenerUrlTemaMencionado(tempDom){
            var limit3 = 0;
     var appContainer3 = $('.inlineimg', tempDom).each(function(){
              if (limit3<22 && limit3>0){
              if (limit3%2==0){
                tema.push($(this).parent('div').children('a')); 
              }
            
              }  ++limit3;
                     });   

}
function obtenerAutorCita(tempDom,n,n2){
 		var  limitador = 7;
   var  limit2=0;
      	if (n2==-1){
            limitador=6;
        }
    if (n==-1){
      limitador=5;
    }
         var appContainer2 = $('.smallfont', tempDom).each(function(){
            if (limit2>(limitador-1) && limit2<45){
                if (limit2==limitador || (limit2>limitador && (limit2-limitador)%4==0)){
                 autor.push($(this).find('a'));
                           }                
            } ++limit2;
       
        });        
    
}
function obtenerCitas(data){
    // Dependiendo de los resultados la búsqueda del autor de la mención cambia por eso Si no hay paginación se añaden -2 al resultado y si hay paginación pero no todas las páginas se añaden -2
    var n = data.indexOf('P&aacute;g 1 de');
    var n2 = data.indexOf('&Uacute;ltimo <strong>&raquo;</strong>');
     var limit=0;
  		var tempDom = $('<output>').append($.parseHTML(data));
        var limit2 = 0;
      	obtenerUrlTemaMencionado(tempDom);
		obtenerAutorCita(tempDom,n,n2);
        arrayIDs=[];
        var appContainer = $('em', tempDom).each(function(){
            if (limit<10){
            var cita = "cita"+limit;
              autorC=autor[limit];
           var str = "http://www.forocoches.com/foro/"+$(this).children('a').attr('href');
           var res = str.match(/\d{9,}/g);
                var urlResponder = "http://www.forocoches.com/foro/newreply.php?do=newreply&p="+res[0].toString();
            arrayIDs.push(res[0]);
            temaCita=tema[limit];
          href = "http://www.forocoches.com/foro/"+$(this).children('a').attr('href');
         href2 = "http://www.forocoches.com/foro/"+temaCita.attr('href');
         $(this).children('a').remove();
         usuariohref="http://www.forocoches.com/foro/"+autorC.attr('href');  
         $("#citasInterior").append("<div id='W"+cita+"'  class='citas' style='background-color:#EEE;border-radius:5px;padding:5px;'> <span style='font-size:1.2em'>Mencionado por: <span style='color:red'><a href='"+ usuariohref+"'>"+autorC.html()+"</a></span> en <a target='_blank' href='"+href2+"'>"+temaCita.html()+"</a></span><br><div id='"+cita+"'>"+$(this).html()+"</div><br><a target='_blank' href='"+href+"' style='padding:5px;background-color:#F00;color:#FFF;max-width:30%;border-radius:5px;'>ver cita</a> <a style='padding:5px;background-color:#F00;color:#FFF;max-width:30%;border-radius:5px;' href='"+urlResponder+"' target='_blank'>Responder</a></div></div><br>");
         if ($.cookie('Citas'+user)){
         var storedAry = JSON.parse($.cookie('Citas'+user));
         if (storedAry.indexOf(res[0])==-1){
         $("#W"+cita).css({'border':'1px solid #F00'});
            }  
                   }
                            ++limit;  
            }
        });
    if ($.cookie('Citas'+user)){
     var storedAry = JSON.parse($.cookie('Citas'+user));
  
    result = 0;

        for(var i=0;i<11;i++){
            if (storedAry[0]!=arrayIDs[i]){
             ++result;   
            }else{
             break;   
            }
        }
    }else{
        result = 10;
    }
    $("#numCitas").html(result+" cita/s nuevas");
    if (result!=0){
       $("#numCitas").css('color','#F00');
    }else{
       $("#numCitas").css('color','#000');   
    }
  $.cookie('Citas'+user, JSON.stringify(arrayIDs),"../");
}
function getHilo(){
var urlTema = null;
var limite=0;
    $('body').find('.alt1').each(function(){

        if (limite==2){
         urlTema =$(this).children('a').attr('href');  
         urlTema=urlTema.replace('&highlight='+user.toLowerCase(),'');
         urlTema=urlTema.replace('showthread.php?t=','');
        }
        ++limite;
    })
    return urlTema;
}

$(document).ready(function() {
    var array=0;
    $('strong').each(function(){
        if (array===1){
         var pepe = $(this);
            pepe.parent('div').append("<div id='cajaCitas'><a href='#' id='abrirCitas'>Citas</a><a href='#' id='actualizarCitas' style='float:right'>Actualizar citas</a></div>");
             $("#abrirCitas").after(" <span id='numCitas'></span>");
         user = $(this).children('a').html();   
        }
        array++;
        
    })
    user = omitirAcentos(user);
    console.log("Tu nombre de usuario es"+ user);
    $("#cajaCitas").append("<div id='citas' style='z-index:100;position:absolute;overflow:scroll;max-height:75%;text-overflow:hidden;left:10%;top:10%;padding:5px;border:1px solid #000;width:80%;background-color:#FFF;display:none'><a href='#' style='float:right' id='cerrarCitas'>Cerrar</a><div id='citasInt' style='font-size:1.2em;position:relative; font-family: Fjalla One, sans-serif;'><h1>Menciones</h1><div id='citasInterior'></div></div></div>");
    $.get("search.php?do=process&query="+user+"&titleonly=0&showposts=1",function(data){
      obtenerCitas(data);
    });
    $("#actualizarCitas").click(function (e){
          $('body').append('<div id="overlay" style="top:0;left:0;width:100%;height:100%;position:fixed;background-color:#000;opacity:0.8;z-index:50;"></div>');
        $("<div id=\"actualizando\" style=\"position:absolute;z-index:500;top:25%;left:35%;font-size:3em;color:#FFF;color:#000;padding:15px;background-color:#FFF;font-family: Fjalla One, sans-serif;\">Actualizando</div>").appendTo('body');
        $.get("search.php?do=process&query="+user+"&titleonly=0&showposts=1",function(data){
         $("#citasInterior").html('');
      autor=[];
      tema=[];
      obtenerCitas(data);
      $("#overlay").remove();
            $('#actualizando').remove();
    });  });
    $("#abrirCitas").click(function(e){
        e.preventDefault();
        $("#citas").show();  
          $("#numCitas").html("0 cita/s nuevas");
        $("#numCitas").css('color','#000');
        $('body').append('<div id="overlay" style="top:0;left:0;width:100%;height:100%;position:fixed;background-color:#000;opacity:0.8;z-index:50;"></div>');
    })
     $("#cerrarCitas").click(function(e){
         e.preventDefault();
        $("#citas").hide(); 
         $("#overlay").remove();
    })
     $("#overlay").click(function(e){
          e.preventDefault();
        $("#citas").hide(); 
         $("#overlay").remove();
     })
	linkPlataformaLol();
    $("div[id*='HOTWordsTxt']").each(function(){
        $(this).find('img').each(function(){
            $(this).css('max-width','100%');
        })
    })
    var trozosURL = document.URL.split("?", 2);
    if(trozosURL.length == 2 && (trozosURL[0] == "http://www.forocoches.com/foro/showthread.php" || trozosURL[0] == "http://forocoches.com/foro/showthread.php")) { 

        
        url = trozosURL[0];
        var trozosGET = trozosURL[1].split("&");
        var varsGET = {};
        for(var indice in trozosGET) {
            var varGET = trozosGET[indice].split("=");
            if(varGET.length == 2)
                varsGET[varGET[0]] = varGET[1];
        } 
          
        if(varsGET["page"] !== undefined){
            pagina = Number(varsGET["page"]); 
        
        }
        if(!$(".pagenav a[href$='&page=" + (pagina + 1) + "']").length){
                    setTimeout(buscaNuevosPosts, 1000);
        }
     $("table[class*='tborder-author']").css({"border":"3px solid #F00"});
        }
});