Kai / JVCMaster

// ==UserScript==
// @name        JVCMaster
// @namespace   Cedas
// @description Ajout de fonctionnalités à Jeuxvideo.com
// @include     http://www.jeuxvideo.com/*
// @include     http://*.forumjv.com/*
// @run-at      document-end
// @version     4.5.18
// ==/UserScript==

function JVCMaster(){
    var _ = this;
    _.version = "4.5.18";
    _.log = function(msg){ console.log(msg); }

    // localStorage
    _.LS_get = function(key){ return localStorage.getItem("JVCMaster_" + key); }
    _.LS_set = function(key, value){ localStorage.setItem("JVCMaster_" + key, value); }
    _.LS_rm  = function(key){        localStorage.removeItem("JVCMaster_" + key); }
    
    _.patternButton = "_BADGE:RANK__BTN:CITATION__BTN:HIDDENPOST__BTN:HIDDENPOSTSPSEUDO__BTN:MP_";

    // Un $("li.pseudo") aurait suffit, mais sur les MP, la zone était présente à côté de "Ce pseudo vient de quitter la conversation."
    _.pseudoArea = $(".msg").parent().find("li span:last-child:not(.generic), div[id^=message] ul").parent().find(".pseudo");

    _.activatedExtensions = JSON.parse(_.LS_get("activatedExtensions") || "[]");

    _.style = null;

    _.insertCSS = function(css){
        if(_.style)
            _.style.get(0).innerHTML += css;
        else
            _.style = $("<style>", { html : css}).appendTo("head");
    }

    _.setButtonsArea = function(){
        $("<span>", {
            "class" : "JVCMaster_patternButton"
          , html    : _.patternButton.replace(/_(BTN|BADGE):([a-zA-Z]*)_/g, "<span class='JVCMaster_$1_$2'>").replace(/'><span/g, "'></span><span")
        }).appendTo(_.pseudoArea);
    }

    _.setButton = function(type, btn, onMp){
        onMp = (onMp === undefined ? true : false);

        if(!onMp)
            $("div[id^=message] .JVCMaster_" + type).append(btn);
        else
            $(".JVCMaster_" + type).append(btn);
    }

    _.onMp = function(){ return window.location.href.match(/^http:\/\/www\.jeuxvideo\.com\/messages-prives\/message.php\?idd=[0-9]*/); }
    
    _.sortObject = function(e){var c={},d,b=[];for(d in e){if(e.hasOwnProperty(d)){b.push(d)}}b.sort();for(d=0;d<b.length;d++){c[b[d]]=e[b[d]]}return c};

    _.getSelectionHTML = function(){var d="";if(typeof window.getSelection!="undefined"){var e=window.getSelection();if(e.rangeCount){var b=document.createElement("div");for(var c=0,a=e.rangeCount;c<a;++c){b.appendChild(e.getRangeAt(c).cloneContents())}d=b.innerHTML}}else{if(typeof document.selection!="undefined"){if(document.selection.type=="Text"){d=document.selection.createRange().htmlText}}}return d};

    _.sha1 = function(e){function d(y,j){var i=(y<<j)|(y>>>(32-j));return i}function s(A){var z="";var j;var B;var y;for(j=0;j<=6;j+=2){B=(A>>>(j*4+4))&15;y=(A>>>(j*4))&15;z+=B.toString(16)+y.toString(16)}return z}function u(A){var z="";var y;var j;for(y=7;y>=0;y--){j=(A>>>(y*4))&15;z+=j.toString(16)}return z}function b(j){j=j.replace(/\r\n/g,"\n");var i="";for(var z=0;z<j.length;z++){var y=j.charCodeAt(z);if(y<128){i+=String.fromCharCode(y)}else{if((y>127)&&(y<2048)){i+=String.fromCharCode((y>>6)|192);i+=String.fromCharCode((y&63)|128)}else{i+=String.fromCharCode((y>>12)|224);i+=String.fromCharCode(((y>>6)&63)|128);i+=String.fromCharCode((y&63)|128)}}}return i}var h;var w,v;var c=new Array(80);var n=1732584193;var l=4023233417;var k=2562383102;var g=271733878;var f=3285377520;var t,r,q,p,o;var x;e=b(e);var a=e.length;var m=new Array();for(w=0;w<a-3;w+=4){v=e.charCodeAt(w)<<24|e.charCodeAt(w+1)<<16|e.charCodeAt(w+2)<<8|e.charCodeAt(w+3);m.push(v)}switch(a%4){case 0:w=2147483648;break;case 1:w=e.charCodeAt(a-1)<<24|8388608;break;case 2:w=e.charCodeAt(a-2)<<24|e.charCodeAt(a-1)<<16|32768;break;case 3:w=e.charCodeAt(a-3)<<24|e.charCodeAt(a-2)<<16|e.charCodeAt(a-1)<<8|128;break}m.push(w);while((m.length%16)!=14){m.push(0)}m.push(a>>>29);m.push((a<<3)&4294967295);for(h=0;h<m.length;h+=16){for(w=0;w<16;w++){c[w]=m[h+w]}for(w=16;w<=79;w++){c[w]=d(c[w-3]^c[w-8]^c[w-14]^c[w-16],1)}t=n;r=l;q=k;p=g;o=f;for(w=0;w<=19;w++){x=(d(t,5)+((r&q)|(~r&p))+o+c[w]+1518500249)&4294967295;o=p;p=q;q=d(r,30);r=t;t=x}for(w=20;w<=39;w++){x=(d(t,5)+(r^q^p)+o+c[w]+1859775393)&4294967295;o=p;p=q;q=d(r,30);r=t;t=x}for(w=40;w<=59;w++){x=(d(t,5)+((r&q)|(r&p)|(q&p))+o+c[w]+2400959708)&4294967295;o=p;p=q;q=d(r,30);r=t;t=x}for(w=60;w<=79;w++){x=(d(t,5)+(r^q^p)+o+c[w]+3395469782)&4294967295;o=p;p=q;q=d(r,30);r=t;t=x}n=(n+t)&4294967295;l=(l+r)&4294967295;k=(k+q)&4294967295;g=(g+p)&4294967295;f=(f+o)&4294967295}var x=u(n)+u(l)+u(k)+u(g)+u(f);return x.toLowerCase()};
    
    _.isPositiveInteger = function(val){ return val == "0" || ((val|0) > 0 && val % 1 == 0);}

    _.convertBadChars = function(str){
        return str.replace("<", "&lt;").replace(">", "&gt;");
    }

    _.onOverviewOfAPost = function(){
        return window.location.href == "http://www.jeuxvideo.com/cgi-bin/jvforums/forums.cgi"
    }

    _.init = function(){
        _.setButtonsArea();

        // Bug sur les forumJV
        if(window.location.host.match(/\.forumjv\.com$/))
            $("h1 a").css("width", "initial");

        // Nouvelle interface de JVC, obligé de passer par du JS au lieu de CSS
        $("#connexion").css({
            textAlign    : "right"
          , paddingRight : "5px"
          , width        : "666px" // ok
        });

        /*
        ColorBox v1.3.20.1 - jQuery lightbox plugin
        (c) 2012 Jack Moore - jacklmoore.com
        License: http://www.opensource.org/licenses/mit-license.php */
        (function(e,t,n){function G(n,r,i){var o=t.createElement(n);return r&&(o.id=s+r),i&&(o.style.cssText=i),e(o)}function Y(e){var t=T.length,n=(U+e)%t;return n<0?t+n:n}function Z(e,t){return Math.round((/%/.test(e)?(t==="x"?tt():nt())/100:1)*parseInt(e,10))}function et(e){return B.photo||/\.(gif|png|jp(e|g|eg)|bmp|ico)((#|\?).*)?$/i.test(e)}function tt(){return n.innerWidth||N.width()}function nt(){return n.innerHeight||N.height()}function rt(){var t,n=e.data(R,i);n==null?(B=e.extend({},r),console&&console.log&&console.log("Error: cboxElement missing settings object")):B=e.extend({},n);for(t in B)e.isFunction(B[t])&&t.slice(0,2)!=="on"&&(B[t]=B[t].call(R));B.rel=B.rel||R.rel||"nofollow",B.href=B.href||e(R).attr("href"),B.title=B.title||R.title,typeof B.href=="string"&&(B.href=e.trim(B.href))}function it(t,n){e.event.trigger(t),n&&n.call(R)}function st(){var e,t=s+"Slideshow_",n="click."+s,r,i,o;B.slideshow&&T[1]?(r=function(){M.text(B.slideshowStop).unbind(n).bind(f,function(){if(B.loop||T[U+1])e=setTimeout(J.next,B.slideshowSpeed)}).bind(a,function(){clearTimeout(e)}).one(n+" "+l,i),g.removeClass(t+"off").addClass(t+"on"),e=setTimeout(J.next,B.slideshowSpeed)},i=function(){clearTimeout(e),M.text(B.slideshowStart).unbind([f,a,l,n].join(" ")).one(n,function(){J.next(),r()}),g.removeClass(t+"on").addClass(t+"off")},B.slideshowAuto?r():i()):g.removeClass(t+"off "+t+"on")}function ot(t){V||(R=t,rt(),T=e(R),U=0,B.rel!=="nofollow"&&(T=e("."+o).filter(function(){var t=e.data(this,i),n;return t&&(n=t.rel||this.rel),n===B.rel}),U=T.index(R),U===-1&&(T=T.add(R),U=T.length-1)),W||(W=X=!0,g.show(),B.returnFocus&&e(R).blur().one(c,function(){e(this).focus()}),m.css({opacity:+B.opacity,cursor:B.overlayClose?"pointer":"auto"}).show(),B.w=Z(B.initialWidth,"x"),B.h=Z(B.initialHeight,"y"),J.position(),d&&N.bind("resize."+v+" scroll."+v,function(){m.css({width:tt(),height:nt(),top:N.scrollTop(),left:N.scrollLeft()})}).trigger("resize."+v),it(u,B.onOpen),H.add(A).hide(),P.html(B.close).show()),J.load(!0))}function ut(){!g&&t.body&&(Q=!1,N=e(n),g=G(K).attr({id:i,"class":p?s+(d?"IE6":"IE"):""}).hide(),m=G(K,"Overlay",d?"position:absolute":"").hide(),L=G(K,"LoadingOverlay").add(G(K,"LoadingGraphic")),y=G(K,"Wrapper"),b=G(K,"Content").append(C=G(K,"LoadedContent","width:0; height:0; overflow:hidden"),A=G(K,"Title"),O=G(K,"Current"),_=G(K,"Next"),D=G(K,"Previous"),M=G(K,"Slideshow").bind(u,st),P=G(K,"Close")),y.append(G(K).append(G(K,"TopLeft"),w=G(K,"TopCenter"),G(K,"TopRight")),G(K,!1,"clear:left").append(E=G(K,"MiddleLeft"),b,S=G(K,"MiddleRight")),G(K,!1,"clear:left").append(G(K,"BottomLeft"),x=G(K,"BottomCenter"),G(K,"BottomRight"))).find("div div").css({"float":"left"}),k=G(K,!1,"position:absolute; width:9999px; visibility:hidden; display:none"),H=_.add(D).add(O).add(M),e(t.body).append(m,g.append(y,k)))}function at(){return g?(Q||(Q=!0,j=w.height()+x.height()+b.outerHeight(!0)-b.height(),F=E.width()+S.width()+b.outerWidth(!0)-b.width(),I=C.outerHeight(!0),q=C.outerWidth(!0),g.css({"padding-bottom":j,"padding-right":F}),_.click(function(){J.next()}),D.click(function(){J.prev()}),P.click(function(){J.close()}),m.click(function(){B.overlayClose&&J.close()}),e(t).bind("keydown."+s,function(e){var t=e.keyCode;W&&B.escKey&&t===27&&(e.preventDefault(),J.close()),W&&B.arrowKey&&T[1]&&(t===37?(e.preventDefault(),D.click()):t===39&&(e.preventDefault(),_.click()))}),e("."+o,t).live("click",function(e){e.which>1||e.shiftKey||e.altKey||e.metaKey||(e.preventDefault(),ot(this))})),!0):!1}var r={transition:"elastic",speed:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,inline:!1,html:!1,iframe:!1,fastIframe:!0,photo:!1,href:!1,title:!1,rel:!1,opacity:.9,preloading:!0,current:"Image {current} sur {total}",previous:"Précédent",next:"Suivant",close:"Fermer",xhrError:"Impossible de charger ce contenu",imgError:"Impossible de charger cette image.",open:!1,returnFocus:!0,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:undefined},i="colorbox",s="cbox",o=s+"Element",u=s+"_open",a=s+"_load",f=s+"_complete",l=s+"_cleanup",c=s+"_closed",h=s+"_purge",p=!e.support.opacity&&!e.support.style,d=p&&!n.XMLHttpRequest,v=s+"_IE6",m,g,y,b,w,E,S,x,T,N,C,k,L,A,O,M,_,D,P,H,B,j,F,I,q,R,U,z,W,X,V,$,J,K="div",Q;if(e.colorbox)return;e(ut),J=e.fn[i]=e[i]=function(t,n){var s=this;t=t||{},ut();if(at()){if(!s[0]){if(s.selector)return s;s=e("<a/>"),t.open=!0}n&&(t.onComplete=n),s.each(function(){e.data(this,i,e.extend({},e.data(this,i)||r,t))}).addClass(o),(e.isFunction(t.open)&&t.open.call(s)||t.open)&&ot(s[0])}return s},J.position=function(e,t){function f(e){w[0].style.width=x[0].style.width=b[0].style.width=e.style.width,b[0].style.height=E[0].style.height=S[0].style.height=e.style.height}var n,r=0,i=0,o=g.offset(),u,a;N.unbind("resize."+s),g.css({top:-9e4,left:-9e4}),u=N.scrollTop(),a=N.scrollLeft(),B.fixed&&!d?(o.top-=u,o.left-=a,g.css({position:"fixed"})):(r=u,i=a,g.css({position:"absolute"})),B.right!==!1?i+=Math.max(tt()-B.w-q-F-Z(B.right,"x"),0):B.left!==!1?i+=Z(B.left,"x"):i+=Math.round(Math.max(tt()-B.w-q-F,0)/2),B.bottom!==!1?r+=Math.max(nt()-B.h-I-j-Z(B.bottom,"y"),0):B.top!==!1?r+=Z(B.top,"y"):r+=Math.round(Math.max(nt()-B.h-I-j,0)/2),g.css({top:o.top,left:o.left}),e=g.width()===B.w+q&&g.height()===B.h+I?0:e||0,y[0].style.width=y[0].style.height="9999px",n={width:B.w+q,height:B.h+I,top:r,left:i},e===0&&g.css(n),g.dequeue().animate(n,{duration:e,complete:function(){f(this),X=!1,y[0].style.width=B.w+q+F+"px",y[0].style.height=B.h+I+j+"px",B.reposition&&setTimeout(function(){N.bind("resize."+s,J.position)},1),t&&t()},step:function(){f(this)}})},J.resize=function(e){W&&(e=e||{},e.width&&(B.w=Z(e.width,"x")-q-F),e.innerWidth&&(B.w=Z(e.innerWidth,"x")),C.css({width:B.w}),e.height&&(B.h=Z(e.height,"y")-I-j),e.innerHeight&&(B.h=Z(e.innerHeight,"y")),!e.innerHeight&&!e.height&&(C.css({height:"auto"}),B.h=C.height()),C.css({height:B.h}),J.position(B.transition==="none"?0:B.speed))},J.prep=function(t){function o(){return B.w=B.w||C.width(),B.w=B.mw&&B.mw<B.w?B.mw:B.w,B.w}function u(){return B.h=B.h||C.height(),B.h=B.mh&&B.mh<B.h?B.mh:B.h,B.h}if(!W)return;var n,r=B.transition==="none"?0:B.speed;C.remove(),C=G(K,"LoadedContent").append(t),C.hide().appendTo(k.show()).css({width:o(),overflow:B.scrolling?"auto":"hidden"}).css({height:u()}).prependTo(b),k.hide(),e(z).css({"float":"none"}),d&&e("select").not(g.find("select")).filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one(l,function(){this.style.visibility="inherit"}),n=function(){function y(){p&&g[0].style.removeAttribute("filter")}var t,n,o=T.length,u,a="frameBorder",l="allowTransparency",c,d,v,m;if(!W)return;c=function(){clearTimeout($),L.detach().hide(),it(f,B.onComplete)},p&&z&&C.fadeIn(100),A.html(B.title).add(C).show();if(o>1){typeof B.current=="string"&&O.html(B.current.replace("{current}",U+1).replace("{total}",o)).show(),_[B.loop||U<o-1?"show":"hide"]().html(B.next),D[B.loop||U?"show":"hide"]().html(B.previous),B.slideshow&&M.show();if(B.preloading){t=[Y(-1),Y(1)];while(n=T[t.pop()])m=e.data(n,i),m&&m.href?(d=m.href,e.isFunction(d)&&(d=d.call(n))):d=n.href,et(d)&&(v=new Image,v.src=d)}}else H.hide();B.iframe?(u=G("iframe")[0],a in u&&(u[a]=0),l in u&&(u[l]="true"),u.name=s+ +(new Date),B.fastIframe?c():e(u).one("load",c),u.src=B.href,B.scrolling||(u.scrolling="no"),e(u).addClass(s+"Iframe").appendTo(C).one(h,function(){u.src="//about:blank"})):c(),B.transition==="fade"?g.fadeTo(r,1,y):y()},B.transition==="fade"?g.fadeTo(r,0,function(){J.position(0,n)}):J.position(r,n)},J.load=function(t){var n,r,i=J.prep;X=!0,z=!1,R=T[U],t||rt(),it(h),it(a,B.onLoad),B.h=B.height?Z(B.height,"y")-I-j:B.innerHeight&&Z(B.innerHeight,"y"),B.w=B.width?Z(B.width,"x")-q-F:B.innerWidth&&Z(B.innerWidth,"x"),B.mw=B.w,B.mh=B.h,B.maxWidth&&(B.mw=Z(B.maxWidth,"x")-q-F,B.mw=B.w&&B.w<B.mw?B.w:B.mw),B.maxHeight&&(B.mh=Z(B.maxHeight,"y")-I-j,B.mh=B.h&&B.h<B.mh?B.h:B.mh),n=B.href,$=setTimeout(function(){L.show().appendTo(b)},100),B.inline?(G(K).hide().insertBefore(e(n)[0]).one(h,function(){e(this).replaceWith(C.children())}),i(e(n))):B.iframe?i(" "):B.html?i(B.html):et(n)?(e(z=new Image).addClass(s+"Photo").error(function(){B.title=!1,i(G(K,"Error").html(B.imgError))}).load(function(){var e;z.onload=null,B.scalePhotos&&(r=function(){z.height-=z.height*e,z.width-=z.width*e},B.mw&&z.width>B.mw&&(e=(z.width-B.mw)/z.width,r()),B.mh&&z.height>B.mh&&(e=(z.height-B.mh)/z.height,r())),B.h&&(z.style.marginTop=Math.max(B.h-z.height,0)/2+"px"),T[1]&&(B.loop||T[U+1])&&(z.style.cursor="pointer",z.onclick=function(){J.next()}),p&&(z.style.msInterpolationMode="bicubic"),setTimeout(function(){i(z)},1)}),setTimeout(function(){z.src=n},1)):n&&k.load(n,B.data,function(t,n,r){i(n==="error"?G(K,"Error").html(B.xhrError):e(this).contents())})},J.next=function(){!X&&T[1]&&(B.loop||T[U+1])&&(U=Y(1),J.load())},J.prev=function(){!X&&T[1]&&(B.loop||U)&&(U=Y(-1),J.load())},J.close=function(){W&&!V&&(V=!0,W=!1,it(l,B.onCleanup),N.unbind("."+s+" ."+v),m.fadeTo(200,0),g.stop().fadeTo(300,0,function(){g.add(m).css({opacity:1,cursor:"auto"}).hide(),it(h),C.remove(),setTimeout(function(){V=!1,it(c,B.onClosed)},1)}))},J.remove=function(){e([]).add(g).add(m).remove(),g=null,e("."+o).removeData(i).removeClass(o).die()},J.element=function(){return e(R)},J.settings=r})(jQuery,document,window);
        var ColorBox_img_Overlay  = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAMFBMVEX///8HBwcICAgUFBQXFxcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuanbkAAAAQUlEQVR4nOzOoQ0AIBDF0K5QNiC3wYUN2H8nJPkai6l5prSOdcPU2jckN8mTZEmWZEmW5EFy8f+e/g4AAAD//wMAKnM4yCLdBHkAAAAASUVORK5CYII="
          , ColorBox_img_Controls = "data:image/png;base64,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"
          , ColorBox_img_Border   = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAyAQMAAACnNSPJAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlOArV5bRgAAABhJREFUeF6VwQENAAAAgjCjG50GbPwzDwUmggsB4+yamQAAAABJRU5ErkJggg=="
          , ColorBox_img_Loading  = "data:image/png;base64,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"        
        ;
        
        /*
        ColorBox CSS
        Modifié pour JVCMaster */
        _.insertCSS("#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:2147483647; overflow:hidden;}#cboxOverlay{position:fixed; width:100%;  height:100%;}#cboxMiddleLeft, #cboxBottomLeft{clear:left;}#cboxContent{position:relative;}#cboxLoadedContent{overflow:auto;}#cboxTitle{margin:0;}#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}.cboxIframe{width:100%; height:100%; display:block; border:0;}#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box;}/*User Style:Change the following styles to modify the appearance of ColorBox.  They areordered & tabbed in a way that represents the nesting of the generated HTML.*/#cboxOverlay{background:url(" + ColorBox_img_Overlay + ") repeat 0 0;}#colorbox{z-index:2147483648}#cboxTopLeft{width:21px; height:21px; background:url(" + ColorBox_img_Controls + ") no-repeat -101px 0;}#cboxTopRight{width:21px; height:21px; background:url(" + ColorBox_img_Controls + ") no-repeat -130px 0;}#cboxBottomLeft{width:21px; height:21px; background:url(" + ColorBox_img_Controls + ") no-repeat -101px -29px;}#cboxBottomRight{width:21px; height:21px; background:url(" + ColorBox_img_Controls + ") no-repeat -130px -29px;}#cboxMiddleLeft{width:21px; background:url(" + ColorBox_img_Controls + ") left top repeat-y;}#cboxMiddleRight{width:21px; background:url(" + ColorBox_img_Controls + ") right top repeat-y;}#cboxTopCenter{height:21px; background:url(" + ColorBox_img_Border + ") 0 0 repeat-x;}#cboxBottomCenter{height:21px; background:url(" + ColorBox_img_Border + ") 0 -29px repeat-x;}#cboxContent{background:#fff; overflow:hidden;}.cboxIframe{background:#fff;}#cboxError{padding:50px; border:1px solid #ccc;}#cboxLoadedContent{margin-bottom:28px;}#cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;}#cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}#cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}#cboxPrevious{position:absolute; bottom:0; left:0; background:url(" + ColorBox_img_Controls + ") no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;}#cboxPrevious:hover{background-position:-75px -25px;}#cboxNext{position:absolute; bottom:0; left:27px; background:url(" + ColorBox_img_Controls + ") no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}#cboxNext:hover{background-position:-50px -25px;}#cboxLoadingGraphic{background:url(" + ColorBox_img_Loading + ") no-repeat center center;}#cboxClose{position:absolute; bottom:0; right:0; background:url(" + ColorBox_img_Controls + ") no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}#cboxClose:hover{background-position:-25px -25px;}")

        // Code CSS pour JVCMaster
        _.insertCSS(".JVCMaster_patternButton img {cursor: pointer; margin-right : 3px} \
                    .JVCMaster_colorboxHTML .titre_bloc{font-size : 13px; text-align: left} \
                    .JVCMaster_colorboxHTML li{background: url(http://image.jeuxvideo.com/css_img/defaut/puce_base.gif) no-repeat left center; border-bottom : 1px solid rgb(237, 237, 237); font-size : 12px; font-weight : normal; margin: 2px 0; overflow: hidden; padding: 0 0 1px 18px; text-align : left} \
                    .JVCMaster_colorboxHTML p{margin : 5px} \
                    .JVCMaster_colorboxHTML input[type=checkbox]{ margin-right: 3px; vertical-align : bottom } \
                    .JVCMaster_POST{background: url(http://image.jeuxvideo.com/css_img/defaut/sep_444.gif) repeat-x top; clear: both; line-height: 1.3em; margin-bottom: 8px; padding-top: 10px} \
                    ");


        // Bouton "JVCMaster x.x.x" pour ouvrir le panneau de configuration
        var BTN_CONFIGURATION = $("<a/>", {
            title : "Panneau de configuration de JVCMaster"
          , text  : "JVCMaster " + _.version
          , click : function(e){
                // On rafraichit la liste des extensions activées
                _.activatedExtensions = JSON.parse(_.LS_get("activatedExtensions") || "[]");

                // Contenu du panneau de configuration de JVCMaster
                var html = '<div class="JVCMaster_colorboxHTML forums hp_forums"><div class="bloc1"><h3 class="titre_bloc"><span>Fonctionnalités</span></h3><div class="bloc_inner"><ul class="liste_liens">';
                    $.each(_.scripts, function(script){
                       html += '<li><input type="checkbox" data-jvcmaster-script-id="' + _.scripts[script].id + '"' + (_.activatedExtensions.indexOf(scripts[script].id) !== -1 ? ' checked="checked"' : '') + '/><b>' + _.scripts[script].name + "</b> : " + _.scripts[script].description + "</li>"
                    });
                    html += "</ul></div></div>";
                    
                    if(window.location.href.match("^http:\/\/www\.jeuxvideo\.com")){
                        html += '<div class="bloc1"><h3 class="titre_bloc"><span>Synchronisation des paramètres' + (_.LS_get("Sync_pseudo") != null ? ' (' +  _.LS_get("Sync_pseudo") + ')' : '') + '</span></h3><div class="bloc_inner">';
                        
                        var isConnected = false;
                        if(typeof _.LS_get("Sync_key") == "object" && typeof _.LS_get("Sync_pseudo") == "object"){
                            html += '<form id="JVCMaster_FORM_connection">';
                            html += '<p style="font-size: 15px;font-weight: bold;">Connectez-vous avec votre compte JVCMaster</p><input type="text" name="JVCMaster_pseudo" placeholder="Pseudo"><input type="password" name="JVCMaster_password" placeholder="Mot de passe"><input type="submit" value="Connexion">';
                            html += '<p>Pas encore de compte JVCMaster? <a href="http://www.jvcmaster.org/account">Inscrivez-vous!</a></p>'; 
                            html += '</form>'
                        } else{
                            isConnected = true;
                        }
                        
                        html += '<form id="JVCMaster_FORM_sync"' + (!isConnected ? ' style="display:none;"' : '') + ' action="http://www.jvcmaster.org/action?type=sync"><button id="JVCMaster_BTN_setSync">Envoyer votre configuration</button><button id="JVCMaster_BTN_getSync">Télécharger votre configuration</button>';
                        html += "<br><a href='#' id='JVCMaster_BTN_Sync_logout'>Se déconnecter</a>";
                        html += "</form>";

                        html += "</div></div>";                        
                    }

                    html += "</div>";

                $.colorbox({html : html});
                
                $("input[type=checkbox][data-jvcmaster-script-id]").click(function(){
                   var t  = $(this)
                     , id = t.attr("data-jvcmaster-script-id");

                    if(t.is(":checked")){
                        _.activatedExtensions.push(id);
                        _.scripts[id].init();
                    } else{
                        _.activatedExtensions.splice(_.activatedExtensions.indexOf(id), 1);
                        _.scripts[id].destroy();
                    }

                   _.LS_set("activatedExtensions", JSON.stringify($.unique(_.activatedExtensions)));
                });


                $("#JVCMaster_FORM_connection").on("submit", function(){
                    var t            = $(this)
                      , action       = "http://www.jvcmaster.org/action?type=sync"
                      , pseudo       = t.find("input[name=JVCMaster_pseudo]").val()
                      , password     = t.find("input[name=JVCMaster_password]").val()
                      , submitButton = t.find("[type=submit]")
                      , formSync     = $("#JVCMaster_FORM_sync")
                    ;

                    if(pseudo == ''){
                        alert("Rentrer votre pseudo");
                        return false;
                    }
                    if(password == ''){
                        alert("Rentrer votre mot de passe");
                        return false;
                    }

                    $.post(action, {
                            pseudo         : pseudo,
                            password       : _.sha1("0+@#1$4%*7" + password)
                        }, "json").done(function(data) {
                            data = JSON.parse(data);
                            
                            submitButton.attr("disabled", "disabled");
                            
                            if(!data.accountExists) {
                                alert("Ce compte n'existe pas!");
                                submitButton.removeAttr("disabled");
                            } else {
                                t.slideUp(200);
                                formSync.slideDown(200);

                                _.LS_set("Sync_key"    , data.key);
                                _.LS_set("Sync_pseudo" , pseudo);
                            }
                        }).fail(function(jqXHR, textStatus, errorThrown) {
                            alert("Bordel, il y a une erreur. Merci de regarder la console web, et de me faire parvenir (HerveGhesquiere) ce qui est inscrit dans cette dernière");
                            console.error(jqXHR);
                            console.error(textStatus);
                            console.error(errorThrown);
                        });

                    return false;
                });

                $("#JVCMaster_BTN_getSync").live("click", function(){
                     $.post("http://www.jvcmaster.org/action?type=sync&action=get", {
                            jvcmaster_sync : ""
                          , pseudo         : _.LS_get("Sync_pseudo")
                          , key            : _.LS_get("Sync_key")
                        }, 
                        function(data){
                            if(data.status){
                                var config = JSON.parse(data.config);

                                _.LS_set("activatedExtensions", config.activatedExtensions  == "null" ? "[]" : config.activatedExtensions);
                                _.LS_set("favoritesTopics",     config.favoritesTopics      == "null" ? "{}" : config.favoritesTopics);
                                _.LS_set("friends",             config.friends              == "null" ? "{}" : config.friends);
                                _.LS_set("hiddenposts",         config.hiddenposts          == "null" ? "[]" : config.hiddenposts);
                                _.LS_set("hiddenpostspseudo",   config.hiddenpostspseudo    == "null" ? "[]" : config.hiddenpostspseudo);
                                
                                alert("Votre configuration a été correctement téléchargée, et installée");
                                window.location.reload();
                            }
                            else
                                alert("Un problème est survenu");
                        }, "json"
                    );
                    return false;
                });

                $("#JVCMaster_BTN_setSync").live("click", function(){
                    config = {
                          activatedExtensions : _.LS_get("activatedExtensions")
                        , favoritesTopics     : _.LS_get("favoritesTopics")
                        , friends             : _.LS_get("friends")
                        , hiddenposts         : _.LS_get("hiddenposts")
                        , hiddenpostspseudo   : _.LS_get("hiddenpostspseudo")
                    };
                    
                    $.post("http://www.jvcmaster.org/action?type=sync&action=set", {
                            jvcmaster_sync : ""
                          , config         : config
                          , pseudo         : _.LS_get("Sync_pseudo")
                          , key            : _.LS_get("Sync_key")
                        },

                        function(data){
                            if(data.status)
                                alert("Votre configuration a été correctement envoyée");
                            else
                                alert("Un problème est survenu");
                        }, "json"
                    );

                    return false;
                });

                $("#JVCMaster_BTN_Sync_logout").live("click", function(){
                    _.LS_rm("Sync_pseudo");
                    _.LS_rm("Sync_key");
                    window.location.reload();
                });

                e.preventDefault();
            }
          , css : {cursor : "pointer"}
        });

        BTN_CONFIGURATION.appendTo($("<div>").prependTo($("#connexion")));

        // La barre #connexion est "appendée" au bout de 1000ms  sur les ForumJV
        setTimeout(function(){
            BTN_CONFIGURATION.appendTo($("<li>").prependTo($("div#log ul")));
        }, 1100);

        // On lance les extensions que l'utilisateur a activées
        $.each(_.activatedExtensions, function(k, script){
            _.scripts[script].init();
        });

        if(typeof LS_get("isFirstUse") === "object"){
            _.LS_set("isFirstUse", "0")

            // On purge la configuration de JVCMaster 2.x
            _.LS_rm("oHiddenPosts");
            _.LS_rm("oHiddenPostsViaPseudos");
            _.LS_rm("firstUse");
            _.LS_rm("sActivatedScripts");
            BTN_CONFIGURATION.click();
        }                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
        $("body").bind("ajaxComplete", function(e, xhr, settings){
            if("url" in settings) {
    			if(settings.url.match(/^\.\/ajax_prec_msg\.php/)) {
                	console.log("ACTUALISATION");
                    $(".JVCMaster_patternButton").remove();
                    _.pseudoArea = $(".msg").parent().find("li span:last-child:not(.generic), div[id^=message] ul").parent().find(".pseudo");
                    _.setButtonsArea();

                    $.each(_.activatedExtensions, function(k, script){
                        _.scripts[script].destroy();
                        _.scripts[script].init();
                    });         
                }
            }
        });                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

        delete ColorBox_img_Controls, ColorBox_img_Loading, ColorBox_img_Border, ColorBox_img_Overlay;
    }

    // Extensions de JVCMaster
    _.scripts = {
        antiflood : {
            id          : "antiflood"
          , name        : "Anti-Flood"
          , description : "Cache le flood"
          , init : function(){
                _.insertCSS(".JVCMaster_POST_FLOOD{background : rgba(255, 0, 0, 0.2); border : 1px solid red; padding : 10px} \
                             .JVCMaster_POST_FLOOD a img{margin-right : 3px; vertical-align : top} \
                            ");

                $("body").find("div[id^=message] .post, table[id^=liste_topics] tr > td + td a").each(function(){
                    var t             = $(this)
                      , html          = t.html()
                      , postContainer = t.parents(".msg, .tr1, .tr2")
                    ;

                    // Titre de topic sur la liste des topics
                    if(postContainer.attr("class").match(/tr1|tr2/)){
                        if(/(W{10,}){1,}/.test(html)){
                            t.html("<i>JVCMaster</i> : <b>Flood</b>");
                        }
                        // Corps du post sur un topic
                    } else if(postContainer.attr("class").match("msg")){
                        if(/(W{30,}){5,}/.test(html)
                            || /( ?<br( \/)?>&nbsp;\n){200}/.test(html)){
                            var BTN_AVERTIR = t.parent().find("a[target=avertir]")
                              , pseudo      = postContainer.find(".pseudo strong").text()
                            ;

                            postContainer.hide();
                            postContainer.before($("<div>", {
                                "class" : "msg JVCMaster_POST_FLOOD"
                                , html : "<i>JVCMaster</i> : <b>Flood</b> de <b>" + pseudo + "</b> - <a href='#' onclick='$(this).parent().next().slideToggle(); return false'>Voir/cacher le post</a> " + BTN_AVERTIR.clone().wrap('<p>').parent().html()
                            }));
                        }
                    }
                });

            },
            destroy : function(){
                $(".JVCMaster_POST_FLOOD").remove();
                $(".msg").show();
            }
        },

        cdvinformations : {
            id          : "cdvinformations"
          , name        : "CDV informations"
          , description : "Affiche des informations à côté du pseudo"
          , init : function(){
                // Impossible de faire une requête AJAX depuis les forumJV sur "Jeuxvideo.com"
                if(/forumjv\.com$/.test(window.location.hostname))
                    return;

                _.insertCSS(".JVCMaster_BADGE_RANK img{ cursor : default } \
                             .JVCMaster_avatar{display : none; height : 100px; left: -105px; position: absolute; text-align : right; top: 0; z-index: 1; width : 100px} \
                             .JVCMaster_avatar img{background: white; box-shadow: 0 0 15px rgba(0, 0, 0, 0.3); padding: 5px} \
                            ");

                BADGE_RANK = $("<span>", {
                    height  : "12px"
                    , width : "14px"
                    , css : {
                        backgroundImage : "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAoCAYAAACWwljjAAAACXBIWXMAAAsSAAALEgHS3X78AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAxYSURBVHjapJd5VJRnlsZ/X60UFFAUW7EJyKIsLojK4oJolGjAJek0TEzsRZM2pjVGTWeYztLdnkzSak9PYrqzafpkNMZ02iUCxtYYMXGBkUUNqMgq+74WBVVQ9c4fNWIQY9S+59Q59dX33vs+dbfnXkkIwe3SUFkn/EICJH5ETua1iLOf/AK5tY/xziasLu4kZ+zmpu6V0jIRGTXhR+18X6TvAyprHBbF+1/DVbpMZ48Mz2kpLFq67o4GCwsLReHhdcSGOqDXqrlebaPL1AHA9Eff4/RvX8JdoUI+KZ6Qx1dyr8BGAL2z/WVhbvmWh0ME/inT6TndRJuskUvVTgz7pvLMM3Zgn+9IFwlLX+P4vi0kTxqmQ24B4FqpClNtJ846gd7Tje7vHAkXRvIrOzC4ypD76/G0uaBTwvhnN6GaPOeOAKW333hRWNrz8XZTE+4u6Bhw4FK7PyFunaRG62lr6uabxg5KqgRpSZ5IopfEn2VLH/1uiYg2DNGvslFebaTxmgUXBxk+vqAz+LL4hSwpb80K4W4zUtrcjl7jjLPMSMR4P2p6FUx899AdAckOf3EEbzc1kdHBBAT74K4ZJMStE4DujjI8fXQkTQnluRVhzAq3oBgwA5BT2E+XUWDplKhqdEHpqSVqihuTg5woKu8GIH7XIan4hpkZgT6EeGnx8jBwtamfs41dfH2hSDRU1o1JYIXOw5uKi21UXGwjLGocc6eH4QN4KASgJ7ukk9L86yxMiyDA45bi9KhJbDvwFfNjPEmOUANqDD4Kcku6UHonA1Dx2V4xLtidwnojsf5KBt3HcSMyFJt1kIKj+ygAHB0dRML8FcTGxkoACgClUg5AzfUGmo3dPBSjodaq5z/3N9JvGmCu5+AIkC6j/U9lvvmOVJCWJIrqQNPXhY8vdLZBXbueN3fvkACU9aX0NdZj07hxxqTAlBxlt3G1mQkTfNA4asg9VciBvX+lqe5hkbr8cUnW0TeIRi7QyAVPvziPJ2LkeGGhpqqfxcmzcXd2oKnbikHTz7myQawTMkfAHcg6LQ1aJU52OFNWZeNkpQNv7j4xkhuK5esw9/VTN2MqlrkJNBeVUX7+IpFRUdTWtHCjqhMXRxVxcZGcO32Mhso6IQv1UHC1uY8Bq4T1ShGNFTcA0LvauHrhAmFeKgDe/OAq31wPYEnaglHJuH37+0x076PPQUb6v+8dlQ9+IQFSa1g0EyKDaKiqxdldR3BgMCrVAAmzYqi+UY1M5URvvwVntYaeQROKXf84Kx3NOily9myjobEdHHV09g4DEKJuR+fsx6S1L9AiHPiuoHBMVfx/fxHj/WGcb8CY9/qYmXRWNJAwZxZmSy8tbT3kniokIjqUiOhQACLCg2iqt/cwGcCStAXSL9b/HMlkr47B1gYAlFEL8Jq9ghmPPSsVlVTQZx4YdVlx/jnxWFqS0FsllAoFn72xlOL8c6MqJyAxmc9PneH6tRrUKhea6juIiA7F29OViPAgEuLmU1xYSUNzB5FREyTFTUVLr8SxEhUR48ExZh3LMjZLANmHPxcAv3xiJf7hkaPC9Zed24lyaAWdB30DMuICLVz58o/ExH0xciY2NlaaEjtbfHI4i5T4GcQmRqJ3c8PSK9HcMsCJnD2cuVzCunWbx1LH3WTNkyvErr2jm9m2328RuuFvCXR1xk0r4STMfDcwh4xNr49pejnZWeJ4zkHq66twc9WP/D4uNJJXf3fr/D0DKs4/J2LiEsdctO6Xi4RmyB5/V503r+48elfOKiwsFAad10jSjzkghKC05JoQ