(MAL) My Anime List Filter

This script filters your anime list by type (movie, TV, etc.), score, airing status, number of episodes and rating

  1. // ==UserScript==
  2. // @name (MAL) My Anime List Filter
  3. // @namespace myanimelist.net
  4. // @include http://myanimelist.net/animelist/*
  5. // @include https://myanimelist.net/animelist/*
  6. // @require http://code.jquery.com/jquery-latest.min.js
  7. // @require http://code.jquery.com/ui/1.10.2/jquery-ui.js
  8. // @description This script filters your anime list by type (movie, TV, etc.), score, airing status, number of episodes and rating
  9. // @version 1.5.26
  10. // @grant GM_getValue
  11. // @grant GM_setValue
  12. // ==/UserScript==
  13.  
  14. typevarDefault = 'All';
  15. scorevarDefault = 'All';
  16. progressvarDefault = 'All';
  17. airingvar = 'All';
  18. ratingvarDefault = 'All';
  19. equalscoreDefault = '0';
  20. selecttypeDefault = 1;
  21. selectratDefault = 1;
  22. rangescoreDefault = 'Choose range';
  23. animenameDefault = '';
  24. enterTitle = 'All';
  25.  
  26. function myFunction() {
  27. selection = true;
  28. if ($(this).length > 0) {
  29. if ( $(this)[0].length == undefined || ( $(this).length == 1 && $(this).is("select") ) ) {
  30. var x=$(this).val();
  31. if ($(this).attr('class')=='type') {
  32. typevar=x;
  33. GM_setValue('type', typevar);
  34. }
  35. else if ($(this).attr('class')=='score') {
  36. scorevar=x;
  37. GM_setValue('score', scorevar);
  38. }
  39. else if ($(this).attr('class')=='progress') {
  40. progressvar=x;
  41. GM_setValue('progress', progressvar);
  42. }
  43. else if ($(this).attr('class')=='airing') {
  44. airingvar=x;
  45. GM_setValue(airingvar, $(this)[0].checked);
  46. }
  47. else if ($(this).attr('class')=='rating') {
  48. ratingvar=x;
  49. GM_setValue('rating', ratingvar);
  50. }
  51. else if ($(this).attr('id')=='select') {
  52. if (selecttype == parseInt(x)) {
  53. selection = false;
  54. }
  55. selecttype=parseInt(x);
  56. GM_setValue('select', selecttype.toString());
  57. }
  58. else if ($(this).attr('id')=='ratselect') {
  59. if (selectrat == parseInt(x)) {
  60. selection = false;
  61. }
  62. selectrat=parseInt(x);
  63. GM_setValue('ratselect', selectrat.toString());
  64. }
  65. else if ($(this).attr('id')=='equal') {
  66. equalscore=x;
  67. GM_setValue('equal', equalscore);
  68. if(equalscore == 4) {
  69. var bha = prompt('Choose score range separated by a minus','6-8');
  70. $("#choose").text(bha);
  71. rangescore=bha;
  72. GM_setValue('range', rangescore);
  73. }
  74. }
  75. else if ($(this).attr('id')=='name') {
  76. $(allprogress).prop('checked', true);
  77. animename=x;
  78. progressvar = "All";
  79. GM_setValue('name', animename);
  80. GM_setValue('progress', progressvar);
  81. }
  82. }
  83. }
  84. if (selection) {
  85. if (typevar!='All' || (scorevar!='All' && parseInt(equalscore) < 4) || ratingvar!='All' || !notairing.checked || !airingt.checked || !notyetaired.checked || progressvar!='All' || equalscore=='4' || animename != '') {
  86. $("tbody > tr:has(.td1,.td2)").hide();
  87. var exp="tbody > tr";
  88.  
  89. $.expr[':'].ratingEquals = $.expr.createPseudo(function(arg) {
  90. return function( elem ) {
  91. return $(elem).text().match("[\t\r\n\f\ ]" + arg + "[\t\r\n\f\ ]");
  92. };
  93. });
  94.  
  95. if (typevar!='All' && selecttype) { exp=exp+":has(td[width='50']:contains('"+typevar+"'))"; }
  96. else if (typevar!='All' && !selecttype) { exp=exp+":not(:has(td[width='50']:contains('"+typevar+"')))"; }
  97. if (scorevar!='All' && equalscore=='0') { exp=exp+":has(td[width='45']:contains('"+scorevar+"'))"; }
  98. else if (scorevar!='All' && equalscore=='1') { exp=exp+":has(td[width='45']:not(:contains('"+scorevar+"')))"; }
  99. if (ratingvar!='All' && selectrat) { exp=exp+":has(td[width='50']:ratingEquals('"+ratingvar+"'))"; }
  100. else if (ratingvar!='All' && !selectrat) { exp=exp+":not(:has(td[width='50']:ratingEquals('"+ratingvar+"')))"; }
  101.  
  102. if (!notairing.checked) { exp=exp+":has(td[style='border-left-width: 0'] > small:contains('Airing'),td[style='border-left-width: 0'] > small:contains('Not Yet Aired'))"; }
  103. if (!airingt.checked) { exp=exp+":not(:has(td[style='border-left-width: 0'] > small:contains('Airing')))"; }
  104. if (!notyetaired.checked) { exp=exp+":not(:has(td[style='border-left-width: 0'] > small:contains('Not Yet Aired')))"; }
  105.  
  106. if (progressvar!='All') {
  107. begin = parseInt(progressvar.split('-')[0]);
  108. end = parseInt(progressvar.split('-')[1]);
  109. }
  110. else if (animename != '') {
  111. if (animename == '-') {
  112. begin = 0;
  113. end = 0;
  114. } else {
  115. begin = animename.split('-')[0];
  116. end = animename.split('-')[1];
  117. if ( !isNaN(begin) && begin != '' ) {
  118. if ( end == undefined ) {
  119. end = begin;
  120. }
  121. else if ( isNaN(end) || end == '' ) {
  122. end = 10000;
  123. }
  124. }
  125. else if ( isNaN(begin) || begin == '' ) {
  126. begin = 1;
  127. }
  128. if ( parseInt(end) < parseInt(begin) ) {
  129. var temp = end;
  130. end = begin;
  131. begin = temp;
  132. }
  133. begin = parseInt(begin);
  134. end = parseInt(end);
  135. }
  136. }
  137. if (progressvar != 'All' || animename != '' ) {exp = $(exp).filter(function() { return parseInt($("td[width='70']", this).text().replace(/^.*\/(.*)$/, "$1").replace("-", "0")) <= end && parseInt($("td[width='70']", this).text().replace(/^.*\/(.*)$/, "$1").replace("-", "0")) >= begin; }); }
  138.  
  139. if (scorevar!='All' && equalscore=='2') { exp=$(exp).filter(function() { return parseInt($("td[width='45']", this).text()) > parseInt(scorevar); }); }
  140. else if (scorevar!='All' && equalscore=='3') { exp=$(exp).filter(function() { return parseInt($("td[width='45']", this).text()) < parseInt(scorevar); }); }
  141. else if (equalscore=='4') { scorebegin=parseInt(rangescore.split('-')[0]); scoreend=parseInt(rangescore.split('-')[1]); exp=$(exp).filter(function() { return parseInt($("td[width='45']", this).text()) <= scoreend && parseInt($("td[width='45']", this).text()) >= scorebegin; }); }
  142.  
  143. $(exp).each(function(){
  144. $(this).show();
  145. });
  146. } else {
  147. $("tbody > tr:has(.td1,.td2)").show();
  148. }
  149. }
  150. }
  151.  
  152. function resetFilters() {
  153. typevar = typevarDefault;
  154. scorevar = scorevarDefault;
  155. progressvar = progressvarDefault;
  156. ratingvar = ratingvarDefault;
  157. equalscore = equalscoreDefault;
  158. selecttype = selecttypeDefault;
  159. selectrat = selectratDefault;
  160. rangescore = rangescoreDefault;
  161. animename = animenameDefault;
  162.  
  163. airingt.checked = 'yes';
  164. notairing.checked = 'yes';
  165. notyetaired.checked = 'yes';
  166. menutype.value = selecttype;
  167. loadState(typevar, 'type');
  168. menuscore.value = equalscore;
  169. choose.innerHTML = rangescore;
  170. loadState(scorevar, 'score');
  171. namee.value = enterTitle;
  172. loadState(progressvar, 'progress');
  173. menurating.value = selectrat;
  174. loadState(ratingvar, 'rating');
  175.  
  176. GM_setValue('type', typevar);
  177. GM_setValue('score', scorevar);
  178. GM_setValue('progress', progressvar);
  179. GM_setValue('Airing', 'True');
  180. GM_setValue('Finished', 'True');
  181. GM_setValue('Not Yet Aired', 'True');
  182. GM_setValue('rating', ratingvar);
  183. GM_setValue('select', selecttype.toString());
  184. GM_setValue('ratselect', selectrat.toString());
  185. GM_setValue('equal', equalscore);
  186. GM_setValue('range', rangescore);
  187. GM_setValue('name', animename);
  188.  
  189. myFunction();
  190. }
  191.  
  192. $(document).ready(function() {
  193. $(".type,.score,.progress,.airing,#select,.rating,#ratselect,#equal").change(myFunction);
  194. $("#name").focusin(function() {
  195. if (this.value==enterTitle) { $(this).val(''); }
  196. });
  197. $("#name").focusout(function() {
  198. if (this.value=='') { $(this).val(enterTitle); }
  199. if (this.value=='0') { $(this).val('-'); }
  200. });
  201. $("#name").keyup(myFunction);
  202.  
  203. $(function() {
  204. $(".drag").draggable({
  205. // Remove right position so that two last options in 'Airing' table do not get distorted (breaked to a new line) when dragged close to the right edge of the screen.
  206. start: function(event, ui) {
  207. $(this).css('right', '');
  208. },
  209.  
  210. // Find position where image is dropped.
  211. stop: function(event, ui) {
  212. // Save dropped position.
  213. var stopPos = $(this).position();
  214. GM_setValue(this.id + ".left", stopPos.left + 'px');
  215. GM_setValue(this.id + ".top", stopPos.top + 'px');
  216. }
  217. });
  218. });
  219.  
  220. columnChecker = $('td[class="table_header"][width="50"]');
  221. if (columnChecker.length < 2) {
  222. if (columnChecker.length == 0) {
  223. $(table).hide();
  224. $(table5).hide();
  225. } else {
  226. columnChecker = $('td[class="table_header"][width="50"][nowrap=""]');
  227. if (columnChecker.length == 1) {
  228. $(table5).hide();
  229. } else {
  230. $(table).hide();
  231. }
  232. }
  233. }
  234. typevar = loadValue(typevarDefault, 'type', table);
  235. selecttype = parseInt(loadValue(selecttypeDefault, 'select', table));
  236. ratingvar = loadValue(ratingvarDefault, 'rating', table5);
  237. selectrat = parseInt(loadValue(selectratDefault, 'ratselect', table5));
  238.  
  239. columnChecker = $('td[class="table_header"][width="45"]');
  240. if (columnChecker.length < 1) {
  241. $(table2).hide();
  242. }
  243. scorevar = loadValue(scorevarDefault, 'score', table2);
  244. equalscore = loadValue(equalscoreDefault, 'equal', table2);
  245. rangescore = loadValue(rangescoreDefault, 'range', table2);
  246.  
  247. columnChecker = $('td[class="table_header"][width="70"]');
  248. if (columnChecker.length < 1) {
  249. $(table3).hide();
  250. }
  251. progressvar = loadValue(progressvarDefault, 'progress', table3);
  252. animename = loadValue(animenameDefault, 'name', table3);
  253.  
  254. //One 'Airing' and one 'Not Yet Aired' strings are present in the filter table itself
  255. if ($("tr:contains('Airing')").length == 1 && $("tr:contains('Not Yet Aired')").length == 1) {
  256. $(table4).hide();
  257. }
  258. airingt.checked = loadValue(airingt.checked, 'Airing', table4);
  259. notairing.checked = loadValue(notairing.checked, 'Finished', table4);
  260. notyetaired.checked = loadValue(notyetaired.checked, 'Not Yet Aired', table4);
  261.  
  262.  
  263. if ( $(table).is(':visible') ) {
  264. menutype.value = selecttype;
  265. loadState(typevar, 'type');
  266. }
  267. if ( $(table2).is(':visible') ) {
  268. menuscore.value = equalscore;
  269. if (equalscore == 4) {
  270. choose.innerHTML = rangescore;
  271. } else {
  272. rangescore = '';
  273. }
  274. loadState(scorevar, 'score');
  275. }
  276. if ( $(table3).is(':visible') ) {
  277. if (animename != '') {
  278. namee.value=animename;
  279. }
  280. loadState(progressvar, 'progress');
  281. }
  282. if ( $(table5).is(':visible') ) {
  283. menurating.value = selectrat;
  284. loadState(ratingvar, 'rating');
  285. }
  286. myFunction();
  287.  
  288. //Element Placing
  289. resetPlacer = $('td#mal_cs_powered');
  290. var resetDiv = document.createElement('td');
  291. resetDiv.setAttribute('id','mal_cs_reset');
  292. var resetButton = document.createElement('input');
  293. //resetButton.style.marginLeft = '30px';
  294. resetButton.setAttribute('type','button');
  295. resetButton.setAttribute('value','Reset Filters');
  296. resetButton.setAttribute('id','reset_filters');
  297. resetButton.style.fontSize = '10px';
  298. $(resetButton).click(resetFilters);
  299. resetPlacer.before(resetDiv);
  300. $(resetDiv).append(resetButton);
  301.  
  302. /*$(".drag div").hide();
  303. $(".drag").hover(function() {
  304. $("div", this).stop(true, true).slideToggle(200);
  305. })*/
  306. });
  307.  
  308. table=document.createElement('table');
  309. table.className='drag';
  310. table.id='type';
  311. table.style.right='190px';
  312. table2=document.createElement('table');
  313. table2.className='drag';
  314. table2.id='score';
  315. table2.style.right='40px';
  316. table3=document.createElement('table');
  317. table3.className='drag';
  318. table3.id='progress';
  319. table3.style.right='190px';
  320. table4=document.createElement('table');
  321. table4.className='drag';
  322. table4.id='airing';
  323. table4.style.right='60px';
  324. table5=document.createElement('table');
  325. table5.className='drag';
  326. table5.id='rating';
  327. table5.style.right='190px';
  328.  
  329. type=document.createElement('td');
  330. type.className='td';
  331. score=document.createElement('td');
  332. score.className='td';
  333. progress=document.createElement('td');
  334. progress.className='td';
  335. airing=document.createElement('td');
  336. airing.className='td';
  337. rating=document.createElement('td');
  338. rating.className='td';
  339.  
  340. headtype=document.createElement('tr');
  341. headscore=document.createElement('tr');
  342. headprogress=document.createElement('tr');
  343. headairing=document.createElement('tr');
  344. headrating=document.createElement('tr');
  345.  
  346. divtype=document.createElement('div');
  347. divscore=document.createElement('div');
  348. divprogress=document.createElement('div');
  349. divairing=document.createElement('div');
  350. divrating=document.createElement('div');
  351.  
  352. imagetype=document.createElement('div');
  353. imagetype.className='group_header';
  354. imagetype.innerHTML='type';
  355. imagescore=document.createElement('div');
  356. imagescore.className='group_header';
  357. imagescore.innerHTML='score';
  358. imageprogress=document.createElement('div');
  359. imageprogress.className='group_header';
  360. imageprogress.innerHTML='episodes';
  361. imageairing=document.createElement('div');
  362. imageairing.className='group_header';
  363. imageairing.innerHTML='status';
  364. imagerating=document.createElement('div');
  365. imagerating.className='group_header';
  366. imagerating.innerHTML='rating';
  367.  
  368. tr1=document.createElement('tr');
  369. tr2=document.createElement('tr');
  370. tr3=document.createElement('tr');
  371. tr4=document.createElement('tr');
  372. tr5=document.createElement('tr');
  373. tr6=document.createElement('tr');
  374. tr7=document.createElement('tr');
  375. tr8=document.createElement('tr');
  376. tr9=document.createElement('tr');
  377. tr10=document.createElement('tr');
  378. tr11=document.createElement('tr');
  379. tr12=document.createElement('tr');
  380. tr13=document.createElement('tr');
  381. tr14=document.createElement('tr');
  382. tr15=document.createElement('tr');
  383. tr16=document.createElement('tr');
  384. tr17=document.createElement('tr');
  385. tr18=document.createElement('tr');
  386. tr19=document.createElement('tr');
  387. tr20=document.createElement('tr');
  388. tr21=document.createElement('tr');
  389. tr22=document.createElement('tr');
  390. tr23=document.createElement('tr');
  391. tr24=document.createElement('tr');
  392. tr25=document.createElement('tr');
  393. tr26=document.createElement('tr');
  394. tr27=document.createElement('tr');
  395. tr28=document.createElement('tr');
  396. tr29=document.createElement('tr');
  397. tr30=document.createElement('tr');
  398. tr31=document.createElement('tr');
  399. tr32=document.createElement('tr');
  400. tr33=document.createElement('tr');
  401. tr34=document.createElement('tr');
  402. tr35=document.createElement('tr');
  403. tr36=document.createElement('tr');
  404. tr37=document.createElement('tr');
  405. tr38=document.createElement('tr');
  406. tr39=document.createElement('tr');
  407.  
  408. alltype=document.createElement('input');
  409. alltype.className='type';
  410. alltype.value='All';
  411. alltype.checked='yes';
  412. alltypetext=document.createElement('a');
  413. alltypetext.innerHTML='All';
  414.  
  415. tv=document.createElement('input');
  416. tv.className='type';
  417. tv.value='TV';
  418. tvtext=document.createElement('a');
  419. tvtext.innerHTML='TV';
  420.  
  421. movie=document.createElement('input');
  422. movie.className='type';
  423. movie.value='Movie';
  424. movietext=document.createElement('a');
  425. movietext.innerHTML='Movie';
  426.  
  427. ova=document.createElement('input');
  428. ova.className='type';
  429. ova.value='OVA';
  430. ovatext=document.createElement('a');
  431. ovatext.innerHTML='OVA';
  432.  
  433. ona=document.createElement('input');
  434. ona.className='type';
  435. ona.value='ONA';
  436. onatext=document.createElement('a');
  437. onatext.innerHTML='ONA';
  438.  
  439. special=document.createElement('input');
  440. special.className='type';
  441. special.value='Special';
  442. specialtext=document.createElement('a');
  443. specialtext.innerHTML='Special';
  444.  
  445. music=document.createElement('input');
  446. music.className='type';
  447. music.value='Music';
  448. musictext=document.createElement('a');
  449. musictext.innerHTML='Music';
  450.  
  451. /*unknown=document.createElement('input');
  452. unknown.className='type';
  453. unknown.value=' ';
  454. unknowntext=document.createElement('a');
  455. unknowntext.innerHTML='Empty';*/
  456.  
  457.  
  458. menutype=document.createElement('select');
  459. menutype.id='select';
  460.  
  461. select=document.createElement('option');
  462. select.value='1';
  463. select.selected='selected';
  464. select.innerHTML='Select';
  465.  
  466. remove=document.createElement('option');
  467. remove.value='0';
  468. remove.innerHTML='Remove';
  469.  
  470.  
  471. allscore=document.createElement('input');
  472. allscore.className='score';
  473. allscore.value='All';
  474. allscore.checked='yes';
  475. allscoretext=document.createElement('a');
  476. allscoretext.innerHTML='All';
  477.  
  478. score10=document.createElement('input');
  479. score10.className='score';
  480. score10.value='10';
  481. score10text=document.createElement('a');
  482. score10text.innerHTML='10';
  483.  
  484. score9=document.createElement('input');
  485. score9.className='score';
  486. score9.value='9';
  487. score9text=document.createElement('a');
  488. score9text.innerHTML='9';
  489.  
  490. score8=document.createElement('input');
  491. score8.className='score';
  492. score8.value='8';
  493. score8text=document.createElement('a');
  494. score8text.innerHTML='8';
  495.  
  496. score7=document.createElement('input');
  497. score7.className='score';
  498. score7.value='7';
  499. score7text=document.createElement('a');
  500. score7text.innerHTML='7';
  501.  
  502. score6=document.createElement('input');
  503. score6.className='score';
  504. score6.value='6';
  505. score6text=document.createElement('a');
  506. score6text.innerHTML='6';
  507.  
  508. score5=document.createElement('input');
  509. score5.className='score';
  510. score5.value='5';
  511. score5text=document.createElement('a');
  512. score5text.innerHTML='5';
  513.  
  514. score4=document.createElement('input');
  515. score4.className='score';
  516. score4.value='4';
  517. score4text=document.createElement('a');
  518. score4text.innerHTML='4';
  519.  
  520. score3=document.createElement('input');
  521. score3.className='score';
  522. score3.value='3';
  523. score3text=document.createElement('a');
  524. score3text.innerHTML='3';
  525.  
  526. score2=document.createElement('input');
  527. score2.className='score';
  528. score2.value='2';
  529. score2text=document.createElement('a');
  530. score2text.innerHTML='2';
  531.  
  532. score1=document.createElement('input');
  533. score1.className='score';
  534. score1.value='1';
  535. score1text=document.createElement('a');
  536. score1text.innerHTML='1';
  537.  
  538. scorenull=document.createElement('input');
  539. scorenull.className='score';
  540. scorenull.value='-';
  541. scorenulltext=document.createElement('a');
  542. scorenulltext.innerHTML='-';
  543.  
  544.  
  545. menuscore=document.createElement('select');
  546. menuscore.id='equal';
  547.  
  548. equal=document.createElement('option');
  549. equal.value='0';
  550. equal.selected='selected';
  551. equal.innerHTML='Equal to';
  552.  
  553. notequal=document.createElement('option');
  554. notequal.value='1';
  555. notequal.innerHTML='Not equal to';
  556.  
  557. greater=document.createElement('option');
  558. greater.value='2';
  559. greater.innerHTML='Greater than';
  560.  
  561. smaller=document.createElement('option');
  562. smaller.value='3';
  563. smaller.innerHTML='Smaller than';
  564.  
  565. choose=document.createElement('option');
  566. choose.value='4';
  567. choose.id='choose';
  568. choose.innerHTML='Choose range';
  569.  
  570.  
  571. namee=document.createElement('input');
  572. namee.id='name';
  573. namee.type='text';
  574. namee.style.width='80px';
  575. namee.value=enterTitle;
  576.  
  577. allprogress=document.createElement('input');
  578. allprogress.className='progress';
  579. allprogress.value='All';
  580. allprogress.checked='yes';
  581. allprogresstext=document.createElement('a');
  582. allprogresstext.innerHTML='Range';
  583.  
  584. short=document.createElement('input');
  585. short.className='progress';
  586. short.value='1-24';
  587. shorttext=document.createElement('a');
  588. shorttext.innerHTML='Short';
  589.  
  590. medium=document.createElement('input');
  591. medium.className='progress';
  592. medium.value='25-49';
  593. mediumtext=document.createElement('a');
  594. mediumtext.innerHTML='Medium';
  595.  
  596. long=document.createElement('input');
  597. long.className='progress';
  598. long.value='50-99';
  599. longtext=document.createElement('a');
  600. longtext.innerHTML='Long';
  601.  
  602. infinite=document.createElement('input');
  603. infinite.className='progress';
  604. infinite.value='100-10000';
  605. infinitetext=document.createElement('a');
  606. infinitetext.innerHTML='Infinite';
  607.  
  608.  
  609. allairing=document.createElement('input');
  610. allairing.className='airing';
  611. allairing.value='All';
  612. allairing.checked='yes';
  613. allairingtext=document.createElement('a');
  614. allairingtext.innerHTML='All';
  615.  
  616. airingt=document.createElement('input');
  617. airingt.className='airing';
  618. airingt.value='Airing';
  619. airingt.checked = 'yes';
  620. airingtext=document.createElement('a');
  621. airingtext.innerHTML='Airing';
  622.  
  623. notairing=document.createElement('input');
  624. notairing.className='airing';
  625. notairing.value='Finished';
  626. notairing.checked = 'yes';
  627. notairingtext=document.createElement('a');
  628. notairingtext.innerHTML='Finished';
  629.  
  630. notyetaired=document.createElement('input');
  631. notyetaired.className='airing';
  632. notyetaired.value='Not Yet Aired';
  633. notyetaired.checked = 'yes';
  634. notyetairedtext=document.createElement('a');
  635. notyetairedtext.innerHTML='Not Yet Aired';
  636.  
  637.  
  638. allrating=document.createElement('input');
  639. allrating.className='rating';
  640. allrating.value='All';
  641. allrating.checked='yes';
  642. allratingtext=document.createElement('a');
  643. allratingtext.innerHTML='All';
  644.  
  645. grating=document.createElement('input');
  646. grating.className='rating';
  647. grating.value='G';
  648. gratingtext=document.createElement('a');
  649. gratingtext.innerHTML='G';
  650.  
  651. pgrating=document.createElement('input');
  652. pgrating.className='rating';
  653. pgrating.value='PG';
  654. pgratingtext=document.createElement('a');
  655. pgratingtext.innerHTML='PG';
  656.  
  657. pg13rating=document.createElement('input');
  658. pg13rating.className='rating';
  659. pg13rating.value='PG-13';
  660. pg13ratingtext=document.createElement('a');
  661. pg13ratingtext.innerHTML='PG-13';
  662.  
  663. rrating=document.createElement('input');
  664. rrating.className='rating';
  665. rrating.value='R';
  666. rratingtext=document.createElement('a');
  667. rratingtext.innerHTML='R';
  668.  
  669. rprating=document.createElement('input');
  670. rprating.className='rating';
  671. rprating.value='R\\+';
  672. rpratingtext=document.createElement('a');
  673. rpratingtext.innerHTML='R+';
  674.  
  675. rxrating=document.createElement('input');
  676. rxrating.className='rating';
  677. rxrating.value='Rx';
  678. rxratingtext=document.createElement('a');
  679. rxratingtext.innerHTML='Rx';
  680.  
  681. /*unknownrating=document.createElement('input');
  682. unknownrating.className='rating';
  683. unknownrating.value=' ';
  684. unknownratingtext=document.createElement('a');
  685. unknownratingtext.innerHTML='Empty';*/
  686.  
  687. menurating=document.createElement('select');
  688. menurating.id='ratselect';
  689.  
  690. ratselect=document.createElement('option');
  691. ratselect.value='1';
  692. ratselect.selected='selected';
  693. ratselect.innerHTML='Select';
  694.  
  695. ratremove=document.createElement('option');
  696. ratremove.value='0';
  697. ratremove.innerHTML='Remove';
  698.  
  699. document.body.appendChild(table);
  700. table.appendChild(type);
  701. type.appendChild(headtype);
  702. headtype.appendChild(imagetype);
  703. type.appendChild(divtype);
  704. divtype.appendChild(tr27);
  705. tr27.appendChild(menutype);
  706. menutype.appendChild(select);
  707. menutype.appendChild(remove);
  708. divtype.appendChild(tr16);
  709. tr16.appendChild(alltype);
  710. tr16.appendChild(alltypetext);
  711. divtype.appendChild(tr1);
  712. tr1.appendChild(tv);
  713. tr1.appendChild(tvtext);
  714. divtype.appendChild(tr2);
  715. tr2.appendChild(movie);
  716. tr2.appendChild(movietext);
  717. divtype.appendChild(tr3);
  718. tr3.appendChild(ova);
  719. tr3.appendChild(ovatext);
  720. divtype.appendChild(tr23);
  721. tr23.appendChild(ona);
  722. tr23.appendChild(onatext);
  723. divtype.appendChild(tr4);
  724. tr4.appendChild(special);
  725. tr4.appendChild(specialtext);
  726. divtype.appendChild(tr38);
  727. tr38.appendChild(music);
  728. tr38.appendChild(musictext);
  729. /*divtype.appendChild(tr24);
  730. tr24.appendChild(unknown);
  731. tr24.appendChild(unknowntext);*/
  732.  
  733. document.body.appendChild(table2);
  734. table2.appendChild(score);
  735. score.appendChild(headscore);
  736. headscore.appendChild(imagescore);
  737. score.appendChild(divscore);
  738. divscore.appendChild(tr28);
  739. tr28.appendChild(menuscore);
  740. menuscore.appendChild(equal);
  741. menuscore.appendChild(notequal);
  742. menuscore.appendChild(greater);
  743. menuscore.appendChild(smaller);
  744. menuscore.appendChild(choose);
  745. divscore.appendChild(tr17);
  746. tr17.appendChild(allscore);
  747. tr17.appendChild(allscoretext);
  748. divscore.appendChild(tr5);
  749. tr5.appendChild(score10);
  750. tr5.appendChild(score10text);
  751. divscore.appendChild(tr6);
  752. tr6.appendChild(score9);
  753. tr6.appendChild(score9text);
  754. divscore.appendChild(tr7);
  755. tr7.appendChild(score8);
  756. tr7.appendChild(score8text);
  757. divscore.appendChild(tr8);
  758. tr8.appendChild(score7);
  759. tr8.appendChild(score7text);
  760. divscore.appendChild(tr9);
  761. tr9.appendChild(score6);
  762. tr9.appendChild(score6text);
  763. divscore.appendChild(tr10);
  764. tr10.appendChild(score5);
  765. tr10.appendChild(score5text);
  766. divscore.appendChild(tr11);
  767. tr11.appendChild(score4);
  768. tr11.appendChild(score4text);
  769. divscore.appendChild(tr12);
  770. tr12.appendChild(score3);
  771. tr12.appendChild(score3text);
  772. divscore.appendChild(tr13);
  773. tr13.appendChild(score2);
  774. tr13.appendChild(score2text);
  775. divscore.appendChild(tr14);
  776. tr14.appendChild(score1);
  777. tr14.appendChild(score1text);
  778. divscore.appendChild(tr15);
  779. tr15.appendChild(scorenull);
  780. tr15.appendChild(scorenulltext);
  781.  
  782. document.body.appendChild(table3);
  783. table3.appendChild(progress);
  784. progress.appendChild(headprogress);
  785. headprogress.appendChild(imageprogress);
  786. progress.appendChild(divprogress);
  787. divprogress.appendChild(tr29);
  788. tr29.appendChild(namee);
  789. divprogress.appendChild(tr18);
  790. tr18.appendChild(allprogress);
  791. tr18.appendChild(allprogresstext);
  792. divprogress.appendChild(tr19);
  793. tr19.appendChild(short);
  794. tr19.appendChild(shorttext);
  795. divprogress.appendChild(tr20);
  796. tr20.appendChild(medium);
  797. tr20.appendChild(mediumtext);
  798. divprogress.appendChild(tr21);
  799. tr21.appendChild(long);
  800. tr21.appendChild(longtext);
  801. divprogress.appendChild(tr22);
  802. tr22.appendChild(infinite);
  803. tr22.appendChild(infinitetext);
  804.  
  805. document.body.appendChild(table4);
  806. table4.appendChild(airing);
  807. airing.appendChild(headairing);
  808. headairing.appendChild(imageairing);
  809. airing.appendChild(divairing);
  810. /*divairing.appendChild(tr24);
  811. tr24.appendChild(allairing);
  812. tr24.appendChild(allairingtext);*/
  813. divairing.appendChild(tr25);
  814. tr25.appendChild(airingt);
  815. tr25.appendChild(airingtext);
  816. divairing.appendChild(tr26);
  817. tr26.appendChild(notairing);
  818. tr26.appendChild(notairingtext);
  819. divairing.appendChild(tr39);
  820. tr39.appendChild(notyetaired);
  821. tr39.appendChild(notyetairedtext);
  822.  
  823. document.body.appendChild(table5);
  824. table5.appendChild(rating);
  825. rating.appendChild(headrating);
  826. headrating.appendChild(imagerating);
  827. rating.appendChild(divrating);
  828. divrating.appendChild(tr30);
  829. tr30.appendChild(menurating);
  830. menurating.appendChild(ratselect);
  831. menurating.appendChild(ratremove);
  832. divrating.appendChild(tr31);
  833. tr31.appendChild(allrating);
  834. tr31.appendChild(allratingtext);
  835. divrating.appendChild(tr32);
  836. tr32.appendChild(grating);
  837. tr32.appendChild(gratingtext);
  838. divrating.appendChild(tr33);
  839. tr33.appendChild(pgrating);
  840. tr33.appendChild(pgratingtext);
  841. divrating.appendChild(tr34);
  842. tr34.appendChild(pg13rating);
  843. tr34.appendChild(pg13ratingtext);
  844. divrating.appendChild(tr35);
  845. tr35.appendChild(rrating);
  846. tr35.appendChild(rratingtext);
  847. divrating.appendChild(tr36);
  848. tr36.appendChild(rprating);
  849. tr36.appendChild(rpratingtext);
  850. divrating.appendChild(tr37);
  851. tr37.appendChild(rxrating);
  852. tr37.appendChild(rxratingtext);
  853. /*divrating.appendChild(tr24);
  854. tr24.appendChild(unknownrating);
  855. tr24.appendChild(unknownratingtext);*/
  856.  
  857.  
  858. $(".drag").css({"position":"fixed","top":"100px","background":"white","opacity":"0.7","padding":"10px","borderRadius":"10px"});
  859. $(".group_header").css({"font-size":"14pt","font-family":"Verdana, Arial, sans-serif","font-weight":"normal","color":"black"});
  860. table3.style.top='325px';
  861. table4.style.top='465px';
  862. table5.style.top='510px';
  863. // Load saved position (if present)
  864. function loadPos (ID) {
  865. leftX = GM_getValue(ID + '.left');
  866. topY = GM_getValue(ID + '.top');
  867. if(leftX != null) {
  868. document.getElementById(ID).style.left = leftX;
  869. document.getElementById(ID).style.right = '';
  870. }
  871. if(topY != null) {
  872. document.getElementById(ID).style.top = topY;
  873. }
  874. }
  875. loadPos('type');
  876. loadPos('score');
  877. loadPos('progress');
  878. loadPos('airing');
  879. loadPos('rating');
  880. $(".td a").css({"color":"black"});
  881. $(".type").attr({type:"radio",name:"group1"});
  882. $(".score").attr({type:"radio",name:"group2"});
  883. $(".progress").attr({type:"radio",name:"group3"});
  884. $(".airing").attr({type:"checkbox",name:"group4"});
  885. $(".select").attr({type:"radio",name:"group5"});
  886. $(".equal").attr({type:"radio",name:"group6"});
  887. $(".rating").attr({type:"radio",name:"group7"});
  888.  
  889. function loadValue(defaultValue, value, tableValue) {
  890. if ( $(tableValue).is(':visible') ) {
  891. loaded = GM_getValue(value);
  892. if(loaded != null) {
  893. return loaded;
  894. } else {
  895. return defaultValue;
  896. }
  897. } else {
  898. return defaultValue;
  899. }
  900. }
  901. function loadState(value, classVal)
  902. {
  903. var allInputs = document.getElementsByTagName("input");
  904. for(var x=0; x < allInputs.length; x++) {
  905. if((allInputs[x].value == value) && (allInputs[x].className == classVal)) {
  906. var byValue = allInputs[x];
  907. }
  908. }
  909. $(byValue).prop('checked', true);
  910. }