braiam

options.js

Aug 6th, 2012
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var mirrors;
  2. var mangas;
  3. var actmirrors;
  4.  
  5. function getMangaMirror(mirror) {
  6.   for (var i = 0; i < mirrors.length; i++) {
  7.     if (mirrors[i].mirrorName == mirror) {
  8.       return mirrors[i];
  9.     }
  10.   }
  11.   return null;
  12. }
  13.  
  14. //Opens an url in new tab
  15. function openTab(urlToOpen) {
  16.   chrome.extension.sendRequest({action: "opentab", url: urlToOpen}, function(response) {});
  17. }
  18.      
  19. // Saves options to localStorage.
  20. function save_options() {
  21.   //console.log("save options...");
  22.   var obj = {};
  23.   obj.action = "saveparameters";
  24.   obj.displayAdds = (document.getElementById("adsCk").checked ? 0 : 1);
  25.   obj.displayChapters = (document.getElementById("chapsCk").checked ? 1 : 0);
  26.   if (document.getElementById("modeChap1").checked) {
  27.     obj.displayMode = 1;
  28.   } else {
  29.     if (document.getElementById("wideMode1").checked) {
  30.       obj.displayMode = 2;
  31.     } else {
  32.       obj.displayMode = 3;
  33.     }
  34.   }
  35.   obj.popupMode = (document.getElementById("popupMode1").checked ? 1 : 2);
  36.   obj.omSite = 0;
  37.   obj.newTab = (document.getElementById("newTab").checked ? 1 : 0);
  38.   obj.sync = (document.getElementById("syncMg").checked ? 1 : 0);
  39.   obj.displayzero = (document.getElementById("displayZero").checked ? 1 : 0);
  40.   obj.pub = (document.getElementById("pubAMR").checked ? 1 : 0);
  41.   obj.dev = (document.getElementById("devAMR").checked ? 1 : 0);
  42.   obj.load = (document.getElementById("loadCk").checked ? 1 : 0);
  43.   obj.resize = (document.getElementById("resizeCk").checked ? 1 : 0);
  44.   obj.imgorder = (document.getElementById("imgorderCk").checked ? 1 : 0);
  45.  
  46.   var colPicks = getElementsByClass("colorPicker", document);
  47.   for (var i = 0; i < colPicks.length; i++) {
  48.     if (colPicks[i].className.indexOf("active") != -1) {
  49.       obj.color = i;
  50.       break;
  51.     }
  52.   }
  53.  
  54.   //New options
  55.   obj.groupmgs = (document.getElementById("groupmgsCk").checked ? 1 : 0);
  56.   obj.openupdate = (document.getElementById("openupdateCk").checked ? 1 : 0);
  57.   obj.updatechap = parseInt(document.getElementById("updatechap").value, 10);
  58.   obj.updatemg = parseInt(document.getElementById("updatemg").value, 10);
  59.   obj.newbar = (document.getElementById("newbarCk").checked ? 1 : 0);
  60.   obj.addauto = (document.getElementById("addautoCk").checked ? 1 : 0);
  61.  
  62.   obj.lrkeys = (document.getElementById("lrkeysCk").checked ? 1 : 0);
  63.  
  64.   obj.size = parseInt(document.getElementById("popupsize").value, 10);
  65.  
  66.   obj.autobm = (document.getElementById("autobmCk").checked ? 1 : 0);
  67.   obj.prefetch = (document.getElementById("prefetchCk").checked ? 1 : 0);
  68.  
  69.   obj.rightnext = (document.getElementById("rightnextCk").checked ? 1 : 0);
  70.  
  71.   //Notifications
  72.   obj.shownotifications = (document.getElementById("shownotificationsCk").checked ? 1 : 0);
  73.   obj.notificationtimer = parseInt(document.getElementById("notificationtimer").value, 10);
  74.  
  75.   obj.refreshspin = (document.getElementById("refreshspinCk").checked ? 1 : 0);
  76.   obj.savebandwidth = (document.getElementById("savebandwidthCk").checked ? 1 : 0);
  77.   obj.checkmgstart = (document.getElementById("checkmgstartCk").checked ? 1 : 0);
  78.  
  79.   obj.nocount = (document.getElementById("noCount").checked ? 1 : 0);
  80.   obj.displastup = (document.getElementById("displastup").checked ? 1 : 0);
  81.   obj.markwhendownload = (document.getElementById("markwhendownload").checked ? 1 : 0);
  82.  
  83.   obj.sendstats = (document.getElementById("sendstats").checked ? 1 : 0);
  84.  
  85.   if (isNaN(obj.notificationtimer))
  86.   {
  87.     obj.notificationtimer = 0;
  88.   }
  89.  
  90.   chrome.extension.sendRequest(obj, function(response) {});
  91. }
  92.  
  93. function init() {
  94.   loadMenu("options");
  95.   $(".article").show();
  96.   $(".ongletCont[id!='ong1']").hide();
  97.   if (window.location.href.indexOf("tab=sites") != -1) {
  98.     switchOnglet($("#supportedWS")[0], 'ong4');
  99.   }
  100.   restore_options();
  101. }
  102. // Restores select box state to saved value from localStorage.
  103. function restore_options() {
  104.   response = chrome.extension.getBackgroundPage().getParameters();
  105.  
  106.   document.getElementById("adsCk").checked = (response.displayAdds != 1);
  107.   document.getElementById("chapsCk").checked = (response.displayChapters == 1);
  108.   document.getElementById("modeChap1").checked = (response.displayMode == 1);
  109.   document.getElementById("modeChap2").checked = (response.displayMode != 1);
  110.   document.getElementById("wideMode1").checked = (response.displayMode == 2);
  111.   document.getElementById("wideMode2").checked = (response.displayMode == 3);
  112.   document.getElementById("popupMode1").checked = (response.popupMode == 1);
  113.   document.getElementById("popupMode2").checked = (response.popupMode == 2);
  114.   document.getElementById("newTab").checked = (response.newTab != 0);
  115.   document.getElementById("syncMg").checked = (response.sync != 0);
  116.   document.getElementById("displayZero").checked = (response.displayzero != 0);
  117.   document.getElementById("pubAMR").checked = (response.pub != 0);
  118.   document.getElementById("devAMR").checked = (response.dev != 0);
  119.   document.getElementById("loadCk").checked = (response.load != 0);
  120.   document.getElementById("resizeCk").checked = (response.resize != 0);
  121.   document.getElementById("imgorderCk").checked = (response.imgorder != 0);
  122.   //COLOR
  123.   var colPicks = getElementsByClass("colorPicker", document);
  124.   colPicks[response.color].className = "colorPicker active";
  125.  
  126.   if (document.getElementById("chapsCk").checked) {
  127.     document.getElementById('chaptersOptions').style.display = 'table-row';
  128.   }
  129.   if (document.getElementById("modeChap2").checked) {
  130.     document.getElementById('wideScreenOpts').style.display = 'table-row';
  131.   }
  132.   if (!document.getElementById("wideMode1").checked && !document.getElementById("wideMode2").checked) {
  133.     document.getElementById("wideMode2").checked = true;
  134.   }
  135.  
  136.   //New options
  137.   document.getElementById("groupmgsCk").checked = (response.groupmgs != 0);
  138.   document.getElementById("openupdateCk").checked = (response.openupdate != 0);
  139.   document.getElementById("updatechap").value = response.updatechap;
  140.   document.getElementById("updatemg").value = response.updatemg;
  141.   document.getElementById("newbarCk").checked = (response.newbar != 0);
  142.   document.getElementById("addautoCk").checked = (response.addauto != 0);
  143.  
  144.   document.getElementById("lrkeysCk").checked = (response.lrkeys != 0);
  145.  
  146.   document.getElementById("popupsize").value = response.size;
  147.  
  148.   document.getElementById("autobmCk").checked = (response.autobm != 0);
  149.   document.getElementById("prefetchCk").checked = (response.prefetch != 0);
  150.  
  151.   document.getElementById("rightnextCk").checked = (response.rightnext != 0);
  152.  
  153.   //Notifications
  154.   document.getElementById("shownotificationsCk").checked = (response.shownotifications == 1);
  155.   document.getElementById("notificationtimer").value = response.notificationtimer;
  156.  
  157.   document.getElementById("refreshspinCk").checked = (response.refreshspin == 1);
  158.   document.getElementById("savebandwidthCk").checked = (response.savebandwidth == 1);
  159.   document.getElementById("checkmgstartCk").checked = (response.checkmgstart == 1);
  160.  
  161.   document.getElementById("noCount").checked = (response.nocount == 1);
  162.   document.getElementById("displastup").checked = (response.displastup == 1);
  163.   document.getElementById("markwhendownload").checked = (response.markwhendownload == 1);
  164.  
  165.   document.getElementById("sendstats").checked = (response.sendstats == 1);
  166.  
  167.   restore_mirrors();
  168.   $("#refreshChap").click(function() {
  169.     chrome.extension.getBackgroundPage().refreshAllLasts(true, true);
  170.     $("#noteChap").show();
  171.   });
  172.   $("#refreshMg").click(function() {
  173.     chrome.extension.getBackgroundPage().refreshMangaLists(true, true);
  174.     $("#noteMg").show();
  175.   });
  176.   $("#paypalus").click(function() {
  177.     openTab("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MPJ2DWQP67FHJ");
  178.   });
  179.   $("#paypaleuro").click(function() {
  180.     openTab("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=PTFDEMDFNKQAG");
  181.   });
  182. }
  183.  
  184. function loadSelectors() {
  185.   var selAll = $("<img src='" + chrome.extension.getURL("img/select_all.png") + "' title='Activate all visible mirrors'/>")
  186.   var selNone = $("<img src='" + chrome.extension.getURL("img/select_none.png") + "' title='Deactivate all visible mirrors'/>")
  187.  
  188.   selAll.click(function() {
  189.     $("#allmirrors tr:visible input[type='checkbox']").each(function(index) {
  190.       if (!$(this).attr("checked")) {
  191.         $(this).attr("checked", true);
  192.         var mirrorName = $(".mirrorName", $(this).parent().parent()).attr("name");
  193.         chrome.extension.sendRequest({action: "activateMirror", mirror: mirrorName}, function(res) {});
  194.       }
  195.     });
  196.   });
  197.  
  198.   selNone.click(function() {
  199.     $("#allmirrors tr:visible input[type='checkbox']").each(function(index) {
  200.       if ($(this).attr("checked")) {
  201.         $(this).attr("checked", false);
  202.         var mirrorName = $(".mirrorName", $(this).parent().parent()).attr("name");
  203.         chrome.extension.sendRequest({action: "desactivateMirror", mirror: mirrorName}, function(res) {});
  204.       }
  205.     });
  206.   });
  207.  
  208.   selAll.appendTo($("#selectors"));
  209.   selNone.appendTo($("#selectors"));
  210.  
  211.   var sel = MgUtil.getLanguageSelect(mirrors);
  212.   sel.change(function() {
  213.     var lang = $("option:selected", $(this)).val();
  214.     if (lang == "all") {
  215.       $("#allmirrors tr").show();
  216.     } else {
  217.       var langMirrors = MgUtil.getMirrorsFromLocale(mirrors, lang);
  218.  
  219.       $("#allmirrors tr .mirrorName").each(function(index) {
  220.         var isFound = false;
  221.         for (var i = 0; i < langMirrors.length; i++) {
  222.           if (langMirrors[i] == $(this).attr("name")) {
  223.             isFound = true;
  224.             break;
  225.           }
  226.         }
  227.         if (!isFound) {
  228.           $(this).closest("tr").hide();
  229.         } else {
  230.           $(this).closest("tr").show();
  231.         }
  232.       });
  233.     }
  234.     pyjmirs();
  235.   });
  236.  
  237.   var spansel = $("<span class='custom-select'></span>");
  238.   sel.appendTo(spansel);
  239.   spansel.appendTo($("#selectors"));
  240. }
  241.  
  242. function restore_mirrors() {
  243.   mirrors = chrome.extension.getBackgroundPage().mirrors;
  244.   mangas = chrome.extension.getBackgroundPage().mangaList;
  245.   actmirrors = chrome.extension.getBackgroundPage().actMirrors;
  246.  
  247.   loadSelectors();
  248.   mirrors.sort(function(a, b) {
  249.     if (a.mirrorName < b.mirrorName) {
  250.       return -1;
  251.     } else if (a.mirrorName == b.mirrorName) {
  252.       return 0;
  253.     } else {
  254.       return 1;
  255.     }
  256.   });
  257.  
  258.   $("#results").empty();
  259.   $("<table id='allmirrors'></table>").appendTo($("#results"));
  260.  
  261.   for (var i = 0; i < mirrors.length; i++) {
  262.     var trCur = $("<tr></tr>");
  263.  
  264.     var nb = 0;
  265.     for (var j = 0; j < mangas.length; j++) {
  266.       if (mangas[j].mirror == mirrors[i].mirrorName) {
  267.         nb++;
  268.       }
  269.     }
  270.     var tdHead = $("<td class='mirrorName' name='" +  mirrors[i].mirrorName + "'></td>");
  271.     var img = $("<img src='" + mirrors[i].mirrorIcon + "' title='" + mirrors[i].mirrorName + "' />");
  272.     img.appendTo(tdHead);
  273.     $("<span><b>" + mirrors[i].mirrorName + "</b></span>").appendTo(tdHead);
  274.     $("<span> (Mangas read on this site : <b>" + nb + "</b>)</span>").appendTo(tdHead);
  275.     tdHead.appendTo(trCur);
  276.    
  277.     var lang = mirrors[i].languages.split(",");
  278.     var langstr = "";
  279.     for (var j = 0; j < lang.length; j++) {
  280.       langstr += MgUtil.getLanguageName(lang[j]) + ", ";
  281.     }
  282.     var tdLang = $("<td class='lang'>" + langstr.substr(0, langstr.length - 2) + "</td>");
  283.     tdLang.appendTo(trCur);
  284.    
  285.     var tdMgs = $("<td class='mirrorOpt'></td>");
  286.     tdMgs.appendTo(trCur);
  287.    
  288.     if (nb > 0) {
  289.       trCur.addClass("desactivate");
  290.     } else {
  291.       var isfound = false;
  292.       for (var j = 0; j < actmirrors.length; j++) {
  293.         if (actmirrors[j].mirrorName == mirrors[i].mirrorName) {
  294.           isfound = true;
  295.           break;
  296.         }
  297.       }
  298.  
  299.       var ck = $("<input type=\"checkbox\" />");
  300.       ck.attr("checked", isfound);
  301.       ck.appendTo(tdMgs);
  302.       ck.click(function() {
  303.         var mirrorName = $(".mirrorName", $(this).parent().parent()).attr("name");
  304.         if ($(this).attr("checked")) {
  305.           // activate the mirror
  306.           chrome.extension.sendRequest({action: "activateMirror", mirror: mirrorName}, function(res) {});
  307.         } else {
  308.           // desactivate the mirror
  309.           chrome.extension.sendRequest({action: "desactivateMirror", mirror: mirrorName}, function(res) {});
  310.         }
  311.       });
  312.  
  313.     }
  314.    
  315.     trCur.appendTo($("#allmirrors"));
  316.   }
  317.   pyjmirs();
  318. }
  319.  
  320. function pyjmirs() {
  321.   $("#allmirrors tr:visible").removeClass("odd").removeClass("even");
  322.   $("#allmirrors tr:visible").each(function(index) {
  323.     if (index % 2 == 0) {
  324.       $(this).addClass("odd");
  325.     } else {
  326.       $(this).addClass("even");
  327.     }
  328.   });
  329. }
  330. function switchOnglet(ong, tab) {
  331.   $(".tab").removeClass("checked");
  332.   $(ong).addClass("checked");
  333.   $(".ongletCont").each(function(index) {
  334.     if ($(this).attr("id") == tab) {
  335.       $(this).show();
  336.     } else {
  337.       $(this).hide();
  338.     }
  339.   });
  340. }
  341.  
  342. function switchColor(obj) {
  343.   var colPicks = getElementsByClass("colorPicker", document);
  344.   for (var i = 0; i < colPicks.length; i++) {
  345.     colPicks[i].className="colorPicker";
  346.   }
  347.   obj.className += " active";
  348. }
  349. function getElementsByClass(searchClass, obj) {
  350.     if (!obj) {
  351.         obj = document;
  352.     }
  353.    
  354.     var classElements = new Array();
  355.     var els = document.getElementsByTagName('*');
  356.     var elsLen = els.length
  357.     for (i = 0, j = 0; i < elsLen; i++)
  358.     {
  359.         var classes = els[i].className.split(' ');
  360.         for (k = 0; k < classes.length; k++)
  361.             if ( classes[k] == searchClass )
  362.                 classElements[j++] = els[i];
  363.     }
  364.     return classElements;
  365. }
  366. document.addEventListener('DOMContentLoaded', function () {
  367.   document.querySelector('body').addEventListener('load', init());
  368. });
Advertisement
Add Comment
Please, Sign In to add comment