WebAccessibility Initiative WAI
Strategies, standards, resources to make the Web accessible to people with disabilities
Web accessibility evaluation tools are software programs or online services that help you determine if web content meets accessibility guidelines. This page provides a list of such tools.
To determine what kind of tool you need and how they are able to assist you, see Selecting Web Accessibility Evaluation Tools.
Submit your tool
Tools list
Showing 20 tools
' +'
Previous page
' +'' +'
Next page
' +'
In addition, users can audit their mobile website against WCAG 2.x AA and share recommendations .","form_name":"submission","form_version":"1","guideline":["WCAG 2.2","WCAG 2.1","WCAG 2.0"],"language":["en"],"license":["Limited free functionality","Time-limited trial","Subscription",""],"product":["Website","Mobile application"],"provider":"Accessible Resources Ltd","publish-permission":"on","purpose":["Automated testing","Manual testing"],"readterms":"on","release":"2015-01-01","repository":"wai-evaluation-tools-list","submission_date":"2023-12-08T15:25:39.358Z","submission_ref":"0aebfbe0-95de-11ee-89f7-3bd111a66cf7","technology":["HTML / XHTML","CSS"],"title":"Color Contrast","type":["Mobile application"],"update":"2023-12-08","website":"https://apps.apple.com/us/app/color-contrast/id1095478187"},"976d27f0-95d5-11ee-bd39-a7b46173c51d":{"a11yloc":"","actrules":"","assists":["Generating reports of evaluation results","Creating an accessibility score","Providing step-by-step evaluation guidance"],"automated":["Entire website / software / product"],"comments":"","contact":"admin@achecks.org","features":"Check the Accessibility of a PDF Document via Tingtun.","form_name":"submission","form_version":"1","guideline":["WCAG 2.0"],"language":["en"],"license":["Free","Subscription",""],"product":["Document"],"provider":"Cantan Group","publish-permission":"on","purpose":["Automated testing"],"readterms":"on","release":"2015-05-01","repository":"wai-evaluation-tools-list","submission_date":"2023-12-08T14:25:09.615Z","submission_ref":"976d27f0-95d5-11ee-bd39-a7b46173c51d","technology":["PDF"],"title":"Tingtun PDF Accessibility Checker","type":["Online tool"],"update":"2023-12-08","website":"https://achecks.org/tingtun-pdf-accessibility-checker"},"e32f85e0-95f6-11ee-b540-3d94eb89890e":{"a11yloc":"https://sa11y.netlify.app/accessibility/","actrules":"","assists":["Generating reports of evaluation results","Displaying information within web pages","Creating an accessibility score","Providing step-by-step evaluation guidance"],"automated":["Single page/screen"],"browsers":["Chrome","Safari","Edge","Firefox","Opera","Other"],"comments":"","contact":"adam.chaboryk@torontomu.ca","features":"Sa11y is an accessibility quality assurance tool that visually highlights common accessibility and usability issues. Geared towards content authors, Sa11y straightforwardly identifies errors or warnings at the source with a simple tooltip on how to fix them.","form_name":"submission","form_version":"1","guideline":["WCAG 2.1"],"language":["en","fr","pl","uk","es","sv","de"],"license":["Free","Open source"],"product":["Website"],"provider":"Toronto Metropolitan University","publish-permission":"on","purpose":["Automated testing"],"readterms":"on","release":"2020-05-21","repository":"wai-evaluation-tools-list","submission_date":"2023-12-08T18:23:30.110Z","submission_ref":"e32f85e0-95f6-11ee-b540-3d94eb89890e","technology":["HTML / XHTML"],"title":"Sa11y","type":["Browser plugin","Bookmarklet","CMS plugin"],"update":"2023-12-08","website":"https://sa11y.netlify.app"},"9166f120-9773-11ee-b17c-2b6cd2121edd":{"a11yloc":"https://qualweb.di.fc.ul.pt/evaluator/about","actrules":"https://www.w3.org/WAI/standards-guidelines/act/implementations/qualweb/","assists":["Generating reports of evaluation results"],"automated":["Single page/screen"],"browsers":["Chrome"],"comments":"","contact":"qualweb@fc.ul.pt","desktop":["Windows","MacOS","Linux"],"features":"QualWeb is an automated accessibility checker that assesses webpage conformance to ACT-Rules and WCAG 2.1 HTML and CSS techniques. QualWeb can be used as part of your application, through a command line interface or via its website. QualWeb is the engine of the Portuguese Accessibility Observatory.","form_name":"submission","form_version":"1","guideline":["WCAG 2.1"],"language":["en","pt","fi","sv","nb"],"license":["Free",""],"product":["Website","Source code"],"provider":"Faculdade de Ciências da Universidade de Lisboa","publish-permission":"on","purpose":["Automated testing"],"readterms":"on","release":"2008-09-01","repository":"wai-evaluation-tools-list","submission_date":"2023-12-10T15:48:31.154Z","submission_ref":"9166f120-9773-11ee-b17c-2b6cd2121edd","technology":["HTML / XHTML","CSS"],"title":"QualWeb","type":["Browser plugin","Online tool","Server-side integration","Command-line / CI"],"update":"2023-12-10","website":"https://qualweb.di.fc.ul.pt/"},"78a69fa0-9ae8-11ee-8ddc-67a6e7498c52":{"a11yloc":"https://aaardvarkaccessibility.com/accessibility-statement/","actrules":"","assists":["Generating reports of evaluation results","Displaying information within web pages"],"automated":["Component","Single page/screen","Sample of pages/screens","Entire website / software / product","Restricted or password protected pages"],"browsers":["Chrome"],"comments":"","contact":"natalie.maclees@nsquared.io","features":"AAArdvark streamlines web accessibility testing and audits with features like automated issue scanning, visual view of accessibility issues, efficient logging of issues found in manual testing, remediation management, and comprehensive reporting and tracking. Everything digital professionals need for achieving accessibility compliance in one tool.","form_name":"submission","form_version":"1","guideline":["WCAG 2.2","WCAG 2.1","WCAG 2.0"],"language":["en"],"license":["Limited free functionality","Subscription","One-time purchase",""],"product":["Website"],"provider":"N Squared Digital, LLC","publish-permission":"on","purpose":["Automated testing","Manual testing"],"readterms":"on","release":"2023-11-01","repository":"wai-evaluation-tools-list","submission_date":"2023-12-15T01:22:54.234Z","submission_ref":"78a69fa0-9ae8-11ee-8ddc-67a6e7498c52","technology":["HTML / XHTML"],"title":"AAArdvark","type":["Browser plugin","Online tool","CMS plugin"],"update":"2023-12-15","website":"https://aaardvarkaccessibility.com/"},"ad56ac50-9a6f-11ee-89bd-6f506cafee02":{"a11yloc":"","actrules":"","assists":["Generating reports of evaluation results","Displaying information within web pages","Creating an accessibility score","Providing step-by-step evaluation guidance"],"automated":["Single page/screen","Entire website / software / product","Restricted or password protected pages"],"browsers":["Chrome","Edge","Firefox"],"comments":"","contact":"info@monsido.com","desktop":["Windows","MacOS"],"features":"The Monsido Platform includes a cohesive suite of tools for web accessibility, website quality assurance, brand and content compliance, user consent management, social and web content archiving, and more. ","form_name":"submission","form_version":"1","guideline":["WCAG 2.2","WCAG 2.1","WCAG 2.0"],"language":["da","en","nl","no"],"license":["Limited free functionality","Subscription",""],"product":["Website","Document","Source code","Other"],"provider":"Monsido","publish-permission":"on","purpose":["Automated testing","Manual testing","Simulated user experience"],"readterms":"on","release":"2017-07-01","repository":"wai-evaluation-tools-list","submission_date":"2023-12-14T10:58:13.525Z","submission_ref":"ad56ac50-9a6f-11ee-89bd-6f506cafee02","technology":["HTML / XHTML","CSS","PDF","Microsoft Office documents"],"title":"Monsido","type":["Browser plugin","Online tool","CMS plugin"],"update":"2023-12-14","website":"https://monsido.com/"},"c90fcf90-bc56-11ee-9a94-a75c916a3f77":{"a11yloc":"","actrules":"","assists":["Displaying information within web pages"],"automated":["Single page/screen","Restricted or password protected pages"],"browsers":["Chrome"],"comments":"","contact":"support@silktide.com","desktop":["Windows","MacOS","Linux"],"features":"Silktide's free accessibility checker tests your web page for over 200 WCAG issues, giving you straightforward, step-by-step guidance. The Chrome plugin highlights accessibility issues on each page, includes information on how to fix them, and offers a range of accessibility tools to help you monitor WCAG and ADA compliance.","form_name":"submission","form_version":"1","guideline":["WCAG 2.2","WCAG 2.1","WCAG 2.0"],"language":["en"],"license":["Free",""],"product":["Website"],"provider":"Silktide","publish-permission":"on","purpose":["Automated testing","Simulated user experience"],"readterms":"on","release":"2024-01-01","repository":"wai-evaluation-tools-list","submission_date":"2024-01-26T14:25:42.153Z","submission_ref":"c90fcf90-bc56-11ee-9a94-a75c916a3f77","technology":["HTML / XHTML","CSS"],"title":"Silktide accessibility checker","type":["Browser plugin"],"update":"2024-01-26","website":"https://silktide.com/tools/toolbar/"}}`;importJson.replace("\\","\\\\");const jsonTools = JSON.parse(importJson);const jsonFilters = JSON.parse(String.raw`[{"id":"purpose","name":"Purpose","infoForm":"What type of evaluations does this tool support?","collapsed":"false","type":"checkbox","order":"default","showfilter":true,"options":[{"id":"automated","name":"Automated testing"},{"id":"manual","name":"Manual testing"},{"id":"simulation","name":"Simulated user experience"}]},{"id":"product","name":"Product evaluated","collapsed":"false","type":"checkbox","order":"default","showfilter":true,"options":[{"id":"website","name":"Website"},{"id":"productMobileApplication","name":"Mobile application"},{"id":"document","name":"Document"},{"id":"sourceCode","name":"Source code"},{"id":"otherProduct","name":"Other"}]},{"id":"license","name":"Paid or free","collapsed":"false","type":"checkbox","order":"custom","showfilter":true,"options":[{"id":"free","name":"Free"},{"id":"limited","name":"Limited free functionality"},{"id":"time","name":"Time-limited trial"},{"id":"subscription","name":"Subscription"},{"id":"purchase","name":"One-time purchase"}]},{"id":"type","name":"Type of tool","infoForm":"Check all that apply when submitting multiple types of the tool (e.g. both browser plugin and online tool).","collapsed":"false","type":"checkbox","order":"custom","showfilter":true,"options":[{"id":"browserPlugin","name":"Browser plugin"},{"id":"bookmarklet","name":"Bookmarklet"},{"id":"typeDesktopApplication","name":"Desktop application"},{"id":"typeMobileApplication","name":"Mobile application"},{"id":"typeWebOnlineTool","name":"Online tool","filtername":"Web application"},{"id":"serverside","name":"Server-side integration"},{"id":"commandline","name":"Command-line / CI","filtername":"Command line tool","info":"Command-line / CI"},{"id":"programmingTool","name":"Programming tool plugin / IDE","info":"Programming tool plugin / IDE"},{"id":"authoringTool","name":"CMS plugin","info":"CMS plugin"}]},{"id":"guideline","name":"Standards","collapsed":"false","type":"checkbox","order":"custom","showfilter":true,"options":[{"id":"WCAG2.2","name":"WCAG 2.2","info":"WCAG 2.2","short":"WCAG 2.2","filtername":"WCAG 2.2"},{"id":"WCAG2.1","name":"WCAG 2.1","info":"WCAG 2.1","short":"WCAG 2.1","filtername":"WCAG 2.1"},{"id":"WCAG2.0","name":"WCAG 2.0","info":"WCAG 2.0","short":"WCAG 2.0","filtername":"WCAG 2.0"},{"id":"EPUB","name":"EPUB Accessibility 1.1","short":"EPUB 1.1","filtername":"EPUB Accessibility 1.1"}]},{"id":"technology","name":"File type","collapsed":"false","type":"checkbox","order":"default","showfilter":true,"options":[{"id":"html","name":"HTML / XHTML","filtername":["HTML","XHTML"]},{"id":"css","name":"CSS","filtername":"CSS"},{"id":"epub","name":"EPUB","filtername":"EPUB"},{"id":"pdf","name":"PDF","filtername":"PDF"},{"id":"msodocuments","name":"Microsoft Office documents"},{"id":"smil","name":"SMIL","filtername":"SMIL"},{"id":"markdown","name":"Markdown"},{"id":"odf","name":"Open Document Format (ODF)"}]},{"id":"automated","name":"Scope","collapsed":"false","infoForm":"Range and depth of single evaluation.","type":"checkbox","order":"default","showfilter":true,"options":[{"id":"component","name":"Component","filtername":"Page component"},{"id":"singlePageScreen","name":"Single page/screen","filtername":["Single web pages","Single page"]},{"id":"samplePagesScreens","name":"Sample of pages/screens","filtername":["Sample of pages"]},{"id":"entireProduct","name":"Entire website / software / product","filtername":"Entire product"},{"id":"restrictedPages","name":"Restricted or password protected pages"}]},{"id":"desktop","name":"Operating system","collapsed":"true","type":"checkbox","order":"default","showfilter":true,"options":[{"id":"android","name":"Android"},{"id":"ios","name":"iOS"},{"id":"windows","name":"Windows","filtername":"Microsoft Windows"},{"id":"macos","name":"MacOS","filtername":"Apple macOS"},{"id":"linux","name":"Linux"},{"id":"otheros","name":"Other"}]},{"id":"browsers","name":"Browser for plugin","collapsed":"true","type":"checkbox","order":"default","showfilter":true,"options":[{"id":"chrome","name":"Chrome"},{"id":"safari","name":"Safari"},{"id":"edge","name":"Edge","filtername":"Edge / Explorer"},{"id":"firefox","name":"Firefox"},{"id":"opera","name":"Opera"},{"id":"otherbrowser","name":"Other"}]},{"id":"a11yloc","name":"Accessibility statement","collapsed":"true","type":"checkbox","order":"default","showfilter":true,"options":[{"id":"yesas","name":"Accessibility statement available","filtername":"Tool providing accessibility information"}]},{"id":"actrules","name":"ACT Implementation","collapsed":"true","type":"checkbox","order":"default","showfilter":true,"options":[{"id":"yesar","name":"Documented support for ACT Rules"}]},{"id":"assists","name":"Assists by","collapsed":"true","type":"checkbox","order":"default","showfilter":true,"options":[{"id":"generateReport","name":"Generating reports of evaluation results","filtername":"Generating reports of evaluation results"},{"id":"displayInformation","name":"Displaying information within web pages","filtername":"Displaying information within web pages"},{"id":"accessibilityScore","name":"Creating an accessibility score"},{"id":"provideGuidance","name":"Providing step-by-step evaluation guidance"}]}]`);const jsonLang = JSON.parse('{"ab":{"name":"Abkhaz","nativeName":"аҧсуа"},"aa":{"name":"Afar","nativeName":"Afaraf"},"af":{"name":"Afrikaans","nativeName":"Afrikaans"},"ak":{"name":"Akan","nativeName":"Akan"},"sq":{"name":"Albanian","nativeName":"Shqip"},"am":{"name":"Amharic","nativeName":"አማርኛ"},"ar":{"name":"Arabic","nativeName":"العربية","rtl":true},"an":{"name":"Aragonese","nativeName":"Aragonés"},"hy":{"name":"Armenian","nativeName":"Հայերեն"},"as":{"name":"Assamese","nativeName":"অসমীয়া"},"av":{"name":"Avaric","nativeName":"авар мацӀ, магӀарул мацӀ"},"ae":{"name":"Avestan","nativeName":"avesta"},"ay":{"name":"Aymara","nativeName":"aymar aru"},"az":{"name":"Azerbaijani","nativeName":"azərbaycan dili"},"bm":{"name":"Bambara","nativeName":"bamanankan"},"ba":{"name":"Bashkir","nativeName":"башҡорт теле"},"eu":{"name":"Basque","nativeName":"euskara, euskera"},"be":{"name":"Belarusian","nativeName":"Беларуская"},"bn":{"name":"Bengali","nativeName":"বাংলা"},"bh":{"name":"Bihari","nativeName":"भोजपुरी"},"bi":{"name":"Bislama","nativeName":"Bislama"},"bs":{"name":"Bosnian","nativeName":"bosanski jezik"},"br":{"name":"Breton","nativeName":"brezhoneg"},"bg":{"name":"Bulgarian","nativeName":"български език"},"my":{"name":"Burmese","nativeName":"ဗမာစာ"},"ca":{"name":"Catalan","nativeName":"Català"},"ch":{"name":"Chamorro","nativeName":"Chamoru"},"ce":{"name":"Chechen","nativeName":"нохчийн мотт"},"ny":{"name":"Chichewa; Chewa; Nyanja","nativeName":"chiCheŵa, chinyanja"},"zh":{"name":"Chinese","nativeName":"中文 (Zhōngwén), 汉语, 漢語"},"zh-hans":{"name":"Simplified Chinese","nativeName":"简体中文"},"zh-hant":{"name":"Traditional Chinese","nativeName":"繁體中文"},"cv":{"name":"Chuvash","nativeName":"чӑваш чӗлхи"},"kw":{"name":"Cornish","nativeName":"Kernewek"},"co":{"name":"Corsican","nativeName":"corsu, lingua corsa"},"cr":{"name":"Cree","nativeName":"ᓀᐦᐃᔭᐍᐏᐣ"},"hr":{"name":"Croatian","nativeName":"hrvatski"},"cs":{"name":"Czech","nativeName":"čeština"},"da":{"name":"Danish","nativeName":"dansk"},"dv":{"name":"Divehi; Dhivehi; Maldivian;","nativeName":"ދިވެހި"},"nl":{"name":"Dutch","nativeName":"Nederlands"},"en":{"name":"English","nativeName":"English"},"eo":{"name":"Esperanto","nativeName":"Esperanto"},"et":{"name":"Estonian","nativeName":"eesti"},"ee":{"name":"Ewe","nativeName":"Eʋegbe"},"fo":{"name":"Faroese","nativeName":"føroyskt"},"fj":{"name":"Fijian","nativeName":"vosa Vakaviti"},"fi":{"name":"Finnish","nativeName":"suomi"},"fr":{"name":"French","nativeName":"français"},"ff":{"name":"Fula; Fulah; Pulaar; Pular","nativeName":"Fulfulde, Pulaar, Pular"},"gl":{"name":"Galician","nativeName":"Galego"},"ka":{"name":"Georgian","nativeName":"ქართული"},"de":{"name":"German","nativeName":"Deutsch"},"el":{"name":"Greek","nativeName":"Ελληνικά"},"gn":{"name":"Guaraní","nativeName":"Avañeẽ"},"gu":{"name":"Gujarati","nativeName":"ગુજરાતી"},"ht":{"name":"Haitian; Haitian Creole","nativeName":"Kreyòl ayisyen"},"ha":{"name":"Hausa","nativeName":"Hausa, هَوُسَ"},"he":{"name":"Hebrew","nativeName":"עברית","rtl":true},"hz":{"name":"Herero","nativeName":"Otjiherero"},"hi":{"name":"Hindi","nativeName":"हिन्दी, हिंदी"},"ho":{"name":"Hiri Motu","nativeName":"Hiri Motu"},"hu":{"name":"Hungarian","nativeName":"Magyar"},"ia":{"name":"Interlingua","nativeName":"Interlingua"},"id":{"name":"Indonesian","nativeName":"Bahasa Indonesia"},"ie":{"name":"Interlingue","nativeName":"Originally called Occidental; then Interlingue after WWII"},"ga":{"name":"Irish","nativeName":"Gaeilge"},"ig":{"name":"Igbo","nativeName":"Asụsụ Igbo"},"ik":{"name":"Inupiaq","nativeName":"Iñupiaq, Iñupiatun"},"io":{"name":"Ido","nativeName":"Ido"},"is":{"name":"Icelandic","nativeName":"Íslenska"},"it":{"name":"Italian","nativeName":"Italiano"},"iu":{"name":"Inuktitut","nativeName":"ᐃᓄᒃᑎᑐᑦ"},"ja":{"name":"Japanese","nativeName":"日本語"},"jv":{"name":"Javanese","nativeName":"basa Jawa"},"kl":{"name":"Kalaallisut, Greenlandic","nativeName":"kalaallisut, kalaallit oqaasii"},"kn":{"name":"Kannada","nativeName":"ಕನ್ನಡ"},"kr":{"name":"Kanuri","nativeName":"Kanuri"},"ks":{"name":"Kashmiri","nativeName":"कश्मीरी, كشميري"},"kk":{"name":"Kazakh","nativeName":"Қазақ тілі"},"km":{"name":"Khmer","nativeName":"ភាសាខ្មែរ"},"ki":{"name":"Kikuyu, Gikuyu","nativeName":"Gĩkũyũ"},"rw":{"name":"Kinyarwanda","nativeName":"Ikinyarwanda"},"ky":{"name":"Kirghiz, Kyrgyz","nativeName":"кыргыз тили"},"kv":{"name":"Komi","nativeName":"коми кыв"},"kg":{"name":"Kongo","nativeName":"KiKongo"},"ko":{"name":"Korean","nativeName":"한국어"},"kok":{"name":"Konkani","nativeName":"कोंकणी"},"ku":{"name":"Kurdish","nativeName":"Kurdî, كوردی"},"kj":{"name":"Kwanyama, Kuanyama","nativeName":"Kuanyama"},"la":{"name":"Latin","nativeName":"latine, lingua latina"},"lb":{"name":"Luxembourgish, Letzeburgesch","nativeName":"Lëtzebuergesch"},"lg":{"name":"Luganda","nativeName":"Luganda"},"li":{"name":"Limburgish, Limburgan, Limburger","nativeName":"Limburgs"},"ln":{"name":"Lingala","nativeName":"Lingála"},"lo":{"name":"Lao","nativeName":"ພາສາລາວ"},"lt":{"name":"Lithuanian","nativeName":"lietuvių kalba"},"lu":{"name":"Luba-Katanga","nativeName":""},"lv":{"name":"Latvian","nativeName":"latviešu valoda"},"gv":{"name":"Manx","nativeName":"Gaelg, Gailck"},"mk":{"name":"Macedonian","nativeName":"македонски јазик"},"mg":{"name":"Malagasy","nativeName":"Malagasy fiteny"},"ms":{"name":"Malay","nativeName":"bahasa Melayu, بهاس ملايو"},"ml":{"name":"Malayalam","nativeName":"മലയാളം"},"mt":{"name":"Maltese","nativeName":"Malti"},"mi":{"name":"Māori","nativeName":"te reo Māori"},"mr":{"name":"Marathi (Marāṭhī)","nativeName":"मराठी"},"mh":{"name":"Marshallese","nativeName":"Kajin M̧ajeļ"},"mn":{"name":"Mongolian","nativeName":"монгол"},"na":{"name":"Nauru","nativeName":"Ekakairũ Naoero"},"nv":{"name":"Navajo, Navaho","nativeName":"Diné bizaad, Dinékʼehǰí"},"nb":{"name":"Norwegian Bokmål","nativeName":"Norsk bokmål"},"nd":{"name":"North Ndebele","nativeName":"isiNdebele"},"ne":{"name":"Nepali","nativeName":"नेपाली"},"ng":{"name":"Ndonga","nativeName":"Owambo"},"nn":{"name":"Norwegian Nynorsk","nativeName":"Norsk nynorsk"},"no":{"name":"Norwegian","nativeName":"Norsk"},"ii":{"name":"Nuosu","nativeName":"ꆈꌠ꒿ Nuosuhxop"},"nr":{"name":"South Ndebele","nativeName":"isiNdebele"},"oc":{"name":"Occitan","nativeName":"Occitan"},"oj":{"name":"Ojibwe, Ojibwa","nativeName":"ᐊᓂᔑᓈᐯᒧᐎᓐ"},"cu":{"name":"Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic","nativeName":"ѩзыкъ словѣньскъ"},"om":{"name":"Oromo","nativeName":"Afaan Oromoo"},"or":{"name":"Oriya","nativeName":"ଓଡ଼ିଆ"},"os":{"name":"Ossetian, Ossetic","nativeName":"ирон æвзаг"},"pa":{"name":"Panjabi, Punjabi","nativeName":"ਪੰਜਾਬੀ, پنجابی"},"pi":{"name":"Pāli","nativeName":"पाऴि"},"fa":{"name":"Persian","nativeName":"فارسی"},"pl":{"name":"Polish","nativeName":"polski"},"ps":{"name":"Pashto, Pushto","nativeName":"پښتو"},"pt":{"name":"European Portuguese","nativeName":"Português Europeu"},"pt-BR":{"name":"Brazilian Portuguese","nativeName":"Português do Brasil"},"qu":{"name":"Quechua","nativeName":"Runa Simi, Kichwa"},"rm":{"name":"Romansh","nativeName":"rumantsch grischun"},"rn":{"name":"Kirundi","nativeName":"kiRundi"},"ro":{"name":"Romanian, Moldavian, Moldovan","nativeName":"română"},"ru":{"name":"Russian","nativeName":"русский язык"},"sa":{"name":"Sanskrit (Saṁskṛta)","nativeName":"संस्कृतम्"},"sc":{"name":"Sardinian","nativeName":"sardu"},"sd":{"name":"Sindhi","nativeName":"सिन्धी, سنڌي، سندھی"},"se":{"name":"Northern Sami","nativeName":"Davvisámegiella"},"sm":{"name":"Samoan","nativeName":"gagana faa Samoa"},"sg":{"name":"Sango","nativeName":"yângâ tî sängö"},"sr":{"name":"Serbian","nativeName":"српски језик"},"gd":{"name":"Scottish Gaelic; Gaelic","nativeName":"Gàidhlig"},"sn":{"name":"Shona","nativeName":"chiShona"},"si":{"name":"Sinhala, Sinhalese","nativeName":"සිංහල"},"sk":{"name":"Slovak","nativeName":"slovenčina"},"sl":{"name":"Slovene","nativeName":"slovenščina"},"so":{"name":"Somali","nativeName":"Soomaaliga, af Soomaali"},"st":{"name":"Southern Sotho","nativeName":"Sesotho"},"es":{"name":"Spanish","nativeName":"español"},"su":{"name":"Sundanese","nativeName":"Basa Sunda"},"sw":{"name":"Swahili","nativeName":"Kiswahili"},"ss":{"name":"Swati","nativeName":"SiSwati"},"sv":{"name":"Swedish","nativeName":"svenska"},"ta":{"name":"Tamil","nativeName":"தமிழ்"},"te":{"name":"Telugu","nativeName":"తెలుగు"},"tg":{"name":"Tajik","nativeName":"тоҷикӣ, toğikī, تاجیکی"},"th":{"name":"Thai","nativeName":"ไทย"},"ti":{"name":"Tigrinya","nativeName":"ትግርኛ"},"bo":{"name":"Tibetan","nativeName":"བོད་ཡིག"},"tk":{"name":"Turkmen","nativeName":"Türkmen, Түркмен"},"tl":{"name":"Tagalog","nativeName":"Tagalog, ᜏᜒᜃᜅ᜔ ᜆᜄᜎᜓᜄ᜔"},"tn":{"name":"Tswana","nativeName":"Setswana"},"to":{"name":"Tonga (Tonga Islands)","nativeName":"faka Tonga"},"tr":{"name":"Turkish","nativeName":"Türkçe"},"ts":{"name":"Tsonga","nativeName":"Xitsonga"},"tt":{"name":"Tatar","nativeName":"татарча, tatarça, تاتارچا"},"tw":{"name":"Twi","nativeName":"Twi"},"ty":{"name":"Tahitian","nativeName":"Reo Tahiti"},"ug":{"name":"Uighur, Uyghur","nativeName":"Uyƣurqə, ئۇيغۇرچە"},"uk":{"name":"Ukrainian","nativeName":"українська"},"ur":{"name":"Urdu","nativeName":"اردو"},"uz":{"name":"Uzbek","nativeName":"zbek, Ўзбек, أۇزبېك"},"ve":{"name":"Venda","nativeName":"Tshivenḓa"},"vi":{"name":"Vietnamese","nativeName":"Tiếng Việt"},"vo":{"name":"Volapük","nativeName":"Volapük"},"wa":{"name":"Walloon","nativeName":"Walon"},"cy":{"name":"Welsh","nativeName":"Cymraeg"},"wo":{"name":"Wolof","nativeName":"Wollof"},"fy":{"name":"Western Frisian","nativeName":"Frysk"},"xh":{"name":"Xhosa","nativeName":"isiXhosa"},"yi":{"name":"Yiddish","nativeName":"ייִדיש"},"yo":{"name":"Yoruba","nativeName":"Yorùbá"},"za":{"name":"Zhuang, Chuang","nativeName":"Saɯ cueŋƅ, Saw cuengh"}}');const jsonCountry = JSON.parse('{"ad":{"name":"Andorra","nativeName":"Andorra"},"ae":{"name":"United Arab Emirates","nativeName":"دولة الإمارات العربية المتحدة"},"af":{"name":"Afghanistan","nativeName":"افغانستان"},"ag":{"name":"Antigua and Barbuda","nativeName":"Antigua and Barbuda"},"ai":{"name":"Anguilla","nativeName":"Anguilla"},"al":{"name":"Albania","nativeName":"Shqipëria"},"am":{"name":"Armenia","nativeName":"Հայաստան"},"ao":{"name":"Angola","nativeName":"Angola"},"aq":{"name":"Antarctica","nativeName":"Antarctica"},"ar":{"name":"Argentina","nativeName":"Argentina"},"as":{"name":"American Samoa","nativeName":"American Samoa"},"at":{"name":"Austria","nativeName":"Österreich"},"au":{"name":"Australia","nativeName":"Australia"},"aw":{"name":"Aruba","nativeName":"Aruba"},"ax":{"name":"Åland","nativeName":"Åland"},"az":{"name":"Azerbaijan","nativeName":"Azərbaycan"},"ba":{"name":"Bosnia and Herzegovina","nativeName":"Bosna i Hercegovina"},"bb":{"name":"Barbados","nativeName":"Barbados"},"bd":{"name":"Bangladesh","nativeName":"Bangladesh"},"be":{"name":"Belgium","nativeName":"België"},"bf":{"name":"Burkina Faso","nativeName":"Burkina Faso"},"bg":{"name":"Bulgaria","nativeName":"България"},"bh":{"name":"Bahrain","nativeName":"البحرين"},"bi":{"name":"Burundi","nativeName":"Burundi"},"bj":{"name":"Benin","nativeName":"Bénin"},"bl":{"name":"Saint Barthélemy","nativeName":"Saint-Barthélemy"},"bm":{"name":"Bermuda","nativeName":"Bermuda"},"bn":{"name":"Brunei","nativeName":"Negara Brunei Darussalam"},"bo":{"name":"Bolivia","nativeName":"Bolivia"},"bq":{"name":"Bonaire","nativeName":"Bonaire"},"br":{"name":"Brazil","nativeName":"Brasil"},"bs":{"name":"Bahamas","nativeName":"Bahamas"},"bt":{"name":"Bhutan","nativeName":"ʼbrug-yul"},"bv":{"name":"Bouvet Island","nativeName":"Bouvetøya"},"bw":{"name":"Botswana","nativeName":"Botswana"},"by":{"name":"Belarus","nativeName":"Белару́сь"},"bz":{"name":"Belize","nativeName":"Belize"},"ca":{"name":"Canada","nativeName":"Canada"},"cc":{"name":"Cocos [Keeling] Islands","nativeName":"Cocos (Keeling) Islands"},"cd":{"name":"Democratic Republic of the Congo","nativeName":"République démocratique du Congo"},"cf":{"name":"Central African Republic","nativeName":"Ködörösêse tî Bêafrîka"},"cg":{"name":"Republic of the Congo","nativeName":"République du Congo"},"ch":{"name":"Switzerland","nativeName":"Schweiz"},"ci":{"name":"Ivory Coast","nativeName":"Côte d’Ivoire"},"ck":{"name":"Cook Islands","nativeName":"Cook Islands"},"cl":{"name":"Chile","nativeName":"Chile"},"cm":{"name":"Cameroon","nativeName":"Cameroon"},"cn":{"name":"China","nativeName":"中国"},"co":{"name":"Colombia","nativeName":"Colombia"},"cr":{"name":"Costa Rica","nativeName":"Costa Rica"},"cu":{"name":"Cuba","nativeName":"Cuba"},"cv":{"name":"Cape Verde","nativeName":"Cabo Verde"},"cw":{"name":"Curacao","nativeName":"Curaçao"},"cx":{"name":"Christmas Island","nativeName":"Christmas Island"},"cy":{"name":"Cyprus","nativeName":"Κύπρος"},"cz":{"name":"Czech Republic","nativeName":"Česká republika"},"de":{"name":"Germany","nativeName":"Deutschland"},"dj":{"name":"Djibouti","nativeName":"Djibouti"},"dk":{"name":"Denmark","nativeName":"Danmark"},"dm":{"name":"Dominica","nativeName":"Dominica"},"do":{"name":"Dominican Republic","nativeName":"República Dominicana"},"dz":{"name":"Algeria","nativeName":"الجزائر"},"ec":{"name":"Ecuador","nativeName":"Ecuador"},"ee":{"name":"Estonia","nativeName":"Eesti"},"eg":{"name":"Egypt","nativeName":"مصر"},"eh":{"name":"Western Sahara","nativeName":"الصحراء الغربية"},"er":{"name":"Eritrea","nativeName":"ኤርትራ"},"es":{"name":"Spain","nativeName":"España"},"et":{"name":"Ethiopia","nativeName":"ኢትዮጵያ"},"fi":{"name":"Finland","nativeName":"Suomi"},"fj":{"name":"Fiji","nativeName":"Fiji"},"fk":{"name":"Falkland Islands","nativeName":"Falkland Islands"},"fm":{"name":"Micronesia","nativeName":"Micronesia"},"fo":{"name":"Faroe Islands","nativeName":"Føroyar"},"fr":{"name":"France","nativeName":"France"},"ga":{"name":"Gabon","nativeName":"Gabon"},"gb":{"name":"United Kingdom","nativeName":"United Kingdom"},"gd":{"name":"Grenada","nativeName":"Grenada"},"ge":{"name":"Georgia","nativeName":"საქართველო"},"gf":{"name":"French Guiana","nativeName":"Guyane française"},"gg":{"name":"Guernsey","nativeName":"Guernsey"},"gh":{"name":"Ghana","nativeName":"Ghana"},"gi":{"name":"Gibraltar","nativeName":"Gibraltar"},"gl":{"name":"Greenland","nativeName":"Kalaallit Nunaat"},"gm":{"name":"Gambia","nativeName":"Gambia"},"gn":{"name":"Guinea","nativeName":"Guinée"},"gp":{"name":"Guadeloupe","nativeName":"Guadeloupe"},"gq":{"name":"Equatorial Guinea","nativeName":"Guinea Ecuatorial"},"gr":{"name":"Greece","nativeName":"Ελλάδα"},"gs":{"name":"South Georgia and the South Sandwich Islands","nativeName":"South Georgia"},"gt":{"name":"Guatemala","nativeName":"Guatemala"},"gu":{"name":"Guam","nativeName":"Guam"},"gw":{"name":"Guinea-Bissau","nativeName":"Guiné-Bissau"},"gy":{"name":"Guyana","nativeName":"Guyana"},"hk":{"name":"Hong Kong","nativeName":"香港"},"hm":{"name":"Heard Island and McDonald Islands","nativeName":"Heard Island and McDonald Islands"},"hn":{"name":"Honduras","nativeName":"Honduras"},"hr":{"name":"Croatia","nativeName":"Hrvatska"},"ht":{"name":"Haiti","nativeName":"Haïti"},"hu":{"name":"Hungary","nativeName":"Magyarország"},"id":{"name":"Indonesia","nativeName":"Indonesia"},"ie":{"name":"Ireland","nativeName":"Éire"},"il":{"name":"Israel","nativeName":"יִשְׂרָאֵל"},"im":{"name":"Isle of Man","nativeName":"Isle of Man"},"in":{"name":"India","nativeName":"भारत"},"io":{"name":"British Indian Ocean Territory","nativeName":"British Indian Ocean Territory"},"iq":{"name":"Iraq","nativeName":"العراق"},"ir":{"name":"Iran","nativeName":"ایران"},"is":{"name":"Iceland","nativeName":"Ísland"},"it":{"name":"Italy","nativeName":"Italia"},"je":{"name":"Jersey","nativeName":"Jersey"},"jm":{"name":"Jamaica","nativeName":"Jamaica"},"jo":{"name":"Jordan","nativeName":"الأردن"},"jp":{"name":"Japan","nativeName":"日本"},"ke":{"name":"Kenya","nativeName":"Kenya"},"kg":{"name":"Kyrgyzstan","nativeName":"Кыргызстан"},"kh":{"name":"Cambodia","nativeName":"Kâmpŭchéa"},"ki":{"name":"Kiribati","nativeName":"Kiribati"},"km":{"name":"Comoros","nativeName":"Komori"},"kn":{"name":"Saint Kitts and Nevis","nativeName":"Saint Kitts and Nevis"},"kp":{"name":"North Korea","nativeName":"북한"},"kr":{"name":"South Korea","nativeName":"대한민국"},"kw":{"name":"Kuwait","nativeName":"الكويت"},"ky":{"name":"Cayman Islands","nativeName":"Cayman Islands"},"kz":{"name":"Kazakhstan","nativeName":"Қазақстан"},"la":{"name":"Laos","nativeName":"ສປປລາວ"},"lb":{"name":"Lebanon","nativeName":"لبنان"},"lc":{"name":"Saint Lucia","nativeName":"Saint Lucia"},"li":{"name":"Liechtenstein","nativeName":"Liechtenstein"},"lk":{"name":"Sri Lanka","nativeName":"śrī laṃkāva"},"lr":{"name":"Liberia","nativeName":"Liberia"},"ls":{"name":"Lesotho","nativeName":"Lesotho"},"lt":{"name":"Lithuania","nativeName":"Lietuva"},"lu":{"name":"Luxembourg","nativeName":"Luxembourg"},"lv":{"name":"Latvia","nativeName":"Latvija"},"ly":{"name":"Libya","nativeName":"ليبيا"},"ma":{"name":"Morocco","nativeName":"المغرب"},"mc":{"name":"Monaco","nativeName":"Monaco"},"md":{"name":"Moldova","nativeName":"Moldova"},"me":{"name":"Montenegro","nativeName":"Црна Гора"},"mf":{"name":"Saint Martin","nativeName":"Saint-Martin"},"mg":{"name":"Madagascar","nativeName":"Madagasikara"},"mh":{"name":"Marshall Islands","nativeName":"M̧ajeļ"},"mk":{"name":"North Macedonia","nativeName":"Северна Македонија"},"ml":{"name":"Mali","nativeName":"Mali"},"mm":{"name":"Myanmar [Burma]","nativeName":"မြန်မာ"},"mn":{"name":"Mongolia","nativeName":"Монгол улс"},"mo":{"name":"Macao","nativeName":"澳門"},"mp":{"name":"Northern Mariana Islands","nativeName":"Northern Mariana Islands"},"mq":{"name":"Martinique","nativeName":"Martinique"},"mr":{"name":"Mauritania","nativeName":"موريتانيا"},"ms":{"name":"Montserrat","nativeName":"Montserrat"},"mt":{"name":"Malta","nativeName":"Malta"},"mu":{"name":"Mauritius","nativeName":"Maurice"},"mv":{"name":"Maldives","nativeName":"Maldives"},"mw":{"name":"Malawi","nativeName":"Malawi"},"mx":{"name":"Mexico","nativeName":"México"},"my":{"name":"Malaysia","nativeName":"Malaysia"},"mz":{"name":"Mozambique","nativeName":"Moçambique"},"na":{"name":"Namibia","nativeName":"Namibia"},"nc":{"name":"New Caledonia","nativeName":"Nouvelle-Calédonie"},"ne":{"name":"Niger","nativeName":"Niger"},"nf":{"name":"Norfolk Island","nativeName":"Norfolk Island"},"ng":{"name":"Nigeria","nativeName":"Nigeria"},"ni":{"name":"Nicaragua","nativeName":"Nicaragua"},"nl":{"name":"Netherlands","nativeName":"Nederland"},"no":{"name":"Norway","nativeName":"Norge"},"np":{"name":"Nepal","nativeName":"नपल"},"nr":{"name":"Nauru","nativeName":"Nauru"},"nu":{"name":"Niue","nativeName":"Niuē"},"nz":{"name":"New Zealand","nativeName":"New Zealand"},"om":{"name":"Oman","nativeName":"عمان"},"pa":{"name":"Panama","nativeName":"Panamá"},"pe":{"name":"Peru","nativeName":"Perú"},"pf":{"name":"French Polynesia","nativeName":"Polynésie française"},"pg":{"name":"Papua New Guinea","nativeName":"Papua Niugini"},"ph":{"name":"Philippines","nativeName":"Pilipinas"},"pk":{"name":"Pakistan","nativeName":"Pakistan"},"pl":{"name":"Poland","nativeName":"Polska"},"pm":{"name":"Saint Pierre and Miquelon","nativeName":"Saint-Pierre-et-Miquelon"},"pn":{"name":"Pitcairn Islands","nativeName":"Pitcairn Islands"},"pr":{"name":"Puerto Rico","nativeName":"Puerto Rico"},"ps":{"name":"Palestine","nativeName":"فلسطين"},"pt":{"name":"Portugal","nativeName":"Portugal"},"pw":{"name":"Palau","nativeName":"Palau"},"py":{"name":"Paraguay","nativeName":"Paraguay"},"qa":{"name":"Qatar","nativeName":"قطر"},"re":{"name":"Réunion","nativeName":"La Réunion"},"ro":{"name":"Romania","nativeName":"România"},"rs":{"name":"Serbia","nativeName":"Србија"},"ru":{"name":"Russia","nativeName":"Россия"},"rw":{"name":"Rwanda","nativeName":"Rwanda"},"sa":{"name":"Saudi Arabia","nativeName":"العربية السعودية"},"sb":{"name":"Solomon Islands","nativeName":"Solomon Islands"},"sc":{"name":"Seychelles","nativeName":"Seychelles"},"sd":{"name":"Sudan","nativeName":"السودان"},"se":{"name":"Sweden","nativeName":"Sverige"},"sg":{"name":"Singapore","nativeName":"Singapore"},"sh":{"name":"Saint Helena","nativeName":"Saint Helena"},"si":{"name":"Slovenia","nativeName":"Slovenija"},"sj":{"name":"Svalbard and Jan Mayen","nativeName":"Svalbard og Jan Mayen"},"sk":{"name":"Slovakia","nativeName":"Slovensko"},"sl":{"name":"Sierra Leone","nativeName":"Sierra Leone"},"sm":{"name":"San Marino","nativeName":"San Marino"},"sn":{"name":"Senegal","nativeName":"Sénégal"},"so":{"name":"Somalia","nativeName":"Soomaaliya"},"sr":{"name":"Suriname","nativeName":"Suriname"},"ss":{"name":"South Sudan","nativeName":"South Sudan"},"st":{"name":"São Tomé and Príncipe","nativeName":"São Tomé e Príncipe"},"sv":{"name":"El Salvador","nativeName":"El Salvador"},"sx":{"name":"Sint Maarten","nativeName":"Sint Maarten"},"sy":{"name":"Syria","nativeName":"سوريا"},"sz":{"name":"Swaziland","nativeName":"Swaziland"},"tc":{"name":"Turks and Caicos Islands","nativeName":"Turks and Caicos Islands"},"td":{"name":"Chad","nativeName":"Tchad"},"tf":{"name":"French Southern Territories","nativeName":"Territoire des Terres australes et antarctiques fr"},"tg":{"name":"Togo","nativeName":"Togo"},"th":{"name":"Thailand","nativeName":"ประเทศไทย"},"tj":{"name":"Tajikistan","nativeName":"Тоҷикистон"},"tk":{"name":"Tokelau","nativeName":"Tokelau"},"tl":{"name":"East Timor","nativeName":"Timor-Leste"},"tm":{"name":"Turkmenistan","nativeName":"Türkmenistan"},"tn":{"name":"Tunisia","nativeName":"تونس"},"to":{"name":"Tonga","nativeName":"Tonga"},"tr":{"name":"Turkey","nativeName":"Türkiye"},"tt":{"name":"Trinidad and Tobago","nativeName":"Trinidad and Tobago"},"tv":{"name":"Tuvalu","nativeName":"Tuvalu"},"tw":{"name":"Taiwan","nativeName":"臺灣"},"tz":{"name":"Tanzania","nativeName":"Tanzania"},"ua":{"name":"Ukraine","nativeName":"Україна"},"ug":{"name":"Uganda","nativeName":"Uganda"},"um":{"name":"U.S. Minor Outlying Islands","nativeName":"United States Minor Outlying Islands"},"us":{"name":"United States","nativeName":"United States"},"uy":{"name":"Uruguay","nativeName":"Uruguay"},"uz":{"name":"Uzbekistan","nativeName":"O‘zbekiston"},"va":{"name":"Vatican City","nativeName":"Vaticano"},"vc":{"name":"Saint Vincent and the Grenadines","nativeName":"Saint Vincent and the Grenadines"},"ve":{"name":"Venezuela","nativeName":"Venezuela"},"vg":{"name":"British Virgin Islands","nativeName":"British Virgin Islands"},"vi":{"name":"U.S. Virgin Islands","nativeName":"United States Virgin Islands"},"vn":{"name":"Vietnam","nativeName":"Việt Nam"},"vu":{"name":"Vanuatu","nativeName":"Vanuatu"},"wf":{"name":"Wallis and Futuna","nativeName":"Wallis et Futuna"},"ws":{"name":"Samoa","nativeName":"Samoa"},"xk":{"name":"Kosovo","nativeName":"Republika e Kosovës"},"ye":{"name":"Yemen","nativeName":"اليَمَن"},"yt":{"name":"Mayotte","nativeName":"Mayotte"},"za":{"name":"South Africa","nativeName":"South Africa"},"zm":{"name":"Zambia","nativeName":"Zambia"},"zw":{"name":"Zimbabwe","nativeName":"Zimbabwe"}}');var toolsList = document.getElementById('tools-list');var toolsListContent = document.querySelector('.tools-list');var activeFiltersBlock = document.getElementById('activeFilters');var jsonLangCode = [];for(let langCode in jsonLang) { jsonLangCode[jsonLang[langCode].name] = langCode;}//Pagination settingsvar currentPage = 1;var toolsPerPage = 8;document.querySelectorAll('.showmore').forEach(item => { makeShowMore(item);})document.querySelectorAll('fieldset').forEach(item => { if(item.getAttribute("collapsed")){ makeCollapsible(item); }})document.querySelector('.button-filters').addEventListener('click', e => { toggleFilters();})document.querySelector('.close-filters').addEventListener('click', e => { toggleFilters();})if (filterForm && sortForm && search) { filterForm.addEventListener('change', el => { filterJson(filterForm); }); filterForm.querySelectorAll('input[type="checkbox"]').forEach(item => { item.addEventListener('keyup', e => { if (e.key === "Enter") { item.checked = !item.checked; filterJson(filterForm); } }); }) sortForm.querySelector('select').addEventListener('change', el => { filterJson(filterForm); }); searchForm.addEventListener('keyup', el => { if(event.key != "Tab"){ filterJson(filterForm); } }); searchForm.addEventListener('search', el => { filterJson(filterForm); }); //Make info-icons toggle makeToggleTips(); //Add pre-counters to filters showFilterCounters(filterForm, true); //Order filters by amount orderFilterOptions(filterForm); //Add pagination after showing tools var initialArticles = Array.from(toolsListContent.querySelectorAll('aside')); // addPagination(initialArticles); //Sort and filter init filterJson(filterForm); function showFilterCounters(form, init){ var counterFiltersOn = getActiveFiltersList(form); var counterResults = filterNewResultsList(counterFiltersOn); var projectedCounterFiltersOn = counterFiltersOn; form.querySelectorAll('fieldset').forEach(att => { att.querySelectorAll('input[type="checkbox"]').forEach(filter => { projectedCounterFiltersOn = getActiveFiltersList(form); var attValues = []; attValues.push(att.querySelector("label[for='" + filter.id + "']").querySelector('.filterName').innerText); filterName = att.querySelectorAll('legend')[0].innerText; var newFilter = false; projectedCounterFiltersOn.forEach(f => { if(f.filterId === att.id){ f.filterValues = []; f.filterValues.push(att.querySelector("label[for='" + filter.id + "']").querySelector('.filterName').innerText); newFilter = true; } }) if(newFilter === false){ projectedCounterFiltersOn.push({ filterId: att.id, filterName: filterName, filterValues: attValues }); } var projectedCounterResults = filterNewResultsList(projectedCounterFiltersOn); var counter = Object.values(projectedCounterResults).length; att.querySelector("label[for='" + filter.id + "']").querySelector(".filterPreCounter").innerText = "(" + counter + ")"; if(init == true){ if(att.id === "language" && counter === 0 && !filter.checked){ att.querySelector("label[for='" + filter.id + "']").parentNode.style.display = "none"; } } }) }); } function filterJson(form) { //form = document.querySelector('[data-filter-form]'); // selecting filters on var filtersOn = getActiveFiltersList(form); // filtering results var newResults = []; newResults = filterNewResultsList(filtersOn); //Filter on search term var searchedResults = []; searchedResults = filterSearchList(newResults); //rebuild document rebuildList(searchedResults, filtersOn); } function filterSearchList(filteredResults){ var searchTerm = searchForm.value; var searchOutputList = []; Object.values(filteredResults).forEach(o => { if(o.title.toLowerCase().includes(searchTerm.toLowerCase())){ searchOutputList.push(o); } }) return searchOutputList; } function getActiveFiltersList(form) { var activeFiltersList = []; var attValues = []; // for each attribute group form.querySelectorAll('fieldset').forEach(att => { attValues = []; filterName = att.querySelectorAll('legend')[0].innerText; att.querySelectorAll('input[type="checkbox"]').forEach(filter => { if (filter.checked) { attValues.push(att.querySelector("label[for='" + filter.id + "']").querySelector('.filterName').innerText); } }) if (attValues.length > 0){ activeFiltersList.push({ filterId: att.id, filterName: filterName, filterValues: attValues }); } att.querySelectorAll('select').forEach(filter => { attValues = []; if (filter.value != "") { attValues.push(filter.value) activeFiltersList.push({ filterId: filter.id, filterName: filterName, filterValues: attValues }); } }); }); return activeFiltersList; } function filterNewResultsList(filtersOnList) { var newResultsList = []; // by attribute filtersOnList.forEach(filter => { newResultsList.push(Object.values(jsonTools).filter((x) => filter.filterValues.some( function(r) { if(x[filter.filterId] !== undefined){ if(filter.filterId === "language"){ return x[filter.filterId].some(function(v){ return v.indexOf(jsonLangCode[r])>=0 }); }else if(filter.filterId === "actrules"){ if(x[filter.filterId] == null){ return false; }else{ return x[filter.filterId]; } }else if(filter.filterId === "a11yloc"){ if(x[filter.filterId] == null){ return false; }else{ return x[filter.filterId]; } } else{ var currentFilter = jsonFilters.find(f => f.id === filter.filterId && f.name === filter.filterName); if(currentFilter != undefined){ var mask = currentFilter.options.find(o => o.name === r); if(mask.filtername != undefined){ if(Array.isArray(mask.filtername)){ var tracker; mask.filtername.forEach(mfn => { if(tracker === undefined || tracker === false){ tracker = x[filter.filterId].some(function(m){ return m.indexOf(mfn)>=0 }); } }) return tracker; }else{ if(Array.isArray(x[filter.filterId])){ return x[filter.filterId].some(function(m){ return m.indexOf(mask.filtername)>=0 }) || x[filter.filterId].includes(r); }else{ return x[filter.filterId] === mask.filtername || x[filter.filterId] === r; } } }else{ return x[filter.filterId].includes(r); } } } }else{ return false; } }) )); }) // if no filter, show all tools if (newResultsList.length === 0) newResultsList = jsonTools; // intersection between results [tools] else newResultsList = newResultsList.reduce((a, c) => a.filter(i => c.includes(i))); return newResultsList; } function rebuildList(newResults, filtersOn) { const articles = toolsListContent.querySelectorAll('aside'); var totalToolsCounter = document.getElementById("total-tools"); var totalTools = document.getElementById("found-tools"); var listFiltersOnString = document.createElement('dl'); filtersOn.forEach(f => { var attName = document.createElement('dt'); attName.innerText = f.filterName + ':'; listFiltersOnString.appendChild(attName); var attValues = document.createElement('dd'); if (f.filterId == 'country') attValues.innerText = jsonCountry[f.filterValues[0]].name + " (" + jsonCountry[f.filterValues[0]].nativeName + ")"; else attValues.innerText = f.filterValues.join(', '); listFiltersOnString.appendChild(attValues); }); //Sort items var list = document.querySelector('.tools-list'); var sortedArticles = Array.from(articles); newResults.sort(sortList); sortedArticles.sort(function(a, b){ // return newResults.findIndex(x => x.title === a.getElementsByTagName("h3")[0].innerHTML) - newResults.findIndex(x => x.title === b.getElementsByTagName("h3")[0].innerHTML); return newResults.findIndex(x => x.title.replace(/\s+/g, '-').toLowerCase() === a.id) - newResults.findIndex(x => x.title.replace(/\s+/g, '-').toLowerCase() === b.id); }); //Reset list and pagination sortedArticles.forEach(a => { a.classList.remove("hiddenInPagination"); }) currentPage = 1; list.innerHTML = ""; for (i = 0; i < sortedArticles.length; ++i) { list.appendChild(sortedArticles[i]); } sortedArticles.forEach(el => { // if (!Object.values(newResults).find(o => o.title === el.getElementsByTagName("h3")[0].innerHTML && o.creator === el.querySelector('.leftColHeader').innerHTML.replace("by ", ""))){ if (!Object.values(newResults).find(o => o.title.replace(/\s+/g, '-').toLowerCase() === el.id && o.provider === el.querySelector('.leftColHeader').innerHTML.replace("by ", ""))){ el.hidden = true; el.classList.add("inactive"); } else{ el.hidden = false; el.classList.remove("inactive"); } }) // addPagination(sortedArticles); var searchTerm = searchForm.value; if (Object.values(newResults).length === 0 && filtersOn.length > 0) { totalTools.innerText = "Sorry, but no tools match the following criteria: "; totalTools.appendChild(listFiltersOnString); hideClearButton(false); }else{ totalTools.innerText = ""; hideClearButton(true); } if(Object.values(newResults).length === 1){ totalToolsCounter.innerHTML = "Showing " + Object.values(newResults).length + " tool"; }else{ totalToolsCounter.innerHTML = "Showing " + Object.values(newResults).length + " tools"; } if(searchTerm.length > 0){ document.getElementsByClassName('searchbox')[0].getElementsByTagName("svg")[0].style.display = "none"; totalToolsCounter.innerHTML += " for: \"" + searchTerm + "\""; }else{ document.getElementsByClassName('searchbox')[0].getElementsByTagName("svg")[0].style.display = ""; } updateActiveFilters(); showFilterCounters(filterForm, false); } function orderFilterOptions(form) { form.querySelectorAll('fieldset').forEach(att => { if(att.classList.contains("default")){ var myListParent = att; var myListChildren = myListParent.querySelectorAll('.filter-options'); var myListArray = []; for (var i = 0; i < myListChildren.length; i++) { myListArray.push(myListChildren[i]); } myListArray.sort(function(a, b){ var a2 = a.querySelector('.filterPreCounter').innerHTML.replace(/[{()}]/g, ''); var b2 = b.querySelector('.filterPreCounter').innerHTML.replace(/[{()}]/g, ''); return parseInt(b2) - parseInt(a2); }); for (var i = 0; i < myListArray.length; i++) { myListParent.querySelector('.options').appendChild(myListArray[i]); } } }); } function updateActiveFilters() { var filtersOn = getActiveFiltersList(filterForm); activeFiltersBlock.innerHTML = ""; filtersOn.forEach(filterGroup => { filterGroup.filterValues.forEach(filter => { var prefix = ""; if(getFilterName(filter) == "Desktop application" || getFilterName(filter) == "Mobile application"){ prefix += filterGroup.filterId + ": "; } if(getFilterName(filter) == "Statement available"){ prefix += filterGroup.filterName + ": "; } activeFiltersBlock.innerHTML += '
'; }) }) if(filtersOn.length > 0){ activeFiltersBlock.innerHTML += ''; } document.querySelectorAll('.button-clear-button').forEach(item => { item.addEventListener('click', e => { clearFilters(e) }); }) document.querySelectorAll('.button-clear-button').forEach(item => { item.addEventListener('keyup', e => { if (e.key === "Enter") { e.preventDefault(); item.click(); } }); }) } function getFilterName(filter){ var guidelines = jsonFilters.find(e => e.id === 'guideline'); var activeFilter = guidelines.options.find(e => e.name === filter); var name = ""; if(activeFilter != undefined){ name = activeFilter.short; }else{ name = filter; } return name; } function removeFilterEnter(e, filterTitle) { if (e.key === "Enter") { e.preventDefault(); removeFilter(filterTitle) } } function removeFilter(filterTitle) { var form = filterForm; form.querySelectorAll('fieldset').forEach(att => { att.querySelectorAll('input[type="checkbox"]').forEach(filter => { if (att.querySelector("label[for='" + filter.id + "']").querySelector('.filterName').innerText == filterTitle) { filter.checked = false; } }) }); filterJson(form); } function sortList(a, b) { var selectedSort = document.querySelector('.sort-by').querySelector('select').value; if(selectedSort == "alphabeticallyaz"){ return a.title.replace(/\s+/g, '-').toLowerCase().localeCompare(b.title.replace(/\s+/g, '-').toLowerCase()); }else if(selectedSort == "alphabeticallyza"){ return b.title.replace(/\s+/g, '-').toLowerCase().localeCompare(a.title.replace(/\s+/g, '-').toLowerCase()); }else if(selectedSort == "recentlyupdated"){ return new Date(b.update) - new Date(a.update); }else if(selectedSort == "recentlyadded"){ return new Date(b.release) - new Date(a.release); } return false; } function hideClearButton(isHidden) { document.querySelectorAll('.button-clear-button').forEach(item => { item.hidden = isHidden }); } function clearFilters(e) { e.preventDefault(); filterForm.querySelectorAll("input[type='checkbox']").forEach(el => el.checked = false); filterForm.querySelectorAll("select").forEach(el => el.selectedIndex = 0); filterJson(filterForm); }}document.querySelectorAll('summary').forEach(item => { item.addEventListener('click', e => { updateDetail(e.target); });})function updateDetail(e){ var r = document.querySelector(':root'); if(e.querySelector("h4")){ e = e.querySelector("h4"); } if(e.innerHTML == "Show more features"){ e.innerHTML = "Show less features"; // e.target.parentNode.parentNode.style.borderTop = "none" // r.style.setProperty("--pseudo-backgroundcolor", 'white'); }else{ e.innerHTML = "Show more features"; // e.target.parentNode.parentNode.style.borderTop = "" // r.style.setProperty("--pseudo-backgroundcolor", 'lightgray'); }} Back to Top