napisy24.pl helper

Dodaje kilka ciekawych funkcji na stronie napisy24.pl

当前为 2015-08-15 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name napisy24.pl helper
  3. // @version 1.4
  4. // @author KO
  5. // @description Dodaje kilka ciekawych funkcji na stronie napisy24.pl
  6. // @namespace KO/napisy24_helper
  7. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wEDDSUqO/kIZgAAB3RJREFUeNrtm1tsHFcZx39nbnubXe/6trabxDElJHGaVoSoXAoNClGJeAgRPDYICQkkkBAKqlBJH0IJjRCtKEgVUkCqFCEhxEtFpCJaBG2VthQqW7JFFGhMSOI0sRN7veu9zs6NB6/Xu95Ze5w6SVvPefFeZo7O9zv/73Z2LFzXZSMPiQ0+AgABgABAACAAEAAIAAQAAgAbdSiLL06ePPlH13V3bQSjhRDnjh079uUmAKZpHtqzZw/hcPhDbXylUmF0dPTeFgUApNNpYrHYhxpAsVi8MzFAiOot36vK14mF/o4kSi3fWZZFoVBY85ymaa4cA9ZjRLQxumKniYX+gSzlsJ0Uper9zBS+Rbn6gK85ktEXGEgeBxyypa9wLfvjpu/Pnj3L7Ows+/fvp7Oz09ecExMTjI+Pc+DAAWRZvh0KcOmOn2Ko+2skIi8jSzkAZGmOePg1hrofJRX7w+oA1XP0J38EODUlXG25Zm5uzlPK7YbjOIyNjeE4DoZhrL8ChDDZlDpKPPwqAFV7E/nyAcrm/cS0t+iIvogkivR3/ISKuZNydXebeQwGUj9EYLfH7Lo4zgIcRfG39Hw+z+Kpl67r9fvXDUA8/Ne68bOFr3Nj/vu4LMhsvvwIBeMhNnd+D3DQQ6+1BdAb/yUh5SKOG6FU/Th66E1P/68v3CeASqVSfy3L8voDKFU/QaZ4hELlYQrGZ1p3oPIFTDuNKk+jSHOec8RCb9Ol/xaAm/nvoin/87zuVgA0Grzc+LYx4E//muZ3/7xK43FptmTyxn8zTM6Vmz637B6mco97Gg+gyDdR5WkADGtr6wJEkYHkE4BL2byP2cKRtsbYtt20m2sF4CsLlKo2vz57CdeFvYNJNndGePrlCUavZFk8QP7irl6+s2/I1wLS8Wfrr8vVPS3f93X8FFW+hovM9eyTK8bl9wpA0zTK5fLKCpAEdUMvzpQ4fubfjFxeMh7gpXM3GL2SXSU4WvR3nKAjeqYeD8rmrmXx41WS0Rdq8eMbVMztq5Wwa3bRRQCSJCFJ0uoKUOWli55/4zKG5aCHFL75uUGGuqOcePEdbuYN3r6UZc+WpLespAybOo8S1UYWMoM1yNT8403XyNIc/cnjNdf4KDfz3169c2swYLm0TdMkl8uRz+fJ5/MUi0UMw6inS03T/LmA5SxttWE5RDWZpw7vZGtXFID7BuK88h+D6XnDc8KoNsqm1GMo8o2FfG18infnfobldDbVDQPJ4yjSLC4y1+aewnW1NQGYmppicnKSbDZLLpdbtS5QVdUfgIrZnIcffXBT3XiAzujCQucrVstkXfppehM/R2DjuhrT80fJFI8AzdLtiZ8iHv5bDdCnkaQCUW0EFwVcBVnK1tzRQJay2E6yxQXGxsbaGhqPx4lGo2iaRiaTIZvNrgWA07DQEF/anV7miLWA1CBBgc09nY+RCP+lppwh3p17xtOnFSlDt/6b+ns99Dp66PW2pfX2vs9iOd1cmjlNwe5qVls0SiqVIplM1v8u72ZHRkbWCmBJAfu3dyMtCzym7dR8eEmOqdjv68ZnS4eZyj2B40a8g5KrkTceRg+9WWt2Vv9tUlAF3KY6YN++ffT09KxepNeid7us4ZkGF8eDW1MeOyhqu2zX83hP/LnavXu5lj3RIvlmADpXM8/WY4EkDIQwEZj1v72JX5CI/JmKOcy17JNYdg+W041lzSypIxLxlQUWDffdDZYaFNCtax5BbuGW2eJCuxtW30GW8guBKfeDFY332lvHDYPbLFvbjdfcTKdi7vSsBNtF9RYDaxWjbwCNMSCqtcpGD8m14GVTMR2S0Ys1qSkY1sfqZwGSqCBEBUkY2E4C2+l4zz3nohFCiLY+3Q5AI7wVAWjy0g5WbQdNkZY1LaGl1rRU5Z5Urv7+3p7DKPIMkmg9sKham5nM/ArDGvKhC3NFAKqq+i6KFkG1AyC1dndqQyPTelM60QjAxDC3AxJCWGjKJU/jATRlknTiaV+LtpzF4CZ7AvAr/0YAjWX0igr4SE+U3ngIRRZNu71Uu4eJhxXyFYt4WKFgPMSlmeeJhd7CcRNYdhe2k8Rxw7huCMcNocgZwup58pXP+1p0rnSIkHKBXPmQp5x1XfcNoLe3F13X6evr8+sCEqeOPIBA4KUyRRI889VdlEybzalIPfqXqnvbLsKwoGh80veiDWuIycxzLZ8PDg4iSRLpdNr/MV0kwsGDB/13gwupbWX/6uu4O0fniqIwNDS0vnPe6o2WZXH9+vX3xVF3f3+/7wOSdQNw/vx5Lly44Nli3snhOA7btm1j9+7ddxaA4zi4rts2vdypIYRY9dRnxQ6TDT5uWQGLufhuu4DrumuqC9YNwI4dOxgYGOBuP2kqhCCRSNx5AEIIOjq86/vLly9z5cqVdTV0y5YtDA4Ovn9cYKUxMTFR/wlrvUa1Wr0tAIJHZIIscJsqs8bf5NZrzg8MgOHhYYaHhwMX+MC5wPT09IZ4SMoTgKqqZ8bHxzfEY3Kqqp6r1zPB/wwFdUAAIAAQAAgABAACAAGAAEAAYEOO/wNzY+aLYxIEkAAAAABJRU5ErkJggg==
  8. // @include http://napisy24.pl/*
  9. // @homepage https://github.com/olodev/n24h
  10. // @grant none
  11. // @run-at document-start
  12. // ==/UserScript==
  13.  
  14. /**
  15.  
  16. INFO:
  17.  
  18. Użytkownicy Opery 12.XX przed użyciem skryptu proszę zmienić nazwę usuwając z niej ".user", np. na "n24h.js"
  19.  
  20. */
  21.  
  22. var icons = {
  23. staroff: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3gwUDR0hRbYVJwAAAjtJREFUOMudlM+rElEUx8+8lOGqE6PjzLyXGzczbhSVAqOyRYt2QYu3q7eqhehCJmwXiW8hSgvxByK0qFX/QIKLlsILIRI0uXlHQmgR+QZFEEZUnFaGr17O6x24i3vuuZ/DOed7L2UYBphZtVp9AAAQj8ffm8Va4ALGcVzKMAwKAEyBYBjGzlUulx9jjOcY43mlUjkyi98zyUeJopjgeZ7meZ4WBCEBANSuCzuBtVotFg6Hb2z2oVDoeq1Wi10KmMvlnKIoPnE6nb/77HK5LIIgPM1kMuw/S8rn8zcZhrlltVp9NpvNbbVa3TRNc3a73enz+fYRQmeS6rq+JoT8mM1m4+Vyqc3n85Gu6yNd1/F4PP5oYRjGL8vy81AotH+RiSOE9oLBoAcAPNv+drutEUIyV+r1+udGozFYr9cRURSdcAnrdDrfMcZKIpF4Q22EXSwW70qS9DoSicj/A2u1Wt9UVY0lk8kPAADU9kspFAoBr9f7LhqN+imKMtVvs9n8OhwOjxRF+XTulBVF6fZ6vcNut/vzAmWOCCGH27BzZWMYho1l2atmQJZlHYvFwmKqQ5fLdZ/neWQGFATBxnHcPVMgQiiA0Flev9/XVFXV/ogDhFDA9LdxOBwHm6YTQk4JISfT6fQlAAAh5FiW5duSJLm3Y3cCaZq+hjE+HQwGJ5qmvUilUl+2jh8WCoWAqqrHkiTdoWna89fT25ZNNps9YBjm7Wq1eqYoSm9XD0ulkh8AXk0mk0fpdHq88f8CflYIlVvjW0cAAAAASUVORK5CYII='
  24. ,staron: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3gwUDR8nnuPSkAAAAsZJREFUOMulk0tvG1UUx//n3Jm5M2NnUjueOnYCoptmQYNUSKEqFYss2CGqloeQ6AoWkbJtdhVS8wX4ALBAoq14NGXBAqFu2oqmFSgEUKqySRcNIbUzcRw7bTyx554unGeBuApHOrpX5179dF5/EhF0sj8mgrcA4KUzte87/bXwDOYGqXMiIAAdgdzpw68T6Q97+sPXcs+Fr05fTZ/9n0AiP3BHPV9pz1faTbujANG+gdMT/khYzA6ZJIZJYoR9mVemJ/yRfQF/ukwZL3A+sl2xEhMjMQ042lhe2v74+hd04D9runPRPu767glWPGA5Vo6YckpJj+Vwpjvn9bISFkk2OwDTIrMSNRZaTVORhCKTSLnVMuXWeuveWn31tqU990i2WBjL9x/sNSZGksQwZh3GbJ5NiCSACEAMVjZnC34fs+5jdqCUBrNG+UE5qii+QCKC374L3s4Wcp+GxeyhLWgSb0HFNCEQECkwO21XGopdsNKI5qtz0cNo7OXT9a9pc7Gnv/HeCPKZz/LPZw+bpIHtbBswSQwRsw1SLpg1WGmU5qr3q+XqyNC7jWu7hnL0vbWb1b+W3pmfXZjZvRkEgEBE7esO+3u2/Gc9qr+/CQMAelp6ty7SQPGF8EYm7+VNst4uWZqAtEsmdsDKwfLDuLw0Xxs+9kF8d0/psYHvem7AZAFsAAhEeGPIDCILTBZcX9Jxsm511LLb5b3pBymPWNr9IAYkgQAg8EaWFvxA+77nDQP4fU+gpfSg7XgQacKAwKKwUqpFYKA77MoRGMQWLGXD1s5gxwwdTxeYHYghVKOVxUqpOtlcjT8BgOrS4/FMeOD1bL4nR2zDcXShI1DZdrFSWl5cLi1OrlUenR86G8/seD41dUkP1qLV8Uw+PGk7uu8f2hORLb/5JQpTV1I//nzFeXFn/N/8l6/SR6a+Tf0w+TmyO+NPAC36SwTUSJYTAAAAAElFTkSuQmCC'
  25. ,starign: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wgOBzkLYwp6HwAAAvZJREFUOMuNlEtIG1EUhv+ZPEYnajSJxQQsSgjNqjZGW2uhoCioRdHSrgpCsZvErkKlpIRiKQhBJUFFI7RSxZ0GDHGjG9sKpRTJxkElPhc11mQmpfiIGZXbhQ/U+MiBu7jnnvNx/nvOvUAS1t3dXdfV1fU0mVg6mSC1Wv1GrVbbAFBn/QSgCfCWAEokay6X6wXHcTsLCwt7Ho+n8QJsgACEAO5kK6R0Ot3rnJwcVqPRMJmZmdbW1laaABIAAwBeAvgOwHGSIL2O1tPTYzWZTIUne7PZXLjF8xYA9wE0AvgG4AkF7Nwotb29XTEyMjLD8zw5XZub5HdxsXAsc4IAqQmS2traHiiVyhK5XG5kWVbNMIxGKpVqWJbNMhqNWpZlJQCAw0OkNTeDGR1F1GTa+2G3B+M0HYnFYkIsFuNFUeSi0ehPqUqlMuXn578zm823riz38BBpVisYrxf7FRXA4GDKQ4a5e9ogQhAIBITV1dWPkvHx8ZnS0tIlURQfabXaxPbv7yO9qQmMzwexogLbQ0MgDHMuhOO49WAwaLNYLJ9OnW63+7Hf7w+eu7NQiMRraggBSLyykgihEDl3zvNkcnJypbe3t/pSZZ2dnQVer5eLRCJHsOrqI1htLeE3Ns6BIpEIGRsbm3O73cXXdrejo8P4dWIiHK+qOoLV1SXAeJ4nU1NTf5xO552L+QlzKA+FMgt9PpV8ehpifT22PB5AmjiuGRkZ6fF4XH4tkACp/4aHh9LDYYnY0ICtvr5LYQCQnZ3NZmVllQOYvRRIABaATxkOG+INDdg+hhFCsLS0JFAURen1ehVFHf0PLMtCoVAUXFrhMcwPoHy9qCiU0t+vIxSF1ZUVfm5ubkYQhA80Te8tLi469Hp9mcFgUFEUBYVCob1KsgdAOYDPAYejJGdtTTY/Px8QBOG9zWb7dSb+mcvlure8vOzIy8srk8lkuoSnd1zhbQCv2ltaelNyc78cHBy02Gy22RumwSyTyZy7u7vP7Xb73xP/f4cxclaSnWDmAAAAAElFTkSuQmCC'
  26. ,search: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABJdEVYdENvcHlyaWdodABQdWJsaWMgRG9tYWluIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL3B1YmxpY2RvbWFpbi9Zw/7KAAABTklEQVQokY2PP0hCYRTFf/eZFThULhG0F0UQ4djgZsaHS0FBUK7NTkFNRVNbGER/oEVoCnyfgptbNAdRYwQ5BqJS6Ou2fMoriTrbvef+uOeIqgJQLpfngyDYFpElYAh4E5GTWCx2lkwm3wlJVBXf97MicgoM0q/7SCSymE6n692FZ61dEJELB+RFJNHpdMZUdQ2oA3NBEFx9++T7fglYBm6MMSuAds1isTjled4j8BmNRidTqVQNwANm3U0+DABkMpknoAl47XY70YvnSiMiEz/LVKvVAaDh/NcwZAFUNVupVOJhqNFoHAPjQK3Vaj2EO00Dt8Ao8AIcAXEXe9Xd7RljDnqQqmKtTQIFoC+iUwfYMsYUepDLP9xsNjdVdUZERlT1DvgALh0YABvGmOse9JustTvAYfejqq7/CTlwF9h34/O/IIBSqZRT1Rxw/gU4l4oisfSMMQAAAABJRU5ErkJggg=='
  27. ,gear: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3gwZCB0WCaqqHgAAA3FJREFUOMulVN1LI1cUP2fuHchmQ12jMRKNRIwFG1jb3ARhxIbp0vSh6EP70AUpeWj/o1LYV5XtUx8Ka0ultKDJiB9MaAyCYASt+dB80padWZmZe/vQzDYyrvvQ83Tvub/7Ox+/cy8KIeA+SyaTHyLiAgAAIUQ7ODjYvQ9P4S0my/LPc3NzFADg5OTkFQC8cx9eGtyoqupTFOUZY2wZAIAx9phSKhRFkRVFkSVJkpPJ5Hv9s88URXmmqqpvkAPdkhVFeSCE+CUcDrNOp8Mdx6lxzkOZTGZoZmYGAQBOT095Pp//S5KkNiEkEgwGpWazqSPix7u7u+atkoUQ30YiEZbNZn2O40C3250lhMDIyMjr6LOzs9Lw8PAjzvmjYDAIhBDY2tpiV1dX3wDA17cIbdv+qdVqfeE4DlBKYWxs7M4ejY6OwsAd6HQ69s3NzQ+eHh4eHn5v23a92+16SGq1GtRqNY+/2WyCZVl/6Lq+6VGZMfZYluWQJP2n08XFhSgUCoZlWfW+4pGlpSX/1NQUAgBQSoFzPskYY7qu6wAAmEwmP6KU/kgp5YuLiw/i8Tj2ewobGxuGaZpPdV1/0Q+6HAgEvltdXQ24QSuVitA0zbRtW7Jt+1MJEdOJRILmcjm/SwYAcHl5CY7jVF0yAABd119YltUYLD8ej2Mul/MnEgmKiGkJAAAR7xQAEfkdPvEG7L+iIGKxXC6L9fV1o1KpvAZHo1EghERTqVTW9aVSqSwhJDIxMQGDJa+trRnlclkgYhGFEICIyBj7gFL628rKypA7Gufn57xQKJiO49T6bzmSyWT80WhUclXe3Nz807KsJ8VisSiEELQvgACAoqIoTc75kBs9FotJsVjsYbVafRcRYTAzdw4JIdW9vT3dM4fpdHqFEDIRDAY9/ZmcnPSQuUOOiNOMsU88hLIsfx4OhwkhBGzbhlarBb1ez0PS6/Wg1WqBbdsgyzKEQiHq8/meej6H+fn5h36//9fx8fH32+22wzlvOI4zpqpqYHp6GgEAzs7OxPb29t+EkDYhZDwUCpF6vf67YRhPSqXSy1sZlkqll4ioXl9fPzcM40tN0+KWZak7Ozumi8nn868sy1rSNG3GNM2vGo3Gc0RUXbJbGb7JFhYWzEQiQQEAjo+Pb/b39wP/68cWQiwfHR2x/vrwbfh/AK2fjH9FpXiPAAAAAElFTkSuQmCC'
  28. };
  29.  
  30. var options_db = 'n24h_options';
  31. var shows_db = 'n24h_shows';
  32. var au_ignore_db = 'n24h_authors_ignore';
  33. var tr_ignore_db = 'n24h_translations_ignore';
  34.  
  35. var utils = {
  36. /**
  37. Dodaj dodatkowego CSS'a do strony
  38. */
  39. insertcss: function(css) {
  40. var style = document.createElement('style');
  41. style.setAttribute('type', 'text/css');
  42. if (style.styleSheet)
  43. {
  44. style.styleSheet.cssText = css;
  45. } else {
  46. style.appendChild(document.createTextNode(css));
  47. }
  48. document.head.appendChild(style);
  49. }
  50. };
  51.  
  52. /**
  53. Obsługa opcji
  54. */
  55. var options = {
  56. /**
  57. Zapisz wartość
  58. */
  59. setValue: function(name, value) {
  60. var optdb=localStorage.getItem(options_db);
  61.  
  62. if (!optdb)
  63. optdb='{}';
  64. var o=JSON.parse(optdb);
  65.  
  66. o[name]=value;
  67. localStorage.setItem(options_db, JSON.stringify(o));
  68. },
  69. /**
  70. Pobierz wartość
  71. */
  72. getValue: function(name, def) {
  73. var optdb=localStorage.getItem(options_db);
  74.  
  75. if (!optdb)
  76. optdb='{}';
  77. var o=JSON.parse(optdb);
  78.  
  79. var value=o[name];
  80. if (value==null)
  81. value=def;
  82.  
  83. return value;
  84. },
  85. /**
  86. Usuń klucz z opcji
  87. */
  88. remove: function(name) {
  89. var optdb=localStorage.getItem(options_db);
  90.  
  91. if (!optdb)
  92. optdb='{}';
  93. var o=JSON.parse(optdb);
  94.  
  95. delete o[name];
  96. localStorage.setItem(options_db, JSON.stringify(o));
  97.  
  98. },
  99. /**
  100. Pokaż/ukryj checkboxy w zależności od innych opcji
  101. */
  102. showHideCheckboxs: function() {
  103. var n24info=document.querySelector('input[data-n24h-checkbox="shown24info"]');
  104. var useimdb=document.querySelector('input[data-n24h-checkbox="useimdbinfo"]');
  105. if (n24info.checked)
  106. useimdb.parentNode.setAttribute('style', 'display:block');
  107. else
  108. useimdb.parentNode.setAttribute('style', 'display:none');
  109. var altskins=document.querySelectorAll('input[data-n24h-radio="altskinid"]');
  110. var usealtskin=document.querySelector('input[data-n24h-checkbox="usealtskin"]');
  111. for (var i=0;i<altskins.length;i++)
  112. altskins[i].parentNode.setAttribute('style', usealtskin.checked?'display:block':'display:none');
  113. },
  114. /**
  115. Wypełnij panele aktualnymi ustawieniami, serialami, itp.
  116. */
  117. fillPanels: function() {
  118. //checkboxy
  119. var checkboxs=document.querySelectorAll('input[data-n24h-checkbox]');
  120. for (var i=0;i<checkboxs.length;i++)
  121. {
  122. checkboxs[i].checked=options.getValue(checkboxs[i].getAttribute('data-n24h-checkbox'), false);
  123. }
  124. //seriale
  125. var keywords=db.getAll(shows_db);
  126. var areashows=document.getElementById('n24h_opt_areashows');
  127. var showtext='';
  128. for (var i=0;i<keywords.length;i++)
  129. {
  130. if (showtext!='')
  131. showtext+='\n';
  132. showtext+=keywords[i];
  133. }
  134. areashows.value=showtext;
  135. //pomijani autorzy
  136. var authors=db.getAll(au_ignore_db);
  137. var areaauthors=document.getElementById('n24h_opt_areaignore');
  138. var authorstext='';
  139. for (var i=0;i<authors.length;i++)
  140. {
  141. if (authorstext!='')
  142. authorstext+='\n';
  143. authorstext+=authors[i];
  144. }
  145. areaauthors.value=authorstext;
  146. //debug
  147. var areadebug=document.getElementById('n24h_opt_areadebug');
  148. var debugtext='/**opcje**/\n';
  149. debugtext+=localStorage.getItem(options_db);
  150. debugtext+='\n\n/**seriale**/\n';
  151. debugtext+=localStorage.getItem(shows_db);
  152. debugtext+='\n\n/**pomijani autorzy**/\n';
  153. debugtext+=localStorage.getItem(au_ignore_db);
  154. debugtext+='\n\n/**pomijane tłumaczenia**/\n';
  155. debugtext+=localStorage.getItem(tr_ignore_db);
  156. areadebug.value=debugtext;
  157. var radios=document.querySelectorAll('input[data-n24h-radio]');
  158. for (var i=0;i<radios.length;i++)
  159. radios[i].checked=radios[i].getAttribute('data-n24h-radio_id')===options.getValue(radios[i].getAttribute('data-n24h-radio'), '1');
  160. options.showHideCheckboxs();
  161. },
  162. /**
  163. Pokaż panel opcji
  164. */
  165. show: function() {
  166. options.fillPanels();
  167. var panel=document.querySelector('div.n24h_options_background');
  168. panel.setAttribute('style', 'display:block');
  169. },
  170. /**
  171. Ukryj panel opcji
  172. */
  173. hide: function() {
  174. var panel=document.querySelector('div.n24h_options_background');
  175. panel.setAttribute('style', 'display:none');
  176. },
  177. /**
  178. Obsługa kliknięcia checkboxa
  179. */
  180. checkboxClick: function(e) {
  181. e = e || window.event;
  182. var target = e.target || e.srcElement;
  183. options.setValue(target.getAttribute('data-n24h-checkbox'), target.checked);
  184. options.showHideCheckboxs();
  185. options.showSaveInfo();
  186. },
  187. /**
  188. Obsługa kliknięcia radiobuttona
  189. */
  190. radioClick: function(e) {
  191. e = e || window.event;
  192. var target = e.target || e.srcElement;
  193. options.setValue(target.getAttribute('data-n24h-radio'), target.getAttribute('data-n24h-radio_id'));
  194. options.showSaveInfo();
  195. },
  196. /**
  197. Obsługa kliknięcia przycisku sekcji
  198. */
  199. typeButtonClick: function(e) {
  200. e = e || window.event;
  201. var target = e.target || e.srcElement;
  202. var panel = target.getAttribute('data-n24h-optiontype');
  203. var opt_panels=document.querySelectorAll('div[data-n24h-optionpanel]');
  204. for (var i=0;i<opt_panels.length;i++)
  205. {
  206. opt_panels[i].setAttribute('style', panel==opt_panels[i].getAttribute('data-n24h-optionpanel')?'display:block':'display:none');
  207. }
  208. var opt_buttons=document.querySelectorAll('div[data-n24h-optiontype]');
  209. for (var i=0;i<opt_buttons.length;i++)
  210. {
  211. opt_buttons[i].setAttribute('class', panel==opt_buttons[i].getAttribute('data-n24h-optiontype')?'n24h_options_panel_button n24h_options_panel_button_selected':'n24h_options_panel_button');
  212. }
  213. options.fillPanels();
  214. },
  215. /**
  216. Obsługa przycisku zapisz
  217. */
  218. btnSaveClick: function() {
  219. var areashows=document.getElementById('n24h_opt_areashows');
  220. var shows = areashows.value.split('\n');
  221. var title;
  222. localStorage.removeItem(shows_db);
  223. for (var i=0;i<shows.length;i++)
  224. {
  225. title=shows[i];
  226. if (options.getValue('titleremoveyear', false))
  227. title=title.trim().replace(/\(\d{4}\)/g, '');
  228. if (options.getValue('titleremoveapostrophe', false))
  229. title=title.trim().replace(/'|’|`/g, '');
  230. title=title.trim();
  231. console.log(title);
  232. if (title != null && title != '' && !db.exists(shows_db, title))
  233. db.add(shows_db, title);
  234. }
  235. options.fillPanels();
  236. options.showSaveInfo();
  237. },
  238. btnAuthorsSaveClick: function() {
  239. var areaauthors=document.getElementById('n24h_opt_areaignore');
  240. var authors = areaauthors.value.split('\n');
  241. var author;
  242. localStorage.removeItem(au_ignore_db);
  243. for (var i=0;i<authors.length;i++)
  244. {
  245. author=authors[i].trim();
  246. console.log(author);
  247. if (author != null && author != '' && !db.exists(au_ignore_db, author))
  248. db.add(au_ignore_db, author);
  249. }
  250. options.fillPanels();
  251. options.showSaveInfo();
  252. },
  253. /**
  254. Obsługa przycisku usuwania opcji
  255. */
  256. btnKillOptClick: function() {
  257. if (confirm('Czy na pewno chcesz usunąć wszystkie ustawienia?\nNie będzie można tego cofnąć.')) {
  258. localStorage.removeItem(options_db);
  259. options.showSaveInfo();
  260. }
  261. options.fillPanels();
  262. },
  263. /**
  264. Obsługa przycisku usuwania seriali
  265. */
  266. btnKillShowsClick: function() {
  267. if (confirm('Czy na pewno chcesz usunąć wszystkie ulubione filmy/seriale?\nNie będzie można tego cofnąć.')) {
  268. localStorage.removeItem(shows_db);
  269. options.showSaveInfo();
  270. }
  271. options.fillPanels();
  272. },
  273. btnKillIgnAu: function() {
  274. if (confirm('Czy na pewno chcesz usunąć wszystkich pomijanych autorów?\nNie będzie można tego cofnąć.')) {
  275. localStorage.removeItem(au_ignore_db);
  276. options.showSaveInfo();
  277. }
  278. options.fillPanels();
  279. },
  280. btnKillIgnTr: function() {
  281. if (confirm('Czy na pewno chcesz usunąć wszystkie pomijane tłumaczenia?\nNie będzie można tego cofnąć.')) {
  282. localStorage.removeItem(tr_ignore_db);
  283. options.showSaveInfo();
  284. }
  285. options.fillPanels();
  286. },
  287. savetimeout: null,
  288. showSaveInfo: function() {
  289. var saveinfo=document.querySelector('#n24h_options_saved');
  290. if (saveinfo)
  291. {
  292. clearTimeout(options.savetimeout);
  293. saveinfo.style.display='block';
  294. options.savetimeout=setTimeout(options.hideSaveInfo,1000);
  295. }
  296. },
  297. hideSaveInfo: function() {
  298. var saveinfo=document.querySelector('#n24h_options_saved');
  299. if (saveinfo)
  300. saveinfo.style.display='none';
  301. },
  302. init: function() {
  303. var css='#n24h_options_gear{'+
  304. 'cursor:pointer;'+
  305. 'width:20px;'+
  306. 'line-height: 26px;'+
  307. '}'+
  308. '.n24h_options_background{'+
  309. 'position:fixed;'+
  310. 'top:0;'+
  311. 'left:0;'+
  312. 'width:100%;'+
  313. 'height:100%;'+
  314. 'background:rgba(0,0,0,0.6);'+
  315. 'text-align:center;'+
  316. 'z-index:9999;'+
  317. '}'+
  318. '.n24h_options_dialog{'+
  319. 'margin: 0px auto;'+
  320. 'padding: 50px 0px;'+
  321. 'width: 900px;'+
  322. 'height: 100%;'+
  323. 'transition: none 0s ease 0s;'+
  324. 'transform: none;'+
  325. 'position: relative;'+
  326. 'box-sizing: border-box;'+
  327. '}'+
  328. '.n24h_options_content{'+
  329. 'max-height: 100%;'+
  330. 'overflow-y: auto;'+
  331. 'border: 4px solid rgba(85, 85, 85, 0.5);'+
  332. 'background-clip: padding-box;'+
  333. 'box-shadow: 0px 3px 7px rgba(0, 0, 0, 0.3);'+
  334. 'border-radius: 13px;'+
  335. 'position: relative;'+
  336. 'outline: 0px none;'+
  337. 'background-color: #FFF;'+
  338. 'box-sizing: border-box;'+
  339. 'color: #303030;'+
  340. 'font-family: Arial,Helvetica,sans-serif;'+
  341. 'text-align:left;'+
  342. 'display: block;'+
  343. '}'+
  344. '.n24h_options_header{'+
  345. 'margin: 0px;'+
  346. 'border-bottom: 1px solid #A0A0A0;'+
  347. 'padding: 10px 10px 0px 10px;'+
  348. '}'+
  349. '.n24h_options_body{'+
  350. 'display: table;'+
  351. 'min-height: 150px;'+
  352. '}'+
  353. '.n24h_options_body>input{'+
  354. 'margin: 0px;'+
  355. '}'+
  356. '.n24h_options_close{'+
  357. 'float:right;'+
  358. 'padding: 0px;'+
  359. 'border: 1px solid;'+
  360. 'cursor:pointer;'+
  361. 'margin-top: -25px;'+
  362. 'padding: 1px 3px 1px 3px;'+
  363. 'border-radius: 5px;'+
  364. 'background: linear-gradient(#EDEEEE, #E2E3E3);'+
  365. '}'+
  366. '.n24h_options_close:hover{'+
  367. 'background-color: #D0D0D0;'+
  368. 'border-color: #646F7C;'+
  369. '}'+
  370. '.n24h_options_panel_l{'+
  371. 'padding: 10px;'+
  372. 'border-right: 1px solid #A0A0A0;'+
  373. 'display: table-cell;'+
  374. 'position: relative;'+
  375. '}'+
  376. '.n24h_options_panel_r{'+
  377. 'padding: 10px;'+
  378. 'width: 750px;'+
  379. '}'+
  380. '.n24h_options_panel_button{'+
  381. 'cursor: pointer;'+
  382. 'background-color: #D5D5D5;'+
  383. 'border: 1px solid #000000;'+
  384. 'border-bottom: 3px solid #000000;'+
  385. 'padding: 5px 10px 5px 10px;'+
  386. 'margin-bottom: 2px;'+
  387. '}'+
  388. '.n24h_options_panel_button:hover{'+
  389. 'background-color: #E0E0E0;'+
  390. 'border-radius: 0px 0px 3px 3px;'+
  391. 'border-bottom: 3px solid #D26911;'+
  392. '}'+
  393. '.n24h_options_panel_button_selected{'+
  394. 'border-radius: 0px 0px 3px 3px;'+
  395. 'border-bottom: 3px solid #F21911;'+
  396. '}'+
  397. '.n24h_opt_button{'+
  398. 'background-color: #D5D5D5;'+
  399. 'border: 1px solid #000000;'+
  400. 'border-bottom: 3px solid #000000;'+
  401. 'padding: 3px 5px 3px 5px;'+
  402. 'margin-top: 5px;'+
  403. 'margin-right: 5px;'+
  404. '}'+
  405. '.n24h_opt_button:hover{'+
  406. 'background-color: #E0E0E0;'+
  407. 'border-radius: 0px 0px 3px 3px;'+
  408. 'border-bottom: 3px solid #D26911;'+
  409. '}'+
  410. '.n24h_opt_area{'+
  411. 'width: 100%;'+
  412. 'height: auto;'+
  413. 'cursor: auto !important;'+
  414. 'margin-bottom: 0px;'+
  415. 'background-color: #EEEEEE;'+
  416. 'color: #555555;'+
  417. 'border: 1px solid #CCCCCC;'+
  418. 'margin-left: 0px;'+
  419. 'padding: 5px;'+
  420. '}'+
  421. '.n24h_opt_area:focus{'+
  422. 'color: #555555;'+
  423. '}'+
  424. '.n24h_options_panel_r > label{'+
  425. 'margin-bottom: 0px;'+
  426. '}'+
  427. '.n24h_options_panel_r > label > input{'+
  428. 'margin: 0px;'+
  429. 'margin-top: -4px;'+
  430. 'display: inline;'+
  431. '}'+
  432. '.n24_option_level2{'+
  433. 'margin-left:30px;'+
  434. '}';
  435.  
  436. var ul=document.querySelector('ul.avatar-main-menu-szare');
  437. if (!ul)
  438. return;
  439. utils.insertcss(css);
  440. var li=document.createElement('li'); //panel z opcjami
  441. li.setAttribute('id', 'n24h_options_gear');
  442. li.setAttribute('title', 'napisy24.pl helper opcje');
  443. li.addEventListener('click', options.show, false);
  444. var img=document.createElement('img');
  445. img.setAttribute('src', icons.gear);
  446. img.setAttribute('style', 'margin-top: -5px;');
  447. li.appendChild(img);
  448. ul.appendChild(li);
  449. var panel = document.createElement('div');
  450. panel.innerHTML='<div class="n24h_options_background" style="display:none">'+
  451. '<div class="n24h_options_dialog">'+
  452. '<div class="n24h_options_content">'+
  453. '<div class="n24h_options_header">'+
  454. '<img src="'+icons.gear+'" style="margin-top: -5px;padding-right: 5px;">Opcje:<br/>'+
  455. '<span style="color:red;font-size:small;">Zmiana opcji wymaga przeładowania strony.</span>'+
  456. '<div class="n24h_options_close">X</div>'+
  457. '<span id="n24h_options_saved" style="color:green;font-size:small;float:right;display:none;">Zapisane</span>'+
  458. '</div>'+
  459. '<div class="n24h_options_body">'+
  460. '<div class="n24h_options_panel_l">'+
  461. '<div class="n24h_options_panel_button n24h_options_panel_button_selected" data-n24h-optiontype="general">Ogólne</div>'+
  462. '<div class="n24h_options_panel_button" data-n24h-optiontype="shows">Seriale</div>'+
  463. '<div class="n24h_options_panel_button" data-n24h-optiontype="ignore">Pomijane</div>'+
  464. '<div class="n24h_options_panel_button" data-n24h-optiontype="debug">Debug</div>'+
  465. '</div>'+
  466. '<div class="n24h_options_panel_r" data-n24h-optionpanel="general">'+
  467. '<label><input type="checkbox" data-n24h-checkbox="fixsearch"> Zapamiętaj tekst w wyszukiwarce</label>'+
  468. '<label><input type="checkbox" data-n24h-checkbox="killcover"> Usuń okładki filmów/seriali</label>'+
  469. '<label><input type="checkbox" data-n24h-checkbox="killimdbinfo"> Usuń info o serialu/ocenę IMDB</label>'+
  470. '<label><input type="checkbox" data-n24h-checkbox="hideemotspanel"> Ukrywaj panel z emotikonami i dodawaniem komentarza</label>'+
  471. '<label><input type="checkbox" data-n24h-checkbox="fixcomments"> W komentarzach propozycję poprawek wyświetlaj czcionką o stałej szerokości</label>'+
  472. '<label><input type="checkbox" data-n24h-checkbox="shown24info"> Na stronie z tłumaczeniami pokaż info N24/IMDB</label>'+
  473. '<label class="n24_option_level2" style="display:none"><input type="checkbox" data-n24h-checkbox="useimdbinfo"> Zastąp info N24 linkiem do IMDB</label>'+
  474. '<label><input type="checkbox" data-n24h-checkbox="usealtskin"> Używaj alternatywnej skórki</label>'+
  475. '<label class="n24_option_level2" style="display:none"><input type="radio" name="n24h_altskinid" data-n24h-radio="altskinid" data-n24h-radio_id="1"> szara</label>'+
  476. '<label class="n24_option_level2" style="display:none"><input type="radio" name="n24h_altskinid" data-n24h-radio="altskinid" data-n24h-radio_id="2"> n24 classic</label>'+
  477. '<label><input type="checkbox" data-n24h-checkbox="usesmallmenubuttons"> Zmniejsz rozmiar przycisków menu</label>'+
  478. '<label><input type="checkbox" data-n24h-checkbox="removetargetblank"> Usuń target="_blank" ze wszystkich odnośników (nie otwieraj w nowej karcie)</label>'+
  479. '<label><input type="checkbox" data-n24h-checkbox="addemptyrow"> Dodaj pusty wiersz po ostatnim ulubionym filmie/serialu</label>'+
  480. '</div>'+
  481. '<div style="display:none" class="n24h_options_panel_r" data-n24h-optionpanel="shows">'+
  482. '<span>Ulubione filmy/seriale (jeden film/serial na linię)</span>'+
  483. '<textarea id="n24h_opt_areashows" class="n24h_opt_area" rows="15" ></textarea>'+
  484. '<label><input type="checkbox" data-n24h-checkbox="titleremoveyear"> Usuń rok (RRRR) z nazwy filmu/serialu</label>'+
  485. '<label><input type="checkbox" data-n24h-checkbox="titleremoveapostrophe"> Usuń apostrofy ( \' ’ ` ) z nazwy filmu/serialu</label>'+
  486. '<button id="n24h_opt_btn_save" class="n24h_opt_button">Zapisz</button>'+
  487. '</div>'+
  488. '<div style="display:none" class="n24h_options_panel_r" data-n24h-optionpanel="ignore">'+
  489. '<span>Tłumaczenia tych autorów są pomijane na liście ulubionych (jeden autor na linię)</span>'+
  490. '<textarea id="n24h_opt_areaignore" class="n24h_opt_area" rows="15" ></textarea>'+
  491. '<label><input type="checkbox" data-n24h-checkbox="autokillignoretranslations"> Automatycznie usuwaj pomijane tłumaczenia jeżeli nie ma ich w tabelce z tłumaczeniami</label>'+
  492. '<button id="n24h_opt_btn_ignoresave" class="n24h_opt_button">Zapisz</button>'+
  493. '</div>'+
  494. '<div style="display:none" class="n24h_options_panel_r" data-n24h-optionpanel="debug">'+
  495. '<span>Informacje do debugowania</span>'+
  496. '<textarea id="n24h_opt_areadebug" rows="10" class="n24h_opt_area" readOnly></textarea>'+
  497. '<button id="n24h_opt_btn_killshows" class="n24h_opt_button">Usuń wszystkie ulubione filmy/seriale</button>'+
  498. '<button id="n24h_opt_btn_ignoreaukill" class="n24h_opt_button">Usuń wszystkich pomijanych autorów</button>'+
  499. '<button id="n24h_opt_btn_ignorekill" class="n24h_opt_button">Usuń wszystkie pomijane tłumaczenia (bez autorów)</button>'+
  500. '<button id="n24h_opt_btn_killopt" class="n24h_opt_button">Usuń wszystkie ustawienia (bez filmów/seriali i opcji pomijania)</button>'+
  501. '</div>'+
  502. '</div>'+
  503. '</div>'+
  504. '</div>'+
  505. '</div>';
  506. document.body.appendChild(panel);
  507. //przycisk zapisz
  508. var close=document.querySelector('div.n24h_options_close');
  509. close.addEventListener('click', options.hide, false);
  510. //checkboxy
  511. var opt_checkboxs=document.querySelectorAll('input[data-n24h-checkbox]');
  512. for (var i=0;i<opt_checkboxs.length;i++)
  513. opt_checkboxs[i].addEventListener('change', options.checkboxClick, false);
  514. //radio
  515. var opt_radios=document.querySelectorAll('input[data-n24h-radio]');
  516. for (var i=0;i<opt_radios.length;i++)
  517. opt_radios[i].addEventListener('change', options.radioClick, false);
  518. //sekcje
  519. var opt_types=document.querySelectorAll('div[data-n24h-optiontype]');
  520. for (var i=0;i<opt_types.length;i++)
  521. opt_types[i].addEventListener('click', options.typeButtonClick, false);
  522. //przycisk zapisz
  523. var opt_btn_save=document.getElementById('n24h_opt_btn_save');
  524. opt_btn_save.addEventListener('click', options.btnSaveClick, false);
  525. var opt_btn_authorsave=document.getElementById('n24h_opt_btn_ignoresave');
  526. opt_btn_authorsave.addEventListener('click', options.btnAuthorsSaveClick, false);
  527. //usuń opcje
  528. var opt_btn_killopt=document.getElementById('n24h_opt_btn_killopt');
  529. opt_btn_killopt.addEventListener('click', options.btnKillOptClick, false);
  530. //usuń seriale
  531. var opt_btn_killshows=document.getElementById('n24h_opt_btn_killshows');
  532. opt_btn_killshows.addEventListener('click', options.btnKillShowsClick, false);
  533. //usuń pomijanych autorów
  534. var opt_btn_killignau=document.getElementById('n24h_opt_btn_ignoreaukill');
  535. opt_btn_killignau.addEventListener('click', options.btnKillIgnAu, false);
  536. //usuń pomijane tłumaczenia
  537. var opt_btn_killigntr=document.getElementById('n24h_opt_btn_ignorekill');
  538. opt_btn_killigntr.addEventListener('click', options.btnKillIgnTr, false);
  539. }
  540. };
  541.  
  542. var db = {
  543. all: null,
  544. upper: null,
  545. /**
  546. Pobiera tablicę fraz-kluczy.
  547. */
  548. getAll: function(db_name) {
  549. var keywords = localStorage.getItem(db_name);
  550. this.all = (keywords != null && keywords != '') ? JSON.parse(keywords) : [];
  551. return this.all;
  552. },
  553. /**
  554. Pobiera tablicę fraz-kluczy.
  555. */
  556. exists: function(db_name, keyword) {
  557. var keywords = localStorage.getItem(db_name);
  558. this.upper = (keywords != null && keywords != '') ? JSON.parse(keywords.toUpperCase()) : [];
  559. return this.upper.indexOf(keyword.toUpperCase()) < 0 ? false : true;
  560. },
  561. /**
  562. Dodaje keyword do tablicy fraz-kluczy.
  563. */
  564. add: function(db_name, keyword) {
  565. if (!this.exists(db_name, keyword))
  566. {
  567. this.getAll(db_name);
  568. this.all = this.all.concat([keyword]);
  569. localStorage.setItem(db_name, JSON.stringify(this.all));
  570. return 1;
  571. }
  572. return 0;
  573. },
  574. /**
  575. Usuwa keyword z tablicy fraz-kluczy.
  576. */
  577. remove: function(db_name, keyword) {
  578. if (this.exists(db_name, keyword))
  579. {
  580. this.getAll(db_name);
  581. this.all.splice(this.upper.indexOf(keyword.toUpperCase()), 1);
  582. localStorage.setItem(db_name, JSON.stringify(this.all));
  583. return 1;
  584. }
  585. return 0;
  586. }
  587. };
  588.  
  589. /**
  590. Strona z tłumaczeniami
  591. */
  592. var tlumaczenia = {
  593. /**
  594. Pobierz nazwę filmu/serialu bez numeru sezonu i odcinka/odcinków
  595. */
  596. getTitle: function(row) {
  597. var title=row.getAttribute('data-head');
  598. //oczyść tytuł ze wszystkich śmieci i numeru serii oraz odcinka/odcinków
  599. title=title.trim().replace(/\d+x\d+.*/, '');
  600. //usuń rok
  601. if (options.getValue('titleremoveyear', false))
  602. title=title.trim().replace(/\(\d{4}\)/g, '');
  603. //usuń apostrofy
  604. if (options.getValue('titleremoveapostrophe', false))
  605. title=title.trim().replace(/'|’|`/g, '');
  606. //usuń spacje na końcu która pozostała po wywaleniu numeru serii i odcina
  607. title=title.trim();
  608. return title;
  609. },
  610. /**
  611. Pobierz autora napisów
  612. */
  613. getAuthor: function(row) {
  614. return author=row.querySelector('a[href*="profile/userprofile/"]').textContent.trim();
  615. },
  616. /**
  617. Pobierz ID tłumaczenia
  618. */
  619. getTID: function(row) {
  620. return row.querySelector('input[data-tid]').getAttribute('data-tid').trim();
  621. },
  622. /**
  623. Zrób zebrę od nowa
  624. */
  625. restyleRows: function() {
  626. var rows=document.querySelectorAll('table#translationsTable > tbody > tr:not([style*="none"])');
  627. for (var i=0;i<rows.length;i++) {
  628. var trcl=rows[i].getAttribute('class');
  629. trcl=trcl.replace(/(odd|even)/, '');
  630. if (i%2)
  631. {
  632. rows[i].setAttribute('class', trcl+' odd');
  633. } else {
  634. rows[i].setAttribute('class', trcl+' even');
  635. }
  636. }
  637. },
  638. /**
  639. Przenieś wiersz na szczyt listy
  640. */
  641. moveTop: function(row) {
  642. //znajdź tabelkę z tłumaczeniami
  643. var table=document.querySelector('table#translationsTable > tbody');
  644. //znajdź pierwszy wiersz tabelki
  645. var first_line=table.querySelector('tr');
  646. //wstaw przed pierwszy wiersz nasz wiersz
  647. table.insertBefore(row,first_line);
  648. var td=row.querySelector('td[data-n24h-star]');
  649. td.setAttribute('data-n24h-star', 'on');
  650. },
  651. /**
  652. Umieść ulubione filmy/seriale na szczycie listy
  653. */
  654. FavoriteOnTop: function() {
  655. /**
  656. Dla każdego wiersza w tabeli...
  657. Od końca do początku, żeby zachować kolejność sortowania
  658. */
  659. tlumaczenia.RemoveEmptyRow();
  660. var rows=document.querySelectorAll('table#translationsTable > tbody > tr');
  661. for (var i=rows.length-1;i>=0;i--)
  662. {
  663. var row=rows[i];
  664. /**
  665. Wyciąga tytuł i oczyszcza go ze zbędnych znaków.
  666. */
  667. var title=tlumaczenia.getTitle(row);
  668. var star=row.querySelector('td[data-n24h-star]');
  669. if (db.exists(shows_db, title))
  670. {
  671. //Znaleziono dopasowanie.
  672. if (db.exists(au_ignore_db, tlumaczenia.getAuthor(row))) {
  673. //autor jest na liście pomijanych nie przenosimy na górę
  674. star.setAttribute('data-n24h-star', 'auign');
  675. } else if (db.exists(tr_ignore_db, tlumaczenia.getTID(row))) {
  676. //tłumaczenie jest na liście pomijanych nie przenosimy na górę
  677. star.setAttribute('data-n24h-star', 'trign');
  678. } else {
  679. tlumaczenia.moveTop(row);
  680. }
  681. } else {
  682. //Nie ma dopasowania
  683. //Wyczyść na wszelki wypadek gwiazdkę
  684. star.setAttribute('data-n24h-star', 'off');
  685. }
  686. }
  687. if (options.getValue('addemptyrow', false)) {
  688. var stars=document.querySelectorAll('table#translationsTable>tbody>tr>td[data-n24h-star="on"]');
  689. if (stars.length > 0)
  690. {
  691. var table=document.querySelector('table#translationsTable > tbody');
  692. var star=stars[stars.length-1];
  693. if (star)
  694. {
  695. var staroff=star.parentNode.nextSibling;
  696. var emptyrow=document.createElement('tr');
  697. emptyrow.setAttribute('id', 'n24h_emptyrow');
  698. emptyrow.setAttribute('class', 'hoverable');
  699. emptyrow.innerHTML='<td colspan="7"><div>&nbsp;</div></td>';
  700. table.insertBefore(emptyrow,staroff);
  701. }
  702. }
  703. }
  704. tlumaczenia.restyleRows();
  705. },
  706. /**
  707. Ustaw informację o kierunku sortowania w nagłówku tabelki
  708. */
  709. SetColumnHeader: function(col, reverse) {
  710. var header=document.querySelectorAll('table#translationsTable>thead>tr>th.header');
  711. for (var i=0;i<header.length;i++)
  712. {
  713. if ((i==col)&&(reverse==1))
  714. header[i].setAttribute('class', 'header n24h_sort_asc')
  715. else if ((i==col)&&(reverse==-1))
  716. header[i].setAttribute('class', 'header n24h_sort_desc')
  717. else {
  718. var thcl=header[i].getAttribute('class');
  719. thcl=thcl.replace(/(n24h_sort_asc|n24h_sort_desc)/, '');
  720. header[i].setAttribute('class', thcl);
  721. }
  722. }
  723. },
  724. /**
  725. Sortowanie tabelki z tłumaczeniami
  726. */
  727. sortTable: function(col, reverse) {
  728. tlumaczenia.RemoveEmptyRow();
  729. var table=document.querySelector('table#translationsTable');
  730. col = typeof col !== 'undefined' ? col : options.getValue('column', 4);
  731. reverse = typeof reverse !== 'undefined' ? reverse : options.getValue('reverse', 1);
  732. var tb = table.tBodies[0],
  733. tr = Array.prototype.slice.call(tb.rows, 0),
  734. i;
  735. reverse = -((+reverse) || -1);
  736. tr = tr.sort(function (a, b) { // sort rows
  737. var atext=a.cells[col].textContent.trim();
  738. var btext=b.cells[col].textContent.trim();
  739. if ((col==3)||(col==4))
  740. {
  741. //Kolumna 3: "Postęp"
  742. //Kolumna 4: "Oczekujący"
  743. //trzeba usunąć znaki: procentu, plus i minus oraz zamienić na numerek
  744. avalue=Number(atext.replace(/[\+\-\%]/g, ''));
  745. bvalue=Number(btext.replace(/[\+\-\%]/g, ''));
  746. return reverse==1?avalue-bvalue:bvalue-avalue;
  747. } else {
  748. return reverse * (atext.localeCompare(btext));
  749. }
  750. });
  751. for(i = 0; i < tr.length; ++i)
  752. {
  753. tb.appendChild(tr[i]);
  754. }
  755.  
  756. //zapisz ustawienia sortowania
  757. options.setValue('column', col);
  758. options.setValue('reverse', -((+reverse) || -1));
  759. //ustaw nagłówek
  760. tlumaczenia.SetColumnHeader(col, reverse);
  761. //przesuń ulubione na samą górę
  762. tlumaczenia.FavoriteOnTop();
  763. },
  764. /**
  765. Obsługa kliknięcia w gwiazdkę
  766. */
  767. StarClickHandler: function(e) {
  768. e = e || window.event;
  769. var target = e.target || e.srcElement;
  770. var row=target.parentNode;
  771. var title=tlumaczenia.getTitle(row);
  772. if (this.getAttribute('data-n24h-star')==='on') {
  773. //Przestań śledzić...
  774. tlumaczenia.RemoveTitle(title);
  775. } else if (this.getAttribute('data-n24h-star')==='off') {
  776. //Zacznij śledzić...
  777. var keyword = prompt('Podaj tytuł filmu lub serialu\nbez numeracji sezonu/odcinka:', tlumaczenia.getTitle(row));
  778. tlumaczenia.AddTitle(keyword);
  779. }
  780. },
  781. /**
  782. Menu pomijania
  783. */
  784. IgnoreMenuHandler: function(e) {
  785. if (this.getAttribute('data-n24h-star')!='off') {
  786. e.preventDefault();
  787. e = e || window.event;
  788. var target = e.target || e.srcElement;
  789. var row=target.parentNode;
  790. var rmenubg=document.querySelector('div.n24h_menu_background');
  791. rmenubg.setAttribute('style', 'display:block');
  792. document.getElementById("n24h_rmenu").style.top = e.clientY + 'px';
  793. document.getElementById("n24h_rmenu").style.left = e.clientX + 'px';
  794. var rmenu=document.querySelector('div#n24h_rmenu');
  795. rmenu.setAttribute('data-n24h-ign-tid', tlumaczenia.getTID(row));
  796. rmenu.setAttribute('data-n24h-ign-aut', tlumaczenia.getAuthor(row));
  797. // console.log('Autor: '+author+', TID: '+tid);
  798. if (this.getAttribute('data-n24h-star')=='on') {
  799. document.getElementById("n24h_start_auign").style.display = 'block';
  800. document.getElementById("n24h_start_trign").style.display = 'block';
  801. document.getElementById("n24h_stop_auign").style.display = 'none';
  802. document.getElementById("n24h_stop_trign").style.display = 'none';
  803. } else if(this.getAttribute('data-n24h-star')=='auign') {
  804. document.getElementById("n24h_start_auign").style.display = 'none';
  805. document.getElementById("n24h_start_trign").style.display = 'none';
  806. document.getElementById("n24h_stop_auign").style.display = 'block';
  807. document.getElementById("n24h_stop_trign").style.display = 'none';
  808. } else if(this.getAttribute('data-n24h-star')=='trign') {
  809. document.getElementById("n24h_start_auign").style.display = 'none';
  810. document.getElementById("n24h_start_trign").style.display = 'none';
  811. document.getElementById("n24h_stop_auign").style.display = 'none';
  812. document.getElementById("n24h_stop_trign").style.display = 'block';
  813. }
  814. }
  815. },
  816. IgnoreMenuClick: function(e) {
  817. e = e || window.event;
  818. var target = e.target || e.srcElement;
  819. var author=target.parentNode.parentNode.getAttribute('data-n24h-ign-aut');
  820. var tid=target.parentNode.parentNode.getAttribute('data-n24h-ign-tid');
  821. var event=target.getAttribute('id');
  822. if (event=='n24h_start_auign')
  823. db.add(au_ignore_db, author);
  824. if (event=='n24h_start_trign')
  825. db.add(tr_ignore_db, tid);
  826. if (event=='n24h_stop_auign')
  827. db.remove(au_ignore_db, author);
  828. if (event=='n24h_stop_trign')
  829. db.remove(tr_ignore_db, tid);
  830. tlumaczenia.HideRMenu();
  831. tlumaczenia.sortTable();
  832. },
  833. /**
  834. Szukanie filmu/serialu na liście tłumaczonych
  835. */
  836. DoSearch: function() {
  837. var keyword = document.querySelector('input#n24h_tr_input_search').value.trim().toUpperCase();
  838. var rows=document.querySelectorAll('table#translationsTable > tbody > tr:not(#n24h_emptyrow)');
  839. for (var i=0;i<rows.length;i++)
  840. {
  841. var row=rows[i];
  842. var title=tlumaczenia.getTitle(row).toUpperCase();
  843. if (keyword == null || keyword == '')
  844. {
  845. //pokazujemy wszystkie rekordy
  846. row.style.display='table-row';
  847. } else if (title.indexOf(keyword)!=-1)
  848. {
  849. row.style.display='table-row';
  850. } else {
  851. row.style.display='none';
  852. }
  853. }
  854. tlumaczenia.restyleRows();
  855. },
  856. /**
  857. Obsługa szukania z uwzględnieniem przycisku ESC
  858. */
  859. SearchHandler: function(e) {
  860. e = e || window.event;
  861. if (e.keyCode==27)
  862. document.getElementById('n24h_tr_input_search').value='';
  863. tlumaczenia.DoSearch();
  864. },
  865. /**
  866. Przycisk wyczyść
  867. */
  868. ClearHandler: function() {
  869. document.getElementById('n24h_tr_input_search').value='';
  870. tlumaczenia.DoSearch();
  871. },
  872. /**
  873. Dodaj film/serial do listy ulubionych
  874. */
  875. AddTitle: function(title) {
  876. if (title != null && title != '' && !db.exists(shows_db, title)) {
  877. if (db.add(shows_db, title))
  878. {
  879. document.querySelector('input#n24h_tr_input_new').value='';
  880. var select=document.querySelector('select#n24h_tr_shows_list');
  881. var option=document.createElement('option');
  882. option.text=title;
  883. option.setAttribute('class', 'n24h_tr_option');
  884. select.add(option);
  885. tlumaczenia.sortTable();
  886. }
  887. }
  888. },
  889. /**
  890. Przycisk dodaj
  891. */
  892. AddNewHandler: function() {
  893. var keyword = document.querySelector('input#n24h_tr_input_new').value.trim();
  894. tlumaczenia.AddTitle(keyword);
  895. },
  896. /**
  897. Usuń film/serial z listy ulubionych
  898. */
  899. RemoveTitle: function(title) {
  900. if (db.exists(shows_db, title))
  901. {
  902. if (db.remove(shows_db, title))
  903. {
  904. var select=document.querySelector('select#n24h_tr_shows_list');
  905. for (var i=0;i<select.length;i++)
  906. if (select[i].value.toUpperCase()==title.toUpperCase())
  907. {
  908. select.remove(i);
  909. break;
  910. }
  911. }
  912. tlumaczenia.sortTable();
  913. }
  914. },
  915. /**
  916. Przycisk usuń
  917. */
  918. RemoveHandler: function() {
  919. var keyword = document.querySelector('select#n24h_tr_shows_list').value;
  920. tlumaczenia.RemoveTitle(keyword);
  921. },
  922. /**
  923. Dodaj panel na górze tabelki z tłumaczeniami
  924. */
  925. AddPanel: function() {
  926. var css='#n24h_tr_input_search{'+ //wyszukiwanie
  927. 'margin-right: 5px;'+
  928. 'padding-left: 22px;'+
  929. 'border-radius: 4px;'+
  930. 'height: 25px;'+
  931. 'margin-bottom: 0px;'+
  932. 'width: 150px;'+
  933. 'background-repeat: no-repeat;'+
  934. 'background-position: 5px center;'+
  935. 'background-image: url('+icons.search+');'+
  936. '}'+
  937. '#n24h_tr_input_new{'+
  938. 'margin-right: 5px;'+
  939. 'padding-left: 27px;'+
  940. 'border-radius: 4px;'+
  941. 'height: 25px;'+
  942. 'margin-bottom: 0px;'+
  943. 'width: 150px;'+
  944. 'background-repeat: no-repeat;'+
  945. 'background-position: 5px center;'+
  946. 'background-image: url('+icons.staroff+');'+
  947. '}'+
  948. '#n24h_tr_input_clear,#n24h_tr_input_add,#n24h_tr_input_remove{'+
  949. 'border: 1px solid #32383E;'+
  950. 'background-color: #1B1F23;'+
  951. 'color: #7A878C;'+
  952. 'border-radius: 4px;'+
  953. 'cursor: pointer;'+
  954. 'width: 80px;'+
  955. 'height: 25px;'+
  956. '}'+
  957. '#n24h_tr_input_clear:hover,#n24h_tr_input_add:hover,#n24h_tr_input_remove:hover{'+
  958. 'border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);'+
  959. '}'+
  960. '#n24h_tr_shows_list{'+
  961. 'width: auto;'+
  962. 'margin-right: 5px;'+
  963. 'height: 25px;'+
  964. 'margin-bottom: 0px;'+
  965. 'margin-left: 30px;'+
  966. 'border: 1px solid #32383E'+
  967. 'background-color: #1B1F23;'+
  968. 'color: #7A878C;'+
  969. 'max-width: 200px;'+
  970. '}'+
  971. '.n24h_tr_option{'+
  972. 'background-color: #1B1F23;'+
  973. 'color: #7A878C;'+
  974. '}';
  975. var trtable=document.querySelector('table#translationsTable');
  976. if (!trtable)
  977. return;
  978. utils.insertcss(css);
  979. var panel=document.createElement('div'); //panel z opcjami
  980. panel.setAttribute('id', 'n24h_tr_panel');
  981. panel.setAttribute('class', 'tbl_top');
  982. panel.setAttribute('style', 'margin: 0px;');
  983.  
  984. var div=document.createElement('div'); //ogólny div ze wszystkim
  985. div.setAttribute('style', 'float:none;padding: 10px; margin-top: -15px; margin-bottom: 15px;');
  986.  
  987. var left_div=document.createElement('div'); //lewa część opcji
  988. left_div.setAttribute('style', 'float:left')
  989.  
  990. var input_search=document.createElement('input'); //okienko do szukania
  991. input_search.setAttribute('id', 'n24h_tr_input_search');
  992. input_search.setAttribute('type', 'text');
  993. input_search.setAttribute('placeholder', 'Szukaj...');
  994. input_search.addEventListener('keyup', tlumaczenia.SearchHandler, false);
  995.  
  996. var input_clear=document.createElement('input'); //przycisk wyczyść
  997. input_clear.setAttribute('id', 'n24h_tr_input_clear');
  998. input_clear.setAttribute('type', 'button');
  999. input_clear.setAttribute('value', 'Wyczyść');
  1000. input_clear.addEventListener('click', tlumaczenia.ClearHandler, false);
  1001.  
  1002. //dodaj do lewego diva
  1003. left_div.appendChild(input_search); //okienko szukania
  1004. left_div.appendChild(input_clear); //i przycisk wyczyść
  1005. var right_div=document.createElement('div'); //prawa część opcji
  1006. right_div.setAttribute('style', 'float:right')
  1007.  
  1008. var input_new=document.createElement('input'); //okienko do dodawania nowego serialu/filmu
  1009. input_new.setAttribute('id', 'n24h_tr_input_new');
  1010. input_new.setAttribute('type', 'text');
  1011.  
  1012. var input_add=document.createElement('input'); //przycisk dodaj
  1013. input_add.setAttribute('id', 'n24h_tr_input_add');
  1014. input_add.setAttribute('type', 'button');
  1015. input_add.setAttribute('value', 'Dodaj');
  1016. input_add.addEventListener('click', tlumaczenia.AddNewHandler, false);
  1017.  
  1018. var select=document.createElement('select'); //selekt z listą seriali/filmów
  1019. select.setAttribute('id', 'n24h_tr_shows_list');
  1020. select.setAttribute('size', '1');
  1021.  
  1022. //wypełnij selekta listą seriali/filmów
  1023. var keywords = db.getAll(shows_db);
  1024. for (var i=0;i<keywords.length;i++)
  1025. {
  1026. var option=document.createElement('option');
  1027. option.text=keywords[i];
  1028. option.setAttribute('class', 'n24h_tr_option');
  1029. select.add(option);
  1030. }
  1031.  
  1032.  
  1033. var input_remove=document.createElement('input'); //przycisk usuń
  1034. input_remove.setAttribute('id', 'n24h_tr_input_remove');
  1035. input_remove.setAttribute('type', 'button');
  1036. input_remove.setAttribute('value', 'Usuń');
  1037. input_remove.addEventListener('click', tlumaczenia.RemoveHandler, false);
  1038.  
  1039. //dodaj do prawego diva
  1040. right_div.appendChild(input_new); //okienko do dodawania nowego serialu/filmu
  1041. right_div.appendChild(input_add); //przycisk dodaj
  1042. right_div.appendChild(select); //lista seriali/filmów
  1043. right_div.appendChild(input_remove); //i przycisk usuń
  1044.  
  1045. //dodaj do ogólnego diva
  1046. div.appendChild(left_div); //lewego diva
  1047. div.appendChild(right_div); //i prawego diva
  1048.  
  1049. //dodaj ogólnego diva do panelu
  1050. panel.appendChild(div);
  1051. trtable.parentNode.insertBefore(panel,trtable);
  1052. },
  1053. /**
  1054. Dodaj dodatkową kolumnę z gwiazdkami
  1055. */
  1056. AddStars: function() {
  1057. var css='td[data-n24h-star]{'+
  1058. 'background-image: url('+icons.staroff+');'+
  1059. 'background-repeat: no-repeat;'+
  1060. 'background-position: center;'+
  1061. 'cursor:pointer !important;'+
  1062. '}'+
  1063. 'td[data-n24h-star="on"]{'+
  1064. 'background-image: url('+icons.staron+');'+
  1065. '}'+
  1066. 'td[data-n24h-star="auign"]{'+
  1067. 'background-image: url('+icons.starign+');'+
  1068. '}'+
  1069. 'td[data-n24h-star="trign"]{'+
  1070. 'background-image: url('+icons.starign+');'+
  1071. '}';
  1072. var trtable=document.querySelector('table#translationsTable');
  1073. if (!trtable)
  1074. return;
  1075. utils.insertcss(css);
  1076. var trhead=trtable.querySelector('thead > tr');
  1077. var th=document.createElement('th');
  1078. th.setAttribute('id', 'n24h_tr_favhead');
  1079. th.setAttribute('class', 'nosort header');
  1080. th.setAttribute('style', 'background-image: url('+icons.staron+');background-repeat: no-repeat;background-position: center;');
  1081. th.setAttribute('title', 'Ulubione filmy/seriale');
  1082. trhead.appendChild(th);
  1083. var trs=trtable.querySelectorAll('tbody>tr');
  1084. for (var i = 0; i < trs.length; i++)
  1085. {
  1086. var td=document.createElement('td');
  1087. td.setAttribute('data-n24h-star', '');
  1088. td.addEventListener('click', tlumaczenia.StarClickHandler, false);
  1089. td.addEventListener('contextmenu', tlumaczenia.IgnoreMenuHandler, false);
  1090. trs[i].appendChild(td);
  1091. }
  1092.  
  1093. },
  1094. HideRMenu: function() {
  1095. var rmenubg=document.querySelector('div.n24h_menu_background');
  1096. rmenubg.setAttribute('style', 'display:none');
  1097. var rmenu=document.querySelector('div#n24h_rmenu');
  1098. rmenubg.setAttribute('data-n24h-ign-tid', '');
  1099. rmenubg.setAttribute('data-n24h-ign-aut', '');
  1100. },
  1101. /**
  1102. Dodaj menu pomijania tłumaczeń
  1103. */
  1104. AddRMenu: function() {
  1105. var css='.n24h_menu_background{'+
  1106. 'position:fixed;'+
  1107. 'top:0;'+
  1108. 'left:0;'+
  1109. 'width:100%;'+
  1110. 'height:100%;'+
  1111. 'z-index:99999;'+
  1112. '}'+
  1113. '.n24h_rmenu{'+
  1114. 'z-index:999999;'+
  1115. 'position: absolute;'+
  1116. 'background-color:#FFFFFF;'+
  1117. 'color:#222222;'+
  1118. 'box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1);'+
  1119. 'border: 1px solid rgba(61, 70, 77, 0.1);'+
  1120. 'padding: 2px;'+
  1121. 'border-radius: 5px;'+
  1122. 'margin: 0;'+
  1123. 'list-style-type: none;'+
  1124. 'list-style: none;'+
  1125. '}'+
  1126. '.n24h_rmenu li{'+
  1127. 'cursor: pointer;'+
  1128. 'list-style: none;'+
  1129. 'text-decoration: none;'+
  1130. 'padding-top: 5px;'+
  1131. 'padding-bottom: 5px;'+
  1132. '}'+
  1133. '.n24h_rmenu li:hover{'+
  1134. 'background-color:#F0F0F0;'+
  1135. '}';
  1136. utils.insertcss(css);
  1137. var rmenu = document.createElement('div');
  1138. rmenu.setAttribute('class', 'n24h_menu_background');
  1139. rmenu.setAttribute('style', 'display:none');
  1140. rmenu.innerHTML='<div id="n24h_rmenu" class="n24h_rmenu"><ul>'+
  1141. '<li id="n24h_start_auign">Pomijaj tłumaczenia tego autrora</li>'+
  1142. '<li id="n24h_start_trign">Pomijaj to tłumaczenie</li>'+
  1143. '<li id="n24h_stop_auign">Przestań pomijać tłumaczenia tego autora</li>'+
  1144. '<li id="n24h_stop_trign">Przestań pomijać to tłumaczenie</li>'+
  1145. '</ul></div>';
  1146. rmenu.addEventListener('click', tlumaczenia.HideRMenu, false);
  1147. document.body.appendChild(rmenu);
  1148. var rmenus=rmenu.querySelectorAll('li');
  1149. for (var i = 0; i < rmenus.length; i++)
  1150. rmenus[i].addEventListener('click', tlumaczenia.IgnoreMenuClick, false);
  1151. },
  1152. /**
  1153. Ustaw nagłówki tabelki tak żeby dało się ją sortować
  1154. */
  1155. makeSortable: function() {
  1156. var trtable=document.querySelector('table#translationsTable');
  1157. if (!trtable)
  1158. return;
  1159. var th = trtable.tHead, i;
  1160. th && (th = th.rows[0]) && (th = th.cells);
  1161. if (th) i = th.length;
  1162. else return;
  1163. while (--i >= 0)
  1164. if (i<6) //pomiń kolumnę ulubione
  1165. (function (i) {
  1166. var dir = 1;
  1167. th[i].addEventListener('click', function () {tlumaczenia.sortTable(i, (dir = 1 - dir))});
  1168. }(i));
  1169. },
  1170. /**
  1171. Skopiuj nagłówki tabelki, żeby wywalić oryginalną obsługę sortowania i dodać naszą
  1172. */
  1173. AddNewHeader: function() {
  1174. var css='#translationsTable th {cursor: pointer !important;}'+
  1175. '#translationsTable th.nosort {cursor: default !important;}'+
  1176. '.n24h_sort_asc{background-image: url(run/images/arrsh.png);background-repeat: no-repeat;background-position: right;}'+
  1177. '.n24h_sort_desc{background-image: url(run/images/arrs.png);background-repeat: no-repeat;background-position: right;}';
  1178. var trtable=document.querySelector('table#translationsTable');
  1179. if (!trtable)
  1180. return;
  1181. utils.insertcss(css);
  1182. var header=trtable.querySelector('thead');
  1183. var new_header=document.createElement('thead');
  1184. new_header.innerHTML=header.innerHTML;
  1185. trtable.insertBefore(new_header, header);
  1186. trtable.removeChild(header);
  1187. tlumaczenia.makeSortable();
  1188. },
  1189. /**
  1190. Wywal kolumnę info i ewentualnie dodaj linki do tytułów seriali
  1191. */
  1192. FixInfo: function() {
  1193. var trtable=document.querySelector('table#translationsTable');
  1194. if (!trtable)
  1195. return;
  1196. /**INFO START*/
  1197. if (options.getValue('shown24info', false))
  1198. {
  1199. var trs=trtable.querySelectorAll('tbody > tr');
  1200. for (var i = 0; i < trs.length; i++)
  1201. {
  1202. var title=trs[i].querySelector('td:nth-child(1)>div');
  1203. var info=trs[i].querySelector('td:nth-child(2)>div>a[href*="serial/"], a[href*="title/tt"]');
  1204. if (info)
  1205. if (options.getValue('useimdbinfo', false))
  1206. {
  1207. var imdbid=trs[i].getAttribute('data-oczekuja').replace(/(.*imdbid=)(\d+)(.*)/g, '$2');
  1208. title.innerHTML='<a href="http://www.imdb.com/title/tt'+imdbid+'/" target="_blank">'+title.textContent+'</a>';
  1209. } else {
  1210. var target=info.href.indexOf('imdb.com')!=-1?' target="_blank"':'';
  1211. title.innerHTML='<a href="'+info.href+'"'+target+'>'+title.textContent+'</a>';
  1212. }
  1213. }
  1214. }
  1215. /**INFO STOP*/
  1216. //usuń kolumnę Info
  1217. var th=document.querySelector('th.header:nth-child(2)');
  1218. th.parentNode.removeChild(th);
  1219. var tds=document.querySelectorAll('table#translationsTable>tbody>tr>td:nth-child(2)');
  1220. for (var i = 0; i < tds.length; i++)
  1221. {
  1222. tds[i].parentNode.removeChild(tds[i]);
  1223. }
  1224. },
  1225. RemoveEmptyRow: function() {
  1226. //usuń pustą belkę jeżeli istnieje
  1227. var emptyrow=document.querySelector('#n24h_emptyrow');
  1228. if (emptyrow) {
  1229. var table=emptyrow.parentNode;
  1230. table.removeChild(emptyrow);
  1231. }
  1232. },
  1233. KillIgnoreTranslations: function() {
  1234. var tmp=[];
  1235. var ignoredb=db.getAll(tr_ignore_db);
  1236. if (ignoredb.length>0) {
  1237. var tid;
  1238. var selector;
  1239. for (var i=0;i<ignoredb.length;i++) {
  1240. selector='table#translationsTable input[data-tid="'+ignoredb[i]+'"]';
  1241. tid=document.querySelector(selector);
  1242. if (tid)
  1243. tmp.push(ignoredb[i]);
  1244. }
  1245. localStorage.setItem(tr_ignore_db, JSON.stringify(tmp));
  1246. }
  1247. },
  1248. init: function() {
  1249. tlumaczenia.AddPanel();
  1250. tlumaczenia.FixInfo();
  1251. tlumaczenia.AddStars();
  1252. tlumaczenia.AddNewHeader();
  1253. tlumaczenia.AddRMenu();
  1254. tlumaczenia.sortTable();
  1255. if (options.getValue('autokillignoretranslations', false))
  1256. tlumaczenia.KillIgnoreTranslations();
  1257. }
  1258. };
  1259.  
  1260. /**
  1261. Strona z komentarzami
  1262. */
  1263. var komentarze = {
  1264. /**
  1265. Zapisz poprawki za pomocą czcionki o stałej szerokości
  1266. */
  1267. fix_comments: function() {
  1268. var css='div.n24h_comment{'+
  1269. 'font-family: Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;'+
  1270. 'font-size: 13px;'+
  1271. 'text-align: left;'+
  1272. '}';
  1273. utils.insertcss(css);
  1274.  
  1275. var comments=document.querySelectorAll('div.tresc2');
  1276. for (var i=0;i<comments.length;i++)
  1277. {
  1278. var text=comments[i].innerHTML;
  1279. var lines=text.split('<br>');
  1280. var line='';
  1281. text='';
  1282. for (var j=0;j<lines.length;j++)
  1283. {
  1284. line=lines[j].replace(/((\+|\-)?(.)?(\[|\{)\d+(\]|\})(\[|\{)\d+(\]|\}).*)/g, '<div class="n24h_comment">$1</div>');
  1285. text=text+line;
  1286. if (line.search('n24h_comment')==-1)
  1287. text=text+'<br>';
  1288. }
  1289. comments[i].innerHTML=text;
  1290. }
  1291. },
  1292. /**
  1293. Pokaż/ukryj panel z emotkami i dodawaniem komentarza
  1294. */
  1295. ShowHideEmots: function() {
  1296. var emots=document.querySelector('.page > div:nth-child(2)');
  1297. var form=document.querySelector('form#userForm');
  1298. var opener=document.querySelector('div#n24h_comm_opener');
  1299. if ((!emots) || (!form))
  1300. return;
  1301. if (emots.style.display==='none')
  1302. {
  1303. emots.style.display='block';
  1304. form.style.display='block';
  1305. opener.setAttribute('class', 'n24h_comm_opener n24h_comm_opener_open');
  1306. } else {
  1307. emots.style.display='none';
  1308. form.style.display='none';
  1309. opener.setAttribute('class', 'n24h_comm_opener');
  1310. }
  1311. },
  1312. /**
  1313. Dodaj strzałkę otwierającą/zamykającą panel emotek i komentarza
  1314. */
  1315. addOpener: function() {
  1316. var css='div.n24h_comm_opener{'+
  1317. 'background-image: url(run/images/arrs.png);'+
  1318. 'background-repeat: no-repeat;'+
  1319. 'height: 20px;'+
  1320. 'width: 20px;'+
  1321. 'background-position: center;'+
  1322. 'cursor:pointer;'+
  1323. 'border: 1px solid;'+
  1324. 'border-color:#32383E;'+
  1325. 'padding: 3px;'+
  1326. 'margin-left: 10px;'+
  1327. 'float: left;'+
  1328. '}'+
  1329. 'div.n24h_comm_opener:hover{'+
  1330. 'background-color: #202428;'+
  1331. '}'+
  1332. 'div.n24h_comm_opener_open{'+
  1333. 'background-image: url(run/images/arrsh.png);'+
  1334. '}';
  1335. var footer=document.querySelector('div.moreInfo>div.infofooter');
  1336. if (!footer)
  1337. return;
  1338. var footermain=footer.querySelector('#footerMain');
  1339. if (!footermain)
  1340. return;
  1341. utils.insertcss(css);
  1342. var opener=document.createElement('div');
  1343. opener.setAttribute('id', 'n24h_comm_opener');
  1344. opener.setAttribute('class', options.getValue('hideemotspanel', false)?'n24h_comm_opener':'n24h_comm_opener n24h_comm_opener_open');
  1345. opener.setAttribute('title', 'Pokaż/ukryj dodawanie komentarza');
  1346. opener.addEventListener('click', komentarze.ShowHideEmots, false);
  1347. footer.insertBefore(opener,footermain);
  1348. footer.setAttribute('style', 'padding-bottom: 5px; padding-top: 5px;');
  1349. if (options.getValue('hideemotspanel', false))
  1350. komentarze.ShowHideEmots();
  1351. },
  1352. init: function() {
  1353. komentarze.addOpener();
  1354. if (options.getValue('fixcomments', false))
  1355. komentarze.fix_comments();
  1356. }
  1357. };
  1358.  
  1359. /**
  1360. Strona o serialu
  1361. */
  1362. var serial = {
  1363. /**
  1364. Dodaj linka do IMDB
  1365. */
  1366. addIMDBlink: function() {
  1367. var info=document.querySelector('.infoColumn2>div:last-child');
  1368. if (!info)
  1369. return;
  1370. var link=document.createElement('a');
  1371. var imdbid=document.querySelector('#notify_napisy').getAttribute('data-imdb');
  1372. var href='http://www.imdb.com/title/'+imdbid+'/';
  1373. link.setAttribute('href', href);
  1374. link.setAttribute('target', '_blank');
  1375. link.innerHTML='IMDB';
  1376. info.appendChild(document.createTextNode(' ')); //dodaj spację
  1377. info.appendChild(link);
  1378. },
  1379. setObserver: function() {
  1380. var observer = new MutationObserver(function(mutations) {
  1381. mutations.forEach(function(mutation) {
  1382. misc.killTargetBlank();
  1383. });
  1384. });
  1385.  
  1386. observer.observe(document, { childList: true, subtree: true });
  1387. },
  1388. init: function() {
  1389. serial.addIMDBlink();
  1390. if (options.getValue('removetargetblank', false))
  1391. serial.setObserver();
  1392. }
  1393. };
  1394.  
  1395.  
  1396. /**
  1397. Różności
  1398. */
  1399. var misc = {
  1400. /**
  1401. Obsługa zapamiętywania wyszukiwanych filmów/seriali między stronami
  1402. */
  1403. SearchHandler: function(e) {
  1404. var input=document.querySelector('input#phrase');
  1405. if (!input)
  1406. return;
  1407. e = e || window.event;
  1408. if (e.keyCode==27)
  1409. input.value='';
  1410. sessionStorage.setItem('n24h_search', input.value);
  1411. },
  1412. /**
  1413. Dodaj zapamiętywanie wyszukiwanych filmów/seriali
  1414. */
  1415. fixSearch: function() {
  1416. var input=document.querySelector('input#phrase');
  1417. if (!input)
  1418. return;
  1419. var searchtext=sessionStorage.getItem('n24h_search');
  1420. if ((searchtext!==null)&&(searchtext!==''))
  1421. {
  1422. input.value=searchtext;
  1423. console.log('searchtext: '+searchtext);
  1424. }
  1425. input.addEventListener('keyup', misc.SearchHandler, false);
  1426. },
  1427. /**
  1428. Usuń okładkę filmu/serialu
  1429. */
  1430. killCover: function() {
  1431. var css='div.subtitle{width: 675px !important;}';
  1432. utils.insertcss(css);
  1433. var divs=document.querySelectorAll('div.tbl');
  1434. for (var i=0;i<divs.length;i++)
  1435. {
  1436. var poster=divs[i].querySelector('div.poster');
  1437. divs[i].removeChild(poster);
  1438. }
  1439. },
  1440. /**
  1441. Usuń ocenę z IMDB
  1442. */
  1443. killIMDBInfo: function() {
  1444. var divs=document.querySelectorAll('div[id^="toggleMe"]');
  1445. for (var i=0;i<divs.length;i++)
  1446. {
  1447. var infocolumn=divs[i].querySelector('div.infoColumn0');
  1448. divs[i].removeChild(infocolumn);
  1449. }
  1450. },
  1451. /**
  1452. Alternatywne skórki
  1453. */
  1454. altSkin: function() {
  1455. /** Szara start*/
  1456. var altcss1='.avatar-menu-icons[class*="avatar-main-menu-szare"] > li {background-color: #2B68AB;border-right: 1px solid #5592D5;border-bottom: 4px solid #1B4A7E;}'+//menu: forum, irc, rss
  1457. '[class*="avatar-main-menu"] > li:hover {border-bottom: 4px solid #1B4A7E;line-height: 18px;height: 18px;}'+
  1458. '[class*="avatar-main-menu"] > li:hover > a {top:0px;}'+
  1459. 'nav{background-color: #2B68AB !important;}'+//pusta przestrzeń między menu a dodaj napisy
  1460. 'nav ul li.menu_add_napisy a{background-color: #2B68AB;border-bottom: 4px solid #1B4A7E;}'+//przycisk dodaj napisy
  1461. 'nav ul li.menu_add_napisy a:hover{background-color: #1B4A7E;color: #CCC;background-position: 21px 12px;}'+
  1462. 'nav ul li.menu_add_napisy a:active{color: #CCC;text-shadow: 0px -1px 1px rgba(0, 0, 0, 0.2);filter: dropshadow(color=#33000000, offx=0, offy=-1);border-top: 4px solid #2B68AB;border-bottom: 4px solid #1B4A7E;background-color: #1B4A7E;background-position: 21px 8px;}'+
  1463. 'body{background-color:#D5D5D5 !important;color: #272727;}'+//body
  1464. '#avatar-body-middle-block{background-color:#D5D5D5;}'+//środek
  1465. '#avatar-header-inside-block{background-color:#D5D5D5;}'+//górna belka body
  1466. '.logo .screen{border: 4px solid #5592D5 !important;}'+//logo
  1467. '.logo .screen .subline1{background-color: #5592D5 !important;}'+
  1468. '.logo .screen .subline2{background-color: #5592D5 !important;}'+
  1469. '.logo h1{color: #5592D5 !important;}'+
  1470. '.logo h2{color: #5592D5 !important;}'+
  1471. 'textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {background-color: #D5D5D5 !important;color: #000000 !important;}'+//pola tekstowe
  1472. '#search #phrase{color: #000000 !important;}'+//wyszukiwarka
  1473. 'section#content .tbl_top{background-color:#D5D5D5 !important;border-top: 1px solid #A0A0A0 !important;}'+ //tabelka nagłówek
  1474. '.tbl_top1, .tbl_top2{background-color:#D5D5D5 !important;border-top: 1px solid #A0A0A0 !important;}'+ //tabelka nagłówek
  1475. 'section#content .tbl_top .head_r label{color:#000000 !important;}'+
  1476. 'section#content .tbl_top .head_l{color:#000000 !important;}'+
  1477. 'section#content .tbl{background-color:#D5D5D5 !important;border-top: 1px solid #A0A0A0 !important;}'+
  1478. 'section#content .page{border-color:#A0A0A0 !important;}'+
  1479. 'section#content .tbl_out{border-bottom:1px solid #A0A0A0 !important;}'+
  1480. 'section#content .tbl .poster{border-right:1px solid #A0A0A0 !important;}'+
  1481. 'section#content .pagination{border: 1px solid #A0A0A0;background-color: #E0E0E0;}'+
  1482. 'section#content .pagination .page-start, section#content .pagination .page-prev, section#content .pagination .page-next{ color: #272829;background-color: #D5D5D5;}'+//strart, poprzednia, następna
  1483. 'section#content .pagination .page-start:hover, section#content .pagination .page-prev:hover, section#content .pagination .page-next:hover{color: #272829;background-color: #E0E0E0;border-radius: 0px 0px 3px 3px;border-bottom: 3px solid #D26911;border-top:none;padding-bottom: 0px;line-height: 30px;}'+
  1484. 'section#content .pagination .page-prev:hover{background-position: 15px center;}'+
  1485. 'section#content .pagination .page-next:hover{background-position: 90px center;}'+
  1486. 'section#content .pagination .page-num{color: #272829 !important;background-color: #D5D5D5;}'+//numery stron
  1487. 'section#content .pagination .page-num:hover{background-color: #E0E0E0;border-top-width: 1px;margin-top: 0px;border-radius: 0px 0px 3px 3px;border-bottom: 3px solid #D26911;}'+
  1488. 'section#content .tbl.opened .subtitle .opener, section#content .tbl .subtitle:hover .opener, .page .closerSmall, .page .closerSmall:hover, .page .openerSmall, .page .openerSmall:hover, .page .closerSmall2, .page .openerSmall2:hover {background-color: #E0E0E0 !important;border-radius: 0px 0px 3px 3px;border-bottom: 3px solid #D26911;}'+
  1489. '.module_frame{border: 1px solid #A0A0A0;}'+
  1490. '.category-modulemodule_frame li a{color: #000000;}'+
  1491. '.category-modulemodule_frame li a:hover{color: #2F2F2F;background-color: #E0E0E0;}'+
  1492. 'aside .list li a{color: #000000 !important;}'+
  1493. 'aside .list li a:hover{color: #2F2F2F !important;background-color: #E0E0E0 !important;text-decoration: none !important;}'+
  1494. 'aside{width: inherit !important;}'+
  1495. '.avatar-module .st-module-heading{background-color: #A0A0A0;color: #2F2F2F;}'+
  1496. '.login-greeting{color: #272829;}'+
  1497. '.moreInfo{background-color:#D5D5D5 !important;color:#000000 !important; border-top: 1px solid #A0A0A0;}'+
  1498. '.page span{color: #272829 !important;}'+
  1499. '.infofooter{border-top: 1px solid #A0A0A0 !important;background-color: #D5D5D5 !important;}'+
  1500. '.infoColumn0{background-color: #D5D5D5 !important;border-right: 1px solid #A0A0A0 !important;border-bottom: 1px solid #A0A0A0 !important;border-top: 1px solid #A0A0A0 !important}'+
  1501. 'section#content .page{color: #272829 !important;}'+
  1502. 'section#content .tbl .subtitle .sub h2{color: #272829 !important;}'+
  1503. 'select {background-color: #C5C5C5 !important;}'+
  1504. 'a, a:link, a:visited {color: #1E519D;}'+
  1505. '.infoheader, .infoheader1{color: #000000 !important;}'+
  1506. '.row-fluid {border-bottom: none !important;}'+
  1507. /**tłumaczenia*/
  1508. 'table.table-layout thead tr th{background-color: #D5D5D5 !important;color: #272829 !important;border-bottom: 1px solid #A0A0A0 !important;border-right: 1px solid #A0A0A0 !important;}'+
  1509. 'table.table-layout tbody tr.odd td:not([style*="background-color:#255180"]):not([style*="background-color:#DD7665"]):not([style*="background-color:#41d64b"]){background-color: #C5C5C5 !important;}'+
  1510. 'table.table-layout tbody tr.even td:not([style*="background-color:#255180"]):not([style*="background-color:#DD7665"]):not([style*="background-color:#41d64b"]){background-color: #B5B5B5 !important;}'+
  1511. 'table.table-layout tbody tr td{border-bottom: 1px solid #A0A0A0 !important;border-right: 1px solid #A0A0A0 !important;color: #000000 !important;}'+
  1512. 'table.table-layout{border-top: 1px solid #A0A0A0 !important;}'+
  1513. '.progress div{background-color: #A0A0A0 !important;}'+
  1514. 'nav ul li.menu_add_tlum a{background-color: #2B68AB;border-bottom: 4px solid #2B68AB;background-position: 21px 12px;}'+
  1515. 'nav ul li.menu_add_tlum a:hover{border-bottom: 4px solid #1B4A7E;color: #CCCCCC;background-color: #2B68AB;line-height: 44px;height: 42px;background-position: 21px 12px;}'+
  1516. 'nav ul li.menu_add_tlum a:active{border-bottom: 4px solid #1B4A7E;color: #CCCCCC;background-color: #2B68AB;line-height: 48px;height: 42px;background-position: 21px 12px;text-shadow:none;filter:none;border-top:none;}'+
  1517. 'table.table-layout tbody tr td[style*="background-color:#255180"], td[style*="background-color:#41d64b"]{background-color:#DFDFDF !important;}'+ //ostatnio zaktualizowane
  1518. 'table.table-layout tbody tr td div span[style*="color: white"], span[style*="color: #feee39"]{color: black !important;}'+ //ilość oczekujących
  1519. 'table.table-layout tbody tr td div a[style*="color: rgb(0,200,0)"]{color: rgb(0,150,0) !important;}'+ //moderator
  1520. '.translation {cursor: pointer !important;}'+
  1521. '.headerSortUp{background-image: url(run/images/arrs.png);background-repeat: no-repeat;background-position: right;}'+
  1522. '.headerSortDown{background-image: url(run/images/arrsh.png);background-repeat: no-repeat;background-position: right;}'+
  1523. '.progress > span > span {color: #FFFFFF !important;}'+ //procenty ukończenia
  1524. /**komentarze*/
  1525. '.moreInfo2{background-color:#D5D5D5 !important;color:#000000 !important;}'+
  1526. 'section#content .tbl .avatar{border-right: 1px solid #A0A0A0 !important;}'+
  1527. 'section#content .tbl .subtitle .sub h3{color: #000000 !important;}'+
  1528. 'section#content .tbl .mark{color: #000000 !important;}'+
  1529. 'textarea{background-color: #B5B5B5 !important;color: #272829 !important;}'+
  1530. 'div[style*="background-color: #21262b"]{background-color: #ADADAD !important;}'+ //górna belka z datą i oceną
  1531. '.tresc2 div[style*="background-color: #292f35"]{background-color: #E9E9E9 !important;}'+ //cytat
  1532. /**artykuły*/
  1533. '#jc{background: none repeat scroll 0px 0px #B5B5B5;}'+
  1534. '#jc h4{color: #272829;background-color: #C5C5C5;}'+
  1535. '#jc .rbox{background-color: #B5B5B5;}'+
  1536. '#comments .comment-author, #comments .author-homepage, #comments .author-email{color: #4B3F37;}'+
  1537. '#comments .comment-date{color: #4B3F37;}'+
  1538. '#comments .comment-body{color: #4B3F37;}'+
  1539. '#comments .quote{color: #4B3F37;}'+
  1540. '#comments blockquote, #comments .hidden, #comments code, #comments pre{color: #1B6A6A;}'+
  1541. '#comments a{color: #174B54;}'+
  1542. '#comments-form input{color: #2D3335;}'+
  1543. /**profil*/
  1544. '#uddeim-overview .sectiontableentry1 {background-color: #C5C5C5 !important;}'+
  1545. '#uddeim-overview .sectiontableentry2 {background-color: #B5B5B5 !important;}'+
  1546. '#uddeim-overview>table {border-collapse: initial !important;}'+
  1547. '#uddeim-writeform input {background-color: #D5D5D5 !important;}'+
  1548. /**seriale*/
  1549. 'span.yellowfont {color: #000000 !important;}'+
  1550. /**serial*/
  1551. 'section#content .tbl_top_powiadomienia {background-color:#D5D5D5 !important;border-top: 1px solid #A0A0A0 !important;}'+
  1552. 'section#content .tbl_top_powiadomienia .head_l {color: #414141 !important;}'+
  1553. 'section#content .tbl_top_powiadomienia .head_r label {color: #414141 !important;}'+
  1554. '.serialNapisy .infofootertab {color: #000000 !important; background-color: #DEE0E2 !important; border-top: 1px solid #BBBBBB !important;}'+
  1555. /**n24 helper*/
  1556. '#n24h_tr_input_search, #n24h_tr_input_new{color: #000000 !important;}'+
  1557. '#n24h_tr_input_clear, #n24h_tr_input_add, #n24h_tr_input_remove {background-color: #C5C5C5 !important;color: #000000 !important;}'+
  1558. '#n24h_tr_shows_list {background-color: #C5C5C5 !important;color: #000000 !important;}'+
  1559. '.n24h_tr_option {background-color: #C5C5C5 !important;color: #000000 !important;}'+
  1560. 'div.n24h_comm_opener:hover {background-color: #C5C5C5 !important;}';
  1561. /** Szara stop*/
  1562. /** n24 classic start*/
  1563. var altcss2='body{background-color:#DEE0E2 !important;color: #272727;}'+//body
  1564. '#avatar-body-middle-block{background-color:#DEE0E2;}'+//środek
  1565. '#avatar-header-inside-block{background-color:#DEE0E2;}'+//górna belka body
  1566. '#avatar-tool-block{background-color:#DEE0E2;}'+
  1567. '.logo .screen{border: 4px solid #5592D5 !important;}'+//logo
  1568. '.logo .screen .subline1{background-color: #5592D5 !important;}'+
  1569. '.logo .screen .subline2{background-color: #5592D5 !important;}'+
  1570. '.logo h1{color: #5592D5 !important;}'+
  1571. '.logo h2{color: #5592D5 !important;}'+
  1572. '.avatar-menu-icons[class*="avatar-main-menu-szare"] > li {background-color: #2B68AB;border-right: 1px solid #5592D5;border-bottom: 4px solid #1B4A7E;}'+//menu: forum, irc, rss
  1573. '[class*="avatar-main-menu"] > li:hover {border-bottom: 4px solid #1B4A7E;line-height: 18px;height: 18px;}'+
  1574. '[class*="avatar-main-menu"] > li:hover > a {top:0px;}'+
  1575. 'nav{background-color: #2B68AB !important;}'+//pusta przestrzeń między menu a dodaj napisy
  1576. 'nav ul li.menu_add_napisy a{background-color: #2B68AB;border-bottom: 4px solid #1B4A7E;}'+//przycisk dodaj napisy
  1577. 'nav ul li.menu_add_napisy a:hover{background-color: #1B4A7E;color: #CCC;background-position: 21px 12px;}'+
  1578. 'nav ul li.menu_add_napisy a:active{color: #CCC;text-shadow: 0px -1px 1px rgba(0, 0, 0, 0.2);filter: dropshadow(color=#33000000, offx=0, offy=-1);border-top: 4px solid #2B68AB;border-bottom: 4px solid #1B4A7E;background-color: #1B4A7E;background-position: 21px 8px;}'+
  1579. 'textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {background-color: #FFFFFF !important;color: #000000 !important;}'+//pola tekstowe
  1580. '#search #phrase{color: #000000 !important;}'+//wyszukiwarka
  1581. 'section#content .tbl_top, section#content .tbl_top1, section#content .tbl_top2{background: linear-gradient(#EDEEEE, #E2E3E3) !important;border-top: none !important;border-radius:5px;border-bottom:1px solid #B6B7B7 !important;}'+ //tabelka nagłówek
  1582. 'section#content .tbl {width: inherit !important;}'+
  1583. 'section#content .tbl_top .head_l{color:#000000 !important;}'+
  1584. 'section#content .tbl{background-color:#F7F8F8 !important;border-top:none !important;border-bottom: 1px solid #DBDCDC;border-right: 1px solid #DBDCDC;}'+
  1585. 'section#content .page{border:none !important;}'+
  1586. 'section#content .tbl_out{border-bottom:none !important;}'+
  1587. 'section#content .pagination{background: linear-gradient(#EDEEEE, #E2E3E3);border:none;border-radius:5px;}'+
  1588. 'section#content .tbl .subtitle .sub h2{color:#004896 !important;}'+
  1589. 'section#content .tbl .subtitle .sub h3{color:#5D5D5D !important;}'+
  1590. 'section#content .pagination .page-start, section#content .pagination .page-prev, section#content .pagination .page-next{ color: #2C2C2C;background-color: #F9F9F9;border: 1px solid #CECFCF;border-radius: 4px;margin: 4px 2px 0px;line-height: 20px;background-image:none;}'+//strart, poprzednia, następna
  1591. 'section#content .pagination .page-start:hover, section#content .pagination .page-prev:hover, section#content .pagination .page-next:hover{color: #2C2C2C;background-color: #F9F9F9;border: 1px solid #CECFCF;border-radius: 4px;padding-bottom: 0px;line-height: 30px;text-decoration:underline;line-height: 20px;background-image:none;}'+
  1592. 'section#content .pagination .page-start, section#content .pagination .page-prev {padding-left:15px;}'+
  1593. 'section#content .pagination .page-next {padding-right:15px;}'+
  1594. 'section#content .pagination a.page-num{color: #2C2C2C;background-color: #F9F9F9;border: 1px solid #CECFCF;border-radius: 4px;}'+//numery stron
  1595. 'section#content .pagination a.page-num:hover{background-color: #F9F9F9;border: 1px solid #CECFCF;margin-top: 0px; border-radius: 4px;text-decoration:underline;}'+
  1596. 'section#content .pagination span.page-num{color: #FFFFFF !important;background-color: #2A5EA1;border: 1px solid #CECFCF;border-radius: 4px;}'+//numery stron
  1597. 'section#content .pagination span.page-num:hover{background-color: #2A5EA1;border: 1px solid #CECFCF;margin-top: 0px; border-radius: 4px;text-decoration:underline;}'+
  1598. 'section#content .tbl.opened .subtitle .opener, section#content .tbl .subtitle:hover .opener {background-color: #F7F8F8 !important;}'+
  1599. '.page .closerSmall, .page .closerSmall:hover, .page .openerSmall, .page .openerSmall:hover, .page .closerSmall2, .page .openerSmall2:hover {background-color: #DEE0E2 !important;}'+
  1600. '.module_frame{border: none;}'+
  1601. '.avatar-module .st-module-heading{background: linear-gradient(#266CB3, #0E418E);border-bottom: 1px solid #0B3372;border-radius:5px;box-shadow: -5px 5px 1px #FFFFFF;margin-bottom:10px;}'+
  1602. '.category-modulemodule_frame li a,aside .list li a{background-color: #1758A5 !important;border-bottom:1px solid #0D3A6F;margin-bottom:1px;font-weight: bold;}'+
  1603. '.category-modulemodule_frame li a:hover,aside .list li a:hover{color: #E8EEF0 !important;background-color: #1758A5 !important;text-decoration:underline;}'+
  1604. 'aside{width: inherit !important;}'+
  1605. 'aside .list{border: none !important;}'+
  1606. '.moreInfo{background-color:#F7F8F8 !important;color:#252525 !important;}'+
  1607. '.page span{color: #252525 !important;}'+
  1608. '.infofooter{border-top: 1px solid #DBDCDC !important;background-color: #F7F8F8 !important;color:#252525 !important;}'+
  1609. '.infoColumn0{background-color: #F7F8F8 !important;border-right: 1px solid #DBDCDC !important;border-bottom: 1px solid #DBDCDC !important;border-top: 1px solid #DBDCDC !important}'+
  1610. 'section#content .tbl .poster{border-right: 1px solid #DBDCDC !important}'+
  1611. 'section#content .page{color: #252525 !important;}'+
  1612. '.head_r input[type="radio"]:checked + label{background-image: none !important;color: #FFFFFF !important;background-color: #2A5EA1;border: 1px solid #CECFCF;border-radius: 4px;}'+
  1613. '.head_r input[type="radio"] + label{background-image: none !important;color: #2C2C2C !important;background-color: #F9F9F9;border: 1px solid #CECFCF;border-radius: 4px;padding: 0px 10px 0px 10px !important;}'+
  1614. '.head_r input[type="radio"] + label:hover{text-decoration:underline;}'+
  1615. '.head_r > label{color: #2C2C2C !important;}'+
  1616. 'select {background-color: #FFFFFF !important;}'+
  1617. '.infoheader, .infoheader1{color: #20487F !important;}'+
  1618. 'section#content .tbl div.mark:nth-child(3) {color: #545D62 !important;}'+
  1619. '.row-fluid {border-bottom: none !important;}'+
  1620. /**tłumaczenia*/
  1621. '.checkbox_outer input[type="checkbox"] + span, .checkbox_series input[type="checkbox"] + span, input[type="checkbox"]:not([id="comments-form-subscribe"]) + label{background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAARCAYAAAA/mJfHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wEMETc09F0PlAAAAGRJREFUOMtj/Pnz538GKoCr164xMDFQEQxZw+4wTJzDzsDensGwY0h7kxFb0rhz2IpB+8hZ7Do0NzL8DPCgfdJgxJ9o7zBMnKPNUPY6kWFj5QwGjyGbaBlH8ybJgOXqtWtUMwwAJg4sDO+yKkcAAAAASUVORK5CYII=) !important;}'+
  1622. '.checkbox_outer input[type="checkbox"] + span,.checkbox_series input[type="checkbox"] + span{width:19px;height:17px;}'+
  1623. '.checkbox_outer input[type="checkbox"]:checked + span, .checkbox_series input[type="checkbox"]:checked + span, input[type="checkbox"]:checked:not([id="comments-form-subscribe"]) + label{background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAARCAYAAAA/mJfHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wEMETcCO+eaDQAAADxJREFUOMtj/Pnz538GKoCr164xMDFQEYwaNjIMuzORgZWdnYENhq0mMjDS02WMozlgGBnGcvXaNaoZBgBLTBH0qX8ljgAAAABJRU5ErkJggg==) !important;}'+
  1624. '.checkbox_outer input[type="checkbox"]:hover + span, .checkbox_series input[type="checkbox"]:hover + span{border-bottom: 1px solid #FCB622;border-right: 1px solid #FCB622;border-radius: 5px;}'+
  1625. '.checkbox_outer{margin-top: 0px !important;top: 4px !important;}'+
  1626. 'table.table-layout{border-top: none !important;}'+
  1627. 'table.table-layout thead tr th{background: linear-gradient(#2369B0, #104694, #2167AF) !important;color: #DDDDDD !important;border: solid 1px white !important;line-height: inherit !important;}'+ //nagłówek tabelki
  1628. 'table.table-layout tbody tr.odd td:not([style*="background-color:#255180"]):not([style*="background-color:#DD7665"]):not([style*="background-color:#41d64b"]):not([data-n24h-star]){background: linear-gradient(#FFFFFF, #DEE0E2) !important;}'+//nie nadpisuj aktualizacji
  1629. 'table.table-layout tbody tr.even td:not([style*="background-color:#255180"]):not([style*="background-color:#DD7665"]):not([style*="background-color:#41d64b"]):not([data-n24h-star]){background: linear-gradient(#E1E1E1, #ECECEC) !important;}'+
  1630. '.progress div{background-color: #E7BA63 !important;}'+
  1631. 'td.progressx>div.progress {background-image: linear-gradient(#FFFFFF, #DEE0E2) !important; border-right: 1px solid #D3D6D7 !important;border-bottom: 1px solid #D3D6D7 !important;bottom: 0px !important;top: 0px !important;margin: auto;}'+
  1632. 'table.table-layout tbody tr td{color: #252525 !important;}'+
  1633. 'table.table-layout tbody tr td[style*="background-color:#255180"],td[style*="background-color:#41d64b"] {background-color: #E7BA63 !important;}'+ //ostatnio zaktualizowane
  1634. 'table.table-layout tbody tr td div span[style*="color: white"], span[style*="color: #feee39"]{color: #252525 !important;}'+ //ilość oczekujących
  1635. '.progress > span > span {color: #252525 !important;}'+ //procenty ukończenia
  1636. 'table.table-layout tbody tr td{border-top: 1px solid #ffffff !important;border-left: 1px solid #ffffff !important;border-right: 1px solid #ffffff !important;border-bottom: 1px solid #bbbbbb !important;padding-top: 2px !important;padding-bottom: 2px !important;}'+
  1637. 'table.table-layout tbody tr:not(.serialNapisy):not(#n24h_emptyrow):hover td{border-top: solid 2px #E7BA63 !important;border-bottom: solid 2px #E7BA63 !important;border-left: solid 1px #E7BA63 !important;border-right: solid 1px #E7BA63 !important;padding-top: 1px !important;padding-bottom: 1px !important;}'+
  1638. 'table.table-layout {border-collapse: initial !important;}'+
  1639. '.translation {cursor: pointer !important;}'+
  1640. 'nav ul li.menu_add_tlum a{background-color: #2B68AB;border-bottom: 4px solid #2B68AB;background-position: 21px 12px;}'+
  1641. 'nav ul li.menu_add_tlum a:hover{border-bottom: 4px solid #1B4A7E;color: #CCCCCC;background-color: #2B68AB;line-height: 44px;height: 42px;background-position: 21px 12px;}'+
  1642. 'nav ul li.menu_add_tlum a:active{border-bottom: 4px solid #1B4A7E;color: #CCCCCC;background-color: #2B68AB;line-height: 48px;height: 42px;background-position: 21px 12px;text-shadow:none;filter:none;border-top:none;}'+
  1643. 'table.table-layout thead tr th.headerSortUp{background-image: url(run/images/arrs.png) ,linear-gradient(#2369B0, #104694, #2167AF) !important; !important;background-repeat: no-repeat !important;background-position: right !important;}'+
  1644. 'table.table-layout thead tr th.headerSortDown{background-image: url(run/images/arrsh.png) ,linear-gradient(#2369B0, #104694, #2167AF) !important; !important;background-repeat: no-repeat !important;background-position: right !important;}'+
  1645. /**komentarze*/
  1646. '.moreInfo2{background-color:#DFE2E5 !important;color:#000000 !important;}'+
  1647. 'section#content .clear ~ .tbl{background-color:#DFE2E5 !important;border-bottom: 1px solid #BBBBBB !important;margin-bottom:2px !important;}'+
  1648. 'section#content .clear ~ .tbl .infoColumn0{background-color:#DFE2E5 !important;}'+
  1649. 'section#content .clear ~ .tbl .infofooter{background-color:#ECEEEF !important;color:#000000 !important;border-top: 1px solid #BBBBBB !important;}'+
  1650. 'section#content .tbl .avatar{border-right: 1px solid #BBBBBB !important;}'+
  1651. 'section#content .tbl div[style*="background-color: #21262b"] .subtitle .sub h3{color: #FFFFFF !important;}'+
  1652. 'section#content .tbl .mark{color: #FFFFFF !important;}'+
  1653. 'textarea{background-color: #FFFFFF !important;color: #000000 !important;}'+
  1654. 'div[style*="background-color: #21262b"]{background: linear-gradient(#2369B0, #104694, #2167AF) !important;color: #DDDDDD !important;line-height: inherit !important;}'+ //górna belka z datą i oceną
  1655. 'section#content>.page>div[style*="margin-left:"]{border-left:1px solid #000000; border-top:1px solid #000000; border-right:1px solid #000000; background-color: #FFFFFF;margin-left:0px !important;padding-left: 15px;}'+
  1656. 'form#userForm{border-left:1px solid #000000; border-bottom:1px solid #000000; border-right:1px solid #000000; background-color: #FFFFFF;}'+
  1657. '.tresc2 div[style*="background-color: #292f35"]{background-color: #FFFFFF !important;}'+ //cytat
  1658. /**artykuły*/
  1659. '#jc{background: none repeat scroll 0px 0px #DFE2E5; border: 1px solid #000000;}'+
  1660. '#jc .rbox{background-color: #DFE2E5;}'+
  1661. '#comments .comment-date{color: #252525;}'+
  1662. '#comments .comment-body{color: #252525;}'+
  1663. '#comments blockquote, #comments .hidden, #comments code, #comments pre{color: #252525;}'+
  1664. '#comments a{color: #174B54;}'+
  1665. /**profil*/
  1666. 'section#content .page > h2 {background: linear-gradient(#EDEEEE, #E2E3E3) !important;border-top: none !important;border-radius:5px;border-bottom:1px solid #B6B7B7 !important; color:#252525 !important;}'+
  1667. '#uddeim-overview .sectiontableentry1 {background-color: #ECECEC !important;}'+
  1668. '#uddeim-overview .sectiontableentry2 {background-color: #DEE0E2 !important;}'+
  1669. '#uddeim-overview>table {border-collapse: initial !important;}'+
  1670. '#uddeim-writeform input {background-color: #FFFFFF !important;}'+
  1671. /**seriale*/
  1672. 'span.yellowfont {color: #000000 !important;}'+
  1673. /**serial*/
  1674. 'section#content .tbl_top_powiadomienia {background: linear-gradient(#EDEEEE, #E2E3E3) !important;border-top: none !important;border-radius:5px;}'+
  1675. 'section#content .tbl_top_powiadomienia .head_l {color: #414141 !important;}'+
  1676. 'section#content .tbl_top_powiadomienia .head_r label {color: #414141 !important;}'+
  1677. '.serialNapisy .moreInfo {background-color: #DEE0E2 !important;}'+
  1678. '.serialNapisy .infofootertab {color: #000000 !important; background-color: #DEE0E2 !important; border-top: 1px solid #BBBBBB !important;}'+
  1679. /**n24 helper*/
  1680. 'table.table-layout tbody tr.odd td[data-n24h-star]{background-image: url('+icons.staroff+'), linear-gradient(#FFFFFF, #DEE0E2) !important;background-repeat: no-repeat !important;background-position: center !important;}'+
  1681. 'table.table-layout tbody tr.even td[data-n24h-star]{background-image: url('+icons.staroff+'), linear-gradient(#E1E1E1, #ECECEC) !important;background-repeat: no-repeat !important;background-position: center !important;}'+
  1682. 'table.table-layout tbody tr.odd td[data-n24h-star="on"]{background-image: url('+icons.staron+'), linear-gradient(#FFFFFF, #DEE0E2) !important;}'+
  1683. 'table.table-layout tbody tr.even td[data-n24h-star="on"]{background-image: url('+icons.staron+'), linear-gradient(#E1E1E1, #ECECEC) !important;}'+
  1684. 'table.table-layout tbody tr.odd td[data-n24h-star="auign"]{background-image: url('+icons.starign+'), linear-gradient(#FFFFFF, #DEE0E2) !important;}'+
  1685. 'table.table-layout tbody tr.even td[data-n24h-star="auign"]{background-image: url('+icons.starign+'), linear-gradient(#E1E1E1, #ECECEC) !important;}'+
  1686. 'table.table-layout tbody tr.odd td[data-n24h-star="trign"]{background-image: url('+icons.starign+'), linear-gradient(#FFFFFF, #DEE0E2) !important;}'+
  1687. 'table.table-layout tbody tr.even td[data-n24h-star="trign"]{background-image: url('+icons.starign+'), linear-gradient(#E1E1E1, #ECECEC) !important;}'+
  1688. 'th#n24h_tr_favhead{background-image: url('+icons.staron+'), linear-gradient(#2369B0, #104694, #2167AF) !important;background-repeat: no-repeat !important;background-position: center !important;}'+
  1689. '#n24h_tr_input_search, #n24h_tr_input_new{color: #000000 !important; border: 1px solid #CECFCF !important;}'+
  1690. '#n24h_tr_input_clear, #n24h_tr_input_add, #n24h_tr_input_remove {background-color: #F9F9F9 !important;color: #000000 !important; border: 1px solid #CECFCF !important;}'+
  1691. '#n24h_tr_shows_list {background-color: #FFFFFF !important;color: #000000 !important;border: 1px solid #CECFCF !important;}'+
  1692. '.n24h_tr_option {background-color: #FFFFFF !important;color: #000000 !important;}'+
  1693. 'div.n24h_comm_opener:hover {background-color: #F0F0F0 !important;}'+
  1694. 'table.table-layout thead tr th.n24h_sort_asc{background-image: url(run/images/arrsh.png) ,linear-gradient(#2369B0, #104694, #2167AF) !important; !important;background-repeat: no-repeat !important;background-position: right !important;}'+
  1695. 'table.table-layout thead tr th.n24h_sort_desc{background-image: url(run/images/arrs.png) ,linear-gradient(#2369B0, #104694, #2167AF) !important; !important;background-repeat: no-repeat !important;background-position: right !important;}';
  1696. /** n24 classic stop*/
  1697. switch (options.getValue('altskinid', '1')) {
  1698. case '1':
  1699. utils.insertcss(altcss1);
  1700. break;
  1701. case '2':
  1702. utils.insertcss(altcss2);
  1703. break;
  1704. default:
  1705. console.log('Błędny parametr "altskinid": '+options.getValue('altskinid', 'Err'));
  1706. }
  1707. },
  1708. shrinkButtons: function() {
  1709. var css='.avatar-menu-icons[class*="avatar-main-menu"] > li {padding-left: 5px; padding-right: 5px;}';
  1710. utils.insertcss(css);
  1711. },
  1712. /**
  1713. Usuń target="_blank" ze wszystkich odnośników
  1714. */
  1715. killTargetBlank: function() {
  1716. var targets=document.querySelectorAll('a[target="_blank"]');
  1717. for (var i=0;i<targets.length;i++)
  1718. {
  1719. targets[i].removeAttribute('target');
  1720. }
  1721. },
  1722. init: function() {
  1723. if (options.getValue('fixsearch', false))
  1724. misc.fixSearch();
  1725. if (options.getValue('killcover', false))
  1726. misc.killCover();
  1727. if (options.getValue('killimdbinfo', false))
  1728. misc.killIMDBInfo();
  1729. if (options.getValue('usesmallmenubuttons', false))
  1730. misc.shrinkButtons();
  1731. }
  1732. };
  1733.  
  1734. var n24h = {
  1735. /**
  1736. */
  1737. onLoad: function() {
  1738. options.init();
  1739. misc.init();
  1740. if(location.pathname.toLowerCase() === '/tlumaczenia')
  1741. {
  1742. tlumaczenia.init();
  1743. }
  1744. if(location.pathname.toLowerCase() === '/komentarze')
  1745. {
  1746. komentarze.init();
  1747. }
  1748. if((location.pathname.toLowerCase() === '/serial')||(location.pathname.toLowerCase().contains('/serial/')))
  1749. {
  1750. serial.init();
  1751. }
  1752. if (options.getValue('removetargetblank', false))
  1753. misc.killTargetBlank();
  1754. },
  1755. setAltSkin: function() {
  1756. if (options.getValue('usealtskin', false))
  1757. {
  1758. var head=document.querySelector('head');
  1759. var body=document.querySelector('body');
  1760. if ((!head)||(!body))
  1761. {
  1762. //upewnij się że mamy załadowane head i body
  1763. setTimeout(n24h.setAltSkin,1);
  1764. } else {
  1765. misc.altSkin();
  1766. }
  1767. }
  1768. },
  1769. /**
  1770. */
  1771. init: function()
  1772. {
  1773. window.addEventListener('DOMContentLoaded', n24h.onLoad, false);
  1774. n24h.setAltSkin();
  1775. }
  1776. };
  1777.  
  1778. n24h.init();