Advertisement
Guest User

Untitled

a guest
Aug 24th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var $331 = $.noConflict(true);
  2.  
  3. function isValidJson(json) {
  4.     try {
  5.         JSON.parse(json);
  6.         return true;
  7.     } catch (e) {
  8.         return false;
  9.     }
  10. }
  11.  
  12. $331(window).on('resize', function(){
  13.     var height = $331(window).height() - $331("#fa_toolbar").height();
  14.     $331("#divbubbles").css("height", height-80+"px");
  15. });
  16.  
  17. if($331("#fa_toolbar").length == 0){
  18.     var observer = new MutationObserver(function(mutations) {
  19.         mutations.forEach(function(mutation) {
  20.             if (!mutation.addedNodes) return
  21.  
  22.             for (var i = 0; i < mutation.addedNodes.length; i++) {
  23.                 var node = mutation.addedNodes[i]
  24.                 if(node.id == "fa_toolbar"){
  25.                     bubbleAccounts();
  26.                     observer.disconnect();
  27.                 }
  28.             }
  29.         })
  30.     })
  31.     observer.observe(document.body, {
  32.         childList: true
  33.         , subtree: true
  34.         , attributes: false
  35.         , characterData: false
  36.     })
  37. }else{
  38.     bubbleAccounts();
  39. }
  40.  
  41.  
  42. function bubbleAccounts(){
  43.     var keyPressed = false;
  44.     var mouseovered = false;
  45.  
  46.     var allAccounts = {};
  47.     var lastMessages = {};
  48.     var bubbleStack = [];
  49.     var bubbleNumber = 0;
  50.     var BubbleDiv = document.createElement('div');
  51.     var $331targetedDiv;
  52.  
  53.     BubbleDiv.id = "divbubbles";
  54.     var height = $331(window).height();
  55.     $331(BubbleDiv).css({'height':height-150+"px",'position':'fixed','left':'-100px','top':'0px','margin-top':"30px"});
  56.     $331(document.body).append($331("<style>#divbubbles:hover{overflow:auto;width:180px;}#divbubbles{overflow:hidden;width:90px;}" +
  57.                                         "#divbubbles::-webkit-scrollbar { width: 12px;}#divbubbles::-webkit-scrollbar-track { border-radius:8px; padding:5 5 5 5; box-shadow: inset 0 0 10px 10px transparent;border: solid 4px transparent;} "+
  58.                                         "#divbubbles::-webkit-scrollbar-thumb { border-radius: 8px;box-shadow: inset 0 0 10px 10px  #26282C;border: solid 4px transparent;}"+
  59.                                         ".title-bubble{z-index:-2;background-color:#2F3136;width:0px;left:15px;padding-left:0px;padding-top:6px;text-overflow: ellipsis;bottom:10px;border-radius:20px;height:21px;overflow:hidden;font-size:12px;font-weight:bold;position:absolute;display:block;white-space: nowrap;"+
  60.                                         "transition: all 0.5s ease-in-out; -moz-transition: all 0.5s ease-in-out; /* Firefox 4 */-webkit-transition: all 0.5s ease-in-out; /* Safari and Chrome */-o-transition: all 0.5s ease-in-out; /* Opera */-ms-transition: all 0.5s ease-in-out; /* Explorer 10 */}"+
  61.                                         ".bubble:hover{transition: all 0.5s ease-in-out;}.bubble:hover .title-bubble{transition: all 0.5s ease-in-out;width:90px;padding-left:45px;padding-right:5px;}" +
  62.                                         ".custom-menu { display: none; z-index: 1000; position: absolute; overflow: hidden; border: 1px solid #CCC; white-space: nowrap; font-family: sans-serif; background: #FFF; color: #333;"+
  63.                                         "border-radius: 8px; padding: 0; } .custom-menu li { padding: 8px 12px; cursor: pointer; list-style-type: none; transition: all .3s ease; user-select: none; } "+
  64.                                         ".custom-menu li:hover { background-color: #DEF; }.login_form.modal{padding: 0!important;} .login_form h3 { margin: 0; padding: 10px; color: #fff; font-size: 14px; background: -moz-linear-gradient(top, #2e5764, #1e3d47); background: -webkit-gradient(linear,left bottom,left top,color-stop(0, #1e3d47),color-stop(1, #2e5764)); } .login_form.modal p { padding: 20px 30px; border-bottom: 1px solid #ddd; margin: 0; background: -webkit-gradient(linear,left bottom,left top,color-stop(0, #eee),color-stop(1, #fff)); overflow: hidden; } .login_form.modal p label { float: left; font-weight: bold; color: #333; font-size: 13px; width: 110px; line-height: 22px; } .login_form.modal p input[type='text'], .login_form.modal p input[type='password'] { font: normal 12px/18px 'Lucida Grande', Verdana; padding: 3px; border: 1px solid #ddd; width: 200px; }</style>"
  65.                                        ));
  66.     $331(document.body).append($331('<ul class="custom-menu"> <li data-action="first">First thing</li> <li data-action="second">Second thing</li> <li data-action="third">Third thing</li> </ul>'));
  67.     $331(document.body).append(BubbleDiv);
  68.  
  69.     var link = window.document.createElement('link');
  70.     link.rel = 'stylesheet';
  71.     link.type = 'text/css';
  72.     link.href = 'https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.7.1/jquery.contextMenu.min.css';
  73.     document.getElementsByTagName("HEAD")[0].appendChild(link);
  74.     link = window.document.createElement('link');
  75.     link.rel = 'stylesheet';
  76.     link.type = 'text/css';
  77.     link.href = 'https://cdnjs.cloudflare.com/ajax/libs/jquery-modal/0.9.1/jquery.modal.min.css';
  78.     document.getElementsByTagName("HEAD")[0].appendChild(link);
  79.  
  80.     var isLoginPage = function(){
  81.         if(location.href == location.protocol + '//' + location.host +"/login"){
  82.             bubbleStack[bubbleStack.length-1].onclick = function(){$331("input[name=login]").click()};
  83.             $331("input[name=login]").on("click", function(){
  84.                 createAccount($331("input[name=username]").val(), $331("input[name=password]").val());
  85.             });
  86.         }
  87.     }
  88.  
  89.     //Récupère les infos de connexion et les stock
  90.     var createAccount = function(username, password){
  91.         allAccounts[username] = {"username" : username, "password" : password, "src" : undefined};
  92.         localStorage.setItem(location.protocol + '//' + location.host + 'accounts', JSON.stringify(allAccounts));
  93.     }
  94.  
  95.     var importAccount = function(username, password, src){
  96.         allAccounts[username] = {"username" : username, "password" : password, "src" : src};
  97.         localStorage.setItem(location.protocol + '//' + location.host + 'accounts', JSON.stringify(allAccounts));
  98.     }
  99.  
  100.     //Ajoute la bulle d'ajout de compte
  101.     var addAddAccountBubble = function(link, onclick, title){
  102.  
  103.         var bubbleId = bubbleNumber;
  104.         var cssBubble = {"margin-top": "10px", "margin-left": "20px","position":"relative", "cursor":"pointer",'float' : 'bottom'};
  105.         var cssImage = {"border-radius": "40px","width":"50px","height":"50px","box-shadow":"1px 1px 30px 1px black"};
  106.         var BubbleAccount = document.createElement('div');
  107.         var BubbleImage = document.createElement('img');
  108.  
  109.         if(link)
  110.             BubbleImage.src = link;
  111.         else
  112.             BubbleImage.src = "http://image.noelshack.com/fichiers/2017/19/1494197222-defaut.jpg";
  113.  
  114.         $331(BubbleAccount).attr("title",title);
  115.         $331(BubbleAccount).css(cssBubble);
  116.         $331(BubbleImage).css(cssImage);
  117.         $331(BubbleAccount).append(BubbleImage);
  118.         $331(BubbleAccount).addClass("addbubble");
  119.         $331(BubbleDiv).prepend(BubbleAccount);
  120.         bubbleStack[bubbleId] = BubbleAccount;
  121.  
  122.         if(!onclick)
  123.             BubbleAccount.onclick = function(){
  124.                 $331('.bubble').animate({
  125.                     left: "-70px",
  126.                 }, 400, 'easeInOutBack');
  127.             };
  128.         else
  129.             BubbleAccount.onclick = onclick;
  130.  
  131.         bubbleNumber++;
  132.  
  133.     }
  134.  
  135.     //Ajoute une bulle de compte
  136.     var addBubble = function(link, onclick, title){
  137.  
  138.         var bubbleId = bubbleNumber;
  139.         var cssBubble = {"margin-top": "10px", "margin-left": "20px","height":"50px", "position":"relative", "cursor":"pointer",'float' : 'bottom'};
  140.         var cssImage = {"z-index":"-1", "position":"absolute", "border-radius": "40px","width":"50px","height":"50px","box-shadow":"1px 1px 30px 1px black"};
  141.         var BubbleAccount = document.createElement('div');
  142.         var BubbleImage = document.createElement('img');
  143.         var BubbleImageDiv = document.createElement('div');
  144.  
  145.         if(link)
  146.             BubbleImage.src = link;
  147.         else
  148.             BubbleImage.src = "http://image.noelshack.com/fichiers/2017/19/1494197222-defaut.jpg";
  149.  
  150.         if($331("#fa_usermenu > img")[0] && title == $331("#fa_usermenu > img")[0].alt){
  151.             BubbleImage.src = $331("#fa_usermenu > img")[0].src;
  152.             allAccounts[$331("#fa_usermenu > img")[0].alt].src = $331("#fa_usermenu > img")[0].src;
  153.             localStorage.setItem(location.protocol + '//' + location.host + 'accounts', JSON.stringify(allAccounts));
  154.         }
  155.  
  156.         $331(BubbleAccount).data("bubbleID", bubbleId);
  157.         $331(BubbleAccount).attr("data-title",title);
  158.         $331(BubbleImageDiv).attr("data-title",title);
  159.         $331(BubbleAccount).css(cssBubble);
  160.         $331(BubbleImage).css(cssImage);
  161.         $331(BubbleImageDiv).css(cssImage);
  162.         $331(BubbleImage).css({"width": "100%","height": "100%","object-fit": "cover"});
  163.         $331(BubbleAccount).append(BubbleImageDiv);
  164.         $331(BubbleImageDiv).append(BubbleImage);
  165.         $331(BubbleAccount).addClass("bubble");
  166.         $331(BubbleImageDiv).addClass("bubble-image-div");
  167.         $331(BubbleAccount).append($331("<div class='title-bubble'>" + $331(BubbleAccount).attr('data-title') + "</div>"));
  168.         $331(BubbleDiv).prepend(BubbleAccount);
  169.         bubbleStack[bubbleId] = BubbleAccount;
  170.  
  171.         if(link == "https://i.imgur.com/FTnBXYR.png"){
  172.             $331(BubbleAccount).addClass("add");
  173.         }
  174.  
  175.         if(!onclick)
  176.             BubbleAccount.onclick = function(){
  177.                 $331('.bubble').animate({
  178.                     left: "-70px",
  179.                 }, 400, 'easeInOutBack');
  180.             };
  181.         else
  182.             BubbleAccount.onclick = onclick;
  183.  
  184.         bubbleNumber++;
  185.  
  186.     }
  187.  
  188.     //Ajoute la bubble de départ
  189.     var addMainBubble = function(link, onclick){
  190.  
  191.         var bubbleId = bubbleNumber;
  192.         var cssBubble = {"bottom": "20px","left": "-70px","position":"fixed", "cursor":"pointer",'float' : 'bottom', "object-fit": "cover", "cursor": "pointer", "width": "50px", "height": "50px"}
  193.         var cssImage = {"border-radius": "40px","width": "100%","height": "100%","object-fit": "cover","box-shadow":"1px 1px 30px 1px black"};
  194.         var BubbleAccount = document.createElement('div');
  195.         var BubbleImage = document.createElement('img');
  196.  
  197.         if(link)
  198.             BubbleImage.src = link;
  199.         else
  200.             BubbleImage.src = "http://image.noelshack.com/fichiers/2017/19/1494197222-defaut.jpg";
  201.  
  202.         $331(BubbleAccount).attr("title","Vos comptes");
  203.         $331(BubbleAccount).css(cssBubble);
  204.         $331(BubbleImage).css(cssImage);
  205.         $331(BubbleAccount).append(BubbleImage);
  206.         $331(BubbleAccount).addClass("mainbubble");
  207.  
  208.         $331(document.body).append(BubbleAccount);
  209.         bubbleStack[bubbleId] = BubbleAccount;
  210.  
  211.         if(!onclick)
  212.             BubbleAccount.onclick = function(){
  213.                 $331('.bubble, .addbubble').animate({
  214.                     left: "-70px",
  215.                 }, 400, 'easeInOutBack');
  216.             };
  217.         else
  218.             BubbleAccount.onclick = onclick;
  219.  
  220.         bubbleNumber++;
  221.  
  222.         $331(BubbleAccount).animate({
  223.             left: "20px",
  224.         }, 400, 'easeInOutBack');
  225.  
  226.     }
  227.  
  228.     // Animation pour retirer un compte
  229.     var removeBubble = function(bubbleID){
  230.         $331(bubbleStack[bubbleID]).animate({
  231.             left: "-70px",
  232.         }, 500, 'easeInOutBack',function(){
  233.             $331(bubbleStack[bubbleID]).animate({
  234.                 height: "0px",
  235.             }, 500, 'easeInOutBack', function(){
  236.                 setTimeout($331(bubbleStack[bubbleID]).remove(),100);
  237.             });
  238.         });
  239.     }
  240.  
  241.     var changeCharacter = function(bubble, username, password){
  242.  
  243.         var progressBar =
  244.             new ProgressBar.Circle('.bubble[data-title="'+ username.replace(/"/g, '\\"') + '"] .bubble-image-div', {
  245.                 color: '#FF5E00',
  246.                 strokeWidth: 15,
  247.                 duration: 2000, // milliseconds
  248.                 easing: 'easeInOut'
  249.             });
  250.  
  251.  
  252.         // Sauvegarder les messages des Textareas (réponses de post, nouveau post...)
  253.         if($331("textarea").length > 0){
  254.             for(var i = 0; i < $331("textarea").length; i++){
  255.                 lastMessages[i] = $331("textarea")[i].value;
  256.                 progressBar.animate(0.5*i/$331("textarea").length);
  257.             }
  258.             lastMessages.scrollTop = $331(document).scrollTop();
  259.             localStorage.setItem('lastmessages', JSON.stringify(lastMessages));
  260.         }else{
  261.             progressBar.animate(0.5);
  262.         }
  263.  
  264.         // Déconnexion puis connexion si utilisateur déjà connecté
  265.         // Sinon connexion simple
  266.         if($331("#logout").attr("href") !== undefined)
  267.             $331.ajax(location.protocol + '//' + location.host + $331("#logout").attr("href"), {
  268.                 method: 'POST',
  269.                 crossDomain: false,
  270.                 success: function(){
  271.                     progressBar.animate(0.8);
  272.                     $331.ajax(location.protocol + '//' + location.host + "/login", {
  273.                         method: 'POST',
  274.                         data:{ "username": username, "password": password, "autologin": "on", "redirect": "", "query": "", "login": "Connexion" },
  275.                         crossDomain: false,
  276.                         success: function(){
  277.                             progressBar.animate(1.0);
  278.                             document.location.reload(true);
  279.                         },
  280.                         error: function(e){
  281.                             console.log(e);
  282.                         }
  283.                     });
  284.                 },
  285.                 error: function(e){
  286.                     console.log(e);
  287.                 }
  288.             });
  289.         else{
  290.             progressBar.animate(0.8);
  291.             $331.ajax(location.protocol + '//' + location.host + "/login", {
  292.                 method: 'POST',
  293.                 data:{ "username": username, "password": password, "autologin": "on", "redirect": "", "query": "", "login": "Connexion" },
  294.                 crossDomain: false,
  295.                 success: function(){
  296.                     progressBar.animate(1.0);
  297.                     document.location.reload(true);
  298.                 },
  299.                 error: function(e){
  300.                     console.log(e);
  301.                 }
  302.             });
  303.         }
  304.     }
  305.  
  306.     //Envoie sur la page de login
  307.     //Déconnecte l'utilisateur si connecté
  308.     var loginPage = function(){
  309.         if($331("#logout").attr("href") !== undefined)
  310.             $331.ajax(location.protocol + '//' + location.host + $331("#logout").attr("href"), {
  311.                 method: 'POST',
  312.                 crossDomain: false,
  313.                 success: function(){
  314.                     document.location.assign(location.protocol + '//' + location.host + "/login");
  315.                 },
  316.                 error: function(e){
  317.                     console.log(e);
  318.                 }
  319.             });
  320.         else
  321.             document.location.assign(location.protocol + '//' + location.host + "/login");
  322.     }
  323.  
  324.     //Charge les bulles de compte à gauche
  325.     var loadBubbles = function(){
  326.         //bulle toujours présente
  327.         addMainBubble($331("#fa_usermenu").find('img').attr("src"), function(){
  328.             if($331(this).data('toggle')){
  329.                 $331('#divbubbles').animate({
  330.                     left: "-100px",
  331.                 }, 400, 'easeInOutBack');
  332.                 $331(this).data('toggle', false);
  333.             }else{
  334.                 $331('#divbubbles').animate({
  335.                     left: "0px",
  336.                 }, 400, 'easeInOutBack');
  337.                 $331(this).data('toggle', true);
  338.             }
  339.         });
  340.  
  341.         //bulles de comptes
  342.         for(var account in allAccounts){
  343.             if($331("#fa_welcome").html() && (allAccounts[account].src == undefined || (allAccounts[account].username == $331("#fa_welcome").html().substring($331("#fa_welcome").html().indexOf(' ')+1) && allAccounts[account].src !== $331("#fa_usermenu").find('img').attr("src")))){
  344.                 allAccounts[account].src = $331("#fa_usermenu").find('img').attr("src");
  345.             }
  346.             try{throw allAccounts[account]}
  347.             catch(account2) {
  348.                 addBubble(allAccounts[account].src, function(){
  349.                     if(mouseovered && keyPressed){
  350.                         // CTRL+Clic = Supprimer le compte
  351.                         delete allAccounts[account2.username];
  352.                         localStorage.setItem(location.protocol + '//' + location.host + 'accounts', JSON.stringify(allAccounts));
  353.                         removeBubble($331(this).data("bubbleID"));
  354.                     }else{
  355.                         // Change de compte
  356.                         changeCharacter(this, account2.username, account2.password);
  357.                     }
  358.                 }, account2.username);
  359.             }
  360.         }
  361.  
  362.         // Bulle "+"
  363.         addAddAccountBubble("https://i.imgur.com/FTnBXYR.png", function(){loginPage();}, "Ajouter un compte");
  364.  
  365.         //Sauvegarde les comptes
  366.         localStorage.setItem(location.protocol + '//' + location.host + 'accounts', JSON.stringify(allAccounts));
  367.  
  368.         //Ajouter l'import et l'export de comptes
  369.         $331('<form class="login_form modal" id="dialog-form"> <h3>Exporter les comptes</h3> <p><label>Comptes</label><input type="text" name="account" id="account"></p> <p><label for="email">Clé de décryptage</label><input type="text" name="decryptkey" id="decryptkey" ></p></form>').appendTo(document.body);
  370.         $331('<a href="#dialog-form" rel="modal:open" style="display:none;">Open Modal</a>').appendTo(document.body);
  371.  
  372.         var p = document.createElement("p");
  373.         var button = document.createElement("button");
  374.         button.name = "submit_form";
  375.         button.id = "submit_form";
  376.         button.type = "button";
  377.         button.innerHTML = "Importer les comptes";
  378.         button.onclick = function(e){
  379.             e.preventDefault();
  380.             var decrypted = Crypto.decode($331('#dialog-form')[0].account.value, $331('#dialog-form')[0].decryptkey.value);
  381.             if(isValidJson(decrypted)){
  382.                 var allAccounts = JSON.parse(decrypted);
  383.                 for(var account in allAccounts){
  384.                     importAccount(allAccounts[account].username, allAccounts[account].password, allAccounts[account].src);
  385.                 }
  386.                 document.location.reload(true);
  387.             }
  388.         }
  389.         $331(p).append(button);
  390.         $331('#dialog-form').append(p);
  391.  
  392.         //Nouveau context menu
  393.         $331.contextMenu({
  394.             selector: '.mainbubble',
  395.             callback: function(key, options) {
  396.                 switch(key){
  397.                     case "export":
  398.                         var array = Crypto.encode(localStorage.getItem(location.protocol + '//' + location.host + 'accounts'));
  399.                         $331('#dialog-form')[0].account.value = array[0].toString()
  400.                         $331('#dialog-form')[0].decryptkey.value = array[1].toString()
  401.                         $331('#dialog-form')[0].submit_form.style.display = 'none';
  402.                         $331('a[href="#dialog-form"]').trigger("click");
  403.                         break;
  404.                     case "import":
  405.                         $331('#dialog-form')[0].account.value = ''
  406.                         $331('#dialog-form')[0].decryptkey.value = ''
  407.                         $331('#dialog-form')[0].submit_form.style.display = 'block';
  408.                         $331('a[href="#dialog-form"]').trigger("click");
  409.                         break;
  410.                 }
  411.             },
  412.             items: {
  413.                 "export": {name: "Exporter les comptes", icon: "fa-download"},
  414.                 "import": {name: "Importer des comptes", icon: "fa-download"}
  415.             }
  416.         });
  417.  
  418.         // Fonction pour vérifier si on est sur la page de login
  419.         isLoginPage();
  420.     }
  421.  
  422.     if(isValidJson(localStorage.getItem('accounts')) && localStorage.getItem('accounts') !== null && localStorage.getItem('accounts') !== undefined){
  423.         localStorage.setItem(location.protocol + '//' + location.host + 'accounts', localStorage.getItem('accounts'))
  424.         localStorage.setItem('accounts', "");
  425.     }
  426.  
  427.     //Récupère les comptes
  428.     if(isValidJson(localStorage.getItem(location.protocol + '//' + location.host + 'accounts')) && localStorage.getItem(location.protocol + '//' + location.host + 'accounts') !== null && localStorage.getItem(location.protocol + '//' + location.host + 'accounts') !== undefined){
  429.         allAccounts = JSON.parse(localStorage.getItem(location.protocol + '//' + location.host + 'accounts'));
  430.     }
  431.  
  432.     //Encodeur
  433.     var Crypto = {
  434.         encode : function(string){
  435.             var key = Math.random().toString(36).substr(2, 10);
  436.             var encrypted = CryptoJS.AES.encrypt(string, key);
  437.             return [encrypted, key];
  438.         },
  439.         decode : function(encrypted, key){
  440.             var decrypted = CryptoJS.AES.decrypt(encrypted, key);
  441.             return decrypted.toString(CryptoJS.enc.Utf8);
  442.         }
  443.     }
  444.  
  445.     //Récupère les messages sauvegardés puis les supprime du cache
  446.     if(isValidJson(localStorage.getItem('lastmessages')) && localStorage.getItem('lastmessages') !== null && localStorage.getItem('lastmessages') !== undefined){
  447.         lastMessages = JSON.parse(localStorage.getItem('lastmessages'));
  448.         if($331("textarea").length > 0){
  449.             for(var i = 0; i < $331("textarea").length; i++){
  450.                 $331("textarea")[i].value = lastMessages[i];
  451.             }
  452.         }
  453.         $331(document).scrollTop(lastMessages.scrollTop);
  454.         localStorage.setItem('lastmessages', undefined);
  455.     }
  456.  
  457.     loadBubbles();
  458.  
  459.     // UI pour supprimer un compte
  460.     function isBubbleCTRLHovered(element){
  461.         if(mouseovered && keyPressed){
  462.             if($331(element).find('img')[0].src !== "https://i.imgur.com/iLi71DS.png"){
  463.                 $331(element).data('oldsrc', $331(element).find('img')[0].src);
  464.                 $331(element).find('img')[0].src = "https://i.imgur.com/iLi71DS.png";
  465.             }
  466.         }
  467.         else
  468.             $331(element).find('img')[0].src = $331(element).data('oldsrc') || $331(element).find('img')[0].src;
  469.     }
  470.  
  471.     $331(window).bind('mousemove', function(e) {
  472.         $331targetedDiv = $331(e.target)[0];
  473.     });
  474.  
  475.     $331(window).keydown(function(e){
  476.         if (e.keyCode == 17)
  477.         {
  478.             keyPressed = true;
  479.         }
  480.         else {
  481.             keyPressed = false;
  482.         }
  483.         if($331targetedDiv.className == "bubble")
  484.             isBubbleCTRLHovered($331targetedDiv);
  485.     });
  486.  
  487.     $331(window).keyup(function(e){
  488.         keyPressed = false;
  489.         if($331targetedDiv.className == "bubble")
  490.             isBubbleCTRLHovered($331targetedDiv);
  491.     });
  492.  
  493.     $331(".bubble").mouseover(function(e){
  494.         mouseovered = true;
  495.         isBubbleCTRLHovered(this);
  496.     });
  497.     $331(".bubble").mouseout(function(){
  498.         mouseovered = false;
  499.         isBubbleCTRLHovered(this);
  500.     });
  501.  
  502. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement