{"id":9661,"date":"2024-04-15T16:59:49","date_gmt":"2024-04-15T14:59:49","guid":{"rendered":"https:\/\/iridia.cat\/mecanismes-control-policial\/"},"modified":"2026-04-13T18:45:54","modified_gmt":"2026-04-13T16:45:54","slug":"mecanismes-control-policial","status":"publish","type":"page","link":"https:\/\/iridia.cat\/en\/mecanismes-control-policial\/","title":{"rendered":"Mechanisms for police control"},"content":{"rendered":"\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"has-x-large-font-size wp-block-paragraph\"><strong><strong>INDEPENDENT MECHANISM FOR POLICE EVALUATION<\/strong><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From Ir\u00eddia we are witnessing the shortcomings of the internal mechanisms of police forces. We have seen, time and time again, how cases were filed without purging responsibilities in such serious events as eye amputations for rubber bullets and foam, or in human rights violations such as the one that occurred in Melilla on 24 June 2022, where no rigorous investigation of the facts was carried out.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The creation of an independent mechanism<\/strong>, with competences to effectively investigate human rights violations related to the use of force by police forces, is an international recommendation that organizations such as the United Nations Human Rights Committee have issued to all states and, specifically, to the Spanish State.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This mechanism has already been in existence for many years in other countries such as the United Kingdom which has an Independent Office for Police Conduct.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sign the request and help us to ask the parliamentary groups of the Congress of Deputies and the Parliament of Catalonia, as well as both governments, <strong>to create an external, public and independent mechanism for investigation and evaluation of police actions<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can download <a href=\"https:\/\/iridia.cat\/wp-content\/uploads\/2024\/04\/Carta_mecanisme.pdf\">the letter here<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Help us reach more people, share the campaign:<\/p>\n\n\n<div class=\"essb_links essb_displayed_ essb_share essb_template_round-retina essb_363340106 essb_links_center print-no\" id=\"essb_displayed__363340106\" data-essb-postid=\"9661\" data-essb-position=\"\" data-essb-button-style=\"icon\" data-essb-template=\"round-retina\" data-essb-counter-pos=\"hidden\" data-essb-url=\"https:\/\/iridia.cat\/en\/mecanismes-control-policial\/\" data-essb-fullurl=\"https:\/\/iridia.cat\/en\/mecanismes-control-policial\/\" data-essb-instance=\"363340106\"><ul class=\"essb_links_list essb_force_hide_name essb_force_hide\"><li class=\"essb_item essb_link_telegram nolightbox essb_link_svg_icon\"> <a href=\"https:\/\/telegram.me\/share\/url?url=https%3A%2F%2Firidia.cat%2Fen%2Fmecanismes-control-policial%2F&#038;text=I%20have%20signed%20for%20the%20creation%20of%20an%20independent%20police%20oversight%20mechanism.\" title=\"Share on Telegram\" onclick=\"essb.tracking_only('', 'telegram', '363340106', true);\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"nolightbox essb-s-c-telegram essb-s-bgh-telegram essb-s-ch-light essb-s-c-network essb-s-bgh-network\" ><span class=\"essb_icon essb_icon_telegram\"><svg class=\"essb-svg-icon essb-svg-icon-telegram\" aria-hidden=\"true\" role=\"img\" focusable=\"false\" width=\"28\" height=\"32\" viewbox=\"0 0 28 32\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M27.919 6.162l-4.225 19.925c-0.319 1.406-1.15 1.756-2.331 1.094l-6.438-4.744-3.106 2.988c-0.344 0.344-0.631 0.631-1.294 0.631l0.463-6.556 11.931-10.781c0.519-0.463-0.113-0.719-0.806-0.256l-14.75 9.287-6.35-1.988c-1.381-0.431-1.406-1.381 0.288-2.044l24.837-9.569c1.15-0.431 2.156 0.256 1.781 2.013z\"><\/path><\/svg><\/span><span class=\"essb_network_name essb_noname\"><\/span><\/a><\/li><li class=\"essb_item essb_link_whatsapp nolightbox essb_link_svg_icon\"> <a href=\"whatsapp:\/\/send?text=I%20have%20signed%20for%20the%20creation%20of%20an%20independent%20police%20oversight%20mechanism.%20https%3A%2F%2Firidia.cat%2Fen%2Fmecanismes-control-policial%2F\" title=\"Share on WhatsApp\" onclick=\"essb.whatsapp('I%20have%20signed%20for%20the%20creation%20of%20an%20independent%20police%20oversight%20mechanism.%20https%3A%2F%2Firidia.cat%2Fen%2Fmecanismes-control-policial%2F', '363340106'); return false;\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"nolightbox essb-s-c-whatsapp essb-s-bgh-whatsapp essb-s-ch-light essb-s-c-network essb-s-bgh-network\" ><span class=\"essb_icon essb_icon_whatsapp\"><svg class=\"essb-svg-icon essb-svg-icon-whatsapp\" aria-hidden=\"true\" role=\"img\" focusable=\"false\" width=\"32\" height=\"32\" viewbox=\"0 0 32 32\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M27.313 4.625c-3-3-7-4.625-11.25-4.625-8.75 0-15.875 7.125-15.875 15.875 0 2.75 0.75 5.5 2.125 7.938l-2.25 8.188 8.438-2.188c2.313 1.25 4.875 1.938 7.563 1.938v0c0 0 0 0 0 0 8.75 0 15.875-7.125 15.875-15.875 0-4.25-1.625-8.25-4.625-11.25zM16.063 29.063v0c-2.375 0-4.688-0.625-6.688-1.875l-0.5-0.25-5 1.313 1.313-4.875-0.313-0.5c-1.313-2.125-2-4.5-2-7 0-7.313 5.938-13.188 13.188-13.188 3.5 0 6.813 1.375 9.313 3.875s3.875 5.813 3.875 9.313c0 7.25-5.938 13.188-13.188 13.188zM23.313 19.188c-0.438-0.188-2.375-1.188-2.75-1.313-0.313-0.125-0.625-0.188-0.875 0.188-0.25 0.438-1 1.313-1.25 1.563s-0.438 0.313-0.875 0.125c-0.375-0.188-1.625-0.625-3.188-2-1.125-1-1.938-2.313-2.188-2.75-0.25-0.375 0-0.563 0.188-0.813 0.188-0.125 0.375-0.438 0.563-0.688 0.25-0.188 0.313-0.375 0.438-0.625s0.063-0.5-0.063-0.688c-0.063-0.188-0.875-2.188-1.188-2.938-0.375-0.813-0.688-0.688-0.938-0.688-0.188 0-0.5 0-0.75 0s-0.688 0.063-1.063 0.438c-0.375 0.438-1.375 1.375-1.375 3.313 0 2 1.438 3.875 1.625 4.125s2.813 4.25 6.75 6c0.938 0.375 1.688 0.625 2.25 0.813 1 0.313 1.813 0.25 2.5 0.188 0.813-0.125 2.375-1 2.688-1.938 0.375-0.875 0.375-1.688 0.25-1.875-0.125-0.125-0.375-0.25-0.75-0.438z\"><\/path><\/svg><\/span><span class=\"essb_network_name essb_noname\"><\/span><\/a><\/li><li class=\"essb_item essb_link_facebook nolightbox essb_link_svg_icon\"> <a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Firidia.cat%2Fen%2Fmecanismes-control-policial%2F&#038;t=I+have+signed+for+the+creation+of+an+independent+police+oversight+mechanism.\" title=\"Share on Facebook\" onclick=\"essb.window(&#39;https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Firidia.cat%2Fen%2Fmecanismes-control-policial%2F&#038;t=I+have+signed+for+the+creation+of+an+independent+police+oversight+mechanism.&#39;,&#39;facebook&#39;,&#39;363340106&#39;); return false;\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"nolightbox essb-s-c-facebook essb-s-bgh-facebook essb-s-ch-light essb-s-c-network essb-s-bgh-network\" ><span class=\"essb_icon essb_icon_facebook\"><svg class=\"essb-svg-icon essb-svg-icon-facebook\" aria-hidden=\"true\" role=\"img\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewbox=\"0 0 16 16\"><path d=\"M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951\"><\/path><\/svg><\/span><span class=\"essb_network_name essb_noname\"><\/span><\/a><\/li><li class=\"essb_item essb_link_mastodon nolightbox essb_link_svg_icon\"> <a href=\"https:\/\/mastodon.social\/share?text=I+have+signed+for+the+creation+of+an+independent+police+oversight+mechanism. https%3A%2F%2Firidia.cat%2Fen%2Fmecanismes-control-policial%2F\" title=\"Share on Mastodon\" onclick=\"essb.window(&#39;https:\/\/mastodon.social\/share?text=I+have+signed+for+the+creation+of+an+independent+police+oversight+mechanism. https%3A%2F%2Firidia.cat%2Fen%2Fmecanismes-control-policial%2F&#39;,&#39;mastodon&#39;,&#39;363340106&#39;); return false;\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"nolightbox essb-s-c-mastodon essb-s-bgh-mastodon essb-s-ch-light essb-s-c-network essb-s-bgh-network\" ><span class=\"essb_icon essb_icon_mastodon\"><svg class=\"essb-svg-icon essb-svg-icon-mastodon\" aria-hidden=\"true\" role=\"img\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 448 512\"><path fill=\"currentColor\" d=\"M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.5 102.5 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5m-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z\" \/><\/svg><\/span><span class=\"essb_network_name essb_noname\"><\/span><\/a><\/li><li class=\"essb_item essb_link_twitter nolightbox essb_link_twitter_x essb_link_svg_icon\"> <a href=\"https:\/\/x.com\/intent\/post?text=I%20have%20signed%20for%20the%20creation%20of%20an%20independent%20police%20oversight%20mechanism.&amp;url=https%3A%2F%2Firidia.cat%2Fen%2Fmecanismes-control-policial%2F\" title=\"Share on Twitter\" onclick=\"essb.window(&#39;https:\/\/x.com\/intent\/post?text=I%20have%20signed%20for%20the%20creation%20of%20an%20independent%20police%20oversight%20mechanism.&amp;url=https%3A%2F%2Firidia.cat%2Fen%2Fmecanismes-control-policial%2F&#39;,&#39;twitter&#39;,&#39;363340106&#39;); return false;\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"nolightbox essb-s-c-twitter essb-s-bgh-twitter essb-s-ch-light essb-s-c-network essb-s-bgh-network\" ><span class=\"essb_icon essb_icon_twitter_x\"><svg class=\"essb-svg-icon essb-svg-icon-twitter_x\" aria-hidden=\"true\" role=\"img\" focusable=\"false\" viewbox=\"0 0 24 24\"><path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\"><\/path><\/svg><\/span><span class=\"essb_network_name essb_noname\"><\/span><\/a><\/li><\/ul><\/div>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"439\" src=\"https:\/\/iridia.cat\/wp-content\/uploads\/2024\/04\/baner_mecanimseControl_pagina-1024x439.jpg\" alt=\"Mecanisme independent de control de la policia\" class=\"wp-image-9015\" srcset=\"https:\/\/iridia.cat\/wp-content\/uploads\/2024\/04\/baner_mecanimseControl_pagina-1024x439.jpg 1024w, https:\/\/iridia.cat\/wp-content\/uploads\/2024\/04\/baner_mecanimseControl_pagina-300x128.jpg 300w, https:\/\/iridia.cat\/wp-content\/uploads\/2024\/04\/baner_mecanimseControl_pagina-768x329.jpg 768w, https:\/\/iridia.cat\/wp-content\/uploads\/2024\/04\/baner_mecanimseControl_pagina-1536x658.jpg 1536w, https:\/\/iridia.cat\/wp-content\/uploads\/2024\/04\/baner_mecanimseControl_pagina.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<div style=\"height:44px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"has-secondary-color has-text-color has-link-color wp-elements-1 wp-block-paragraph\"><strong>Sign here:<\/strong><\/p>\n\n\n\n\n<script type=\"text\/javascript\" src=\"https:\/\/sinergia.iridia.cat\/cache\/include\/javascript\/sugar_grp1_jquery.js?v=BAVFSmQamCrFj3mlVSqdUQ\"><\/script>\n<script type=\"text\/javascript\" src=\"https:\/\/sinergia.iridia.cat\/cache\/include\/javascript\/sugar_grp1_yui.js?v=BAVFSmQamCrFj3mlVSqdUQ\"><\/script>\n<script type=\"text\/javascript\" src=\"https:\/\/sinergia.iridia.cat\/cache\/include\/javascript\/sugar_grp1.js?v=BAVFSmQamCrFj3mlVSqdUQ\"><\/script>\n<script src=\"https:\/\/challenges.cloudflare.com\/turnstile\/v0\/api.js\" async defer><\/script>\n<html lang='ca_ES'>\r\n\t<body>\r\n\t\t<form action=\"https:\/\/sinergia.iridia.cat\/index.php?entryPoint=stic_Web_Forms_save\" name=\"WebToLeadForm\" method=\"POST\" id=\"WebToLeadForm\" >\r\n\t\t\t<p>\r\n<input type=\"hidden\" id=\"event_id\" name=\"event_id\" value=\"80d960e0-41e0-61ec-b1fe-667521b778ff\" \/>\r\n\r\n<input type=\"hidden\" id=\"redirect_url\" name=\"redirect_url\" value=\"https:\/\/iridia.cat\/es\/agraiment-campanya-mecanismes\/\" \/>\r\n\r\n<input type=\"hidden\" id=\"redirect_ko_url\" name=\"redirect_ko_url\" value=\"https:\/\/iridia.cat\/es\/error-dades\/\" \/>\r\n\r\n<input type=\"hidden\" id=\"validate_identification_number\" name=\"validate_identification_number\" value=\"0\" \/>\r\n\r\n<input type=\"hidden\" id=\"assigned_user_id\" name=\"assigned_user_id\" value=\"1\" \/>\r\n\r\n<input type=\"hidden\" id=\"req_id\" name=\"req_id\" value=\"Contacts___first_name;Contacts___last_name;Contacts___email1;Contacts___phone_mobile;Contacts___consentiment_c;\" \/>\r\n\r\n<input type=\"hidden\" id=\"bool_id\" name=\"bool_id\" value=\"Contacts___consentiment_c;\" \/>\r\n\r\n<input type=\"hidden\" id=\"webFormClass\" name=\"webFormClass\" value=\"EventInscription\" \/>\r\n\r\n<input type=\"hidden\" id=\"stic_Payment_Commitments___payment_type\" name=\"stic_Payment_Commitments___payment_type\" value=\"\" \/>\r\n\r\n<input type=\"hidden\" id=\"stic_Payment_Commitments___periodicity\" name=\"stic_Payment_Commitments___periodicity\" value=\"punctual\" \/>\r\n\r\n<input type=\"hidden\" id=\"language\" name=\"language\" value=\"ca_ES\" \/>\r\n\r\n<input type=\"hidden\" id=\"stic_Registrations___campanya_firma_c\" name=\"stic_Registrations___campanya_firma_c\" value=\"Mecanismes\" \/>\r\n\r\n<input type=\"hidden\" id=\"defParams\" name=\"defParams\" value=\"%7B%22include_payment_commitment%22%3A0%2C%22include_organization%22%3A0%2C%22account_code_mandatory%22%3A0%2C%22include_registration%22%3A1%2C%22account_name_optional%22%3A0%2C%22email_template_id%22%3A%22%22%2C%22include_recaptcha%22%3A0%2C%22recaptcha_configs%22%3A%7B%22%28General%29%22%3A%7B%22KEY%22%3A%226LetnWUiAAAAAI8skRzN2KQCZpzMQ2gfoS0_PSUw%22%2C%22NAME%22%3A%22%22%2C%22WEBKEY%22%3A%226LetnWUiAAAAABca1-D5HFbILH7B31RfD98TX-LE%22%2C%22VERSION%22%3A%222%22%7D%7D%2C%22recaptcha_configKeys%22%3A%5B%22%28General%29%22%5D%2C%22recaptcha_selected%22%3A%220%22%7D\" \/>\r\n\r\n<input type=\"hidden\" id=\"timeZone\" name=\"timeZone\" value=\"\" \/>\r\n\r\n<\/p>\r\n<table class=\"tableForm\">\r\n<tbody id=\"Contacts\" class=\"section\">\r\n\r\n<tr id=\"td_lbl_Contacts___first_name\" class=\"column_25\"><span><label id=\"lbl_Contacts___first_name\" for=\"Contacts___first_name\">Name:<span id=\"lbl_Contacts___first_name_required\" class=\"required\">*<\/span><\/label><\/span><\/tr>\r\n\r\n<tr id=\"td_Contacts___first_name\" class=\"column_25\"><span> <input id=\"Contacts___first_name\" name=\"Contacts___first_name\" type=\"text\" span=\"\" sugar=\"slot\" \/> <\/span><\/tr>\r\n\r\n<tr id=\"td_lbl_Contacts___last_name\" class=\"column_25\"><span><label id=\"lbl_Contacts___last_name\" for=\"Contacts___last_name\">Last name:<span id=\"lbl_Contacts___last_name_required\" class=\"required\">*<\/span> <\/label> <\/span><\/tr>\r\n\r\n<tr id=\"td_Contacts___last_name\" class=\"column_25\"><span> <input id=\"Contacts___last_name\" name=\"Contacts___last_name\" type=\"text\" span=\"\" sugar=\"slot\" \/> <\/span><\/tr>\r\n\r\n<tr id=\"td_lbl_Contacts___email1\" class=\"column_25\"><span><label id=\"lbl_Contacts___email1\" for=\"Contacts___email1\">E-mail adress:<span id=\"lbl_Contacts___email1_required\" class=\"required\">*<\/span><\/label>  <\/span><\/tr>\r\n\r\n<tr id=\"td_Contacts___email1\" class=\"column_25\"><span> <input id=\"Contacts___email1\" name=\"Contacts___email1\" type=\"text\" onchange=\"validateEmailAdd(this);\" span=\"\" sugar=\"slot\" \/> <\/span><\/tr>\r\n\r\n<tr id=\"td_lbl_Contacts___phone_mobile\" class=\"column_25\"><span><label id=\"lbl_Contacts___phone_mobile\" for=\"Contacts___phone_mobile\">Mobile:<span id=\"lbl_Contacts___email1_required\" class=\"required\">*<\/span><\/label> <\/span><\/tr>\r\n\r\n<tr id=\"td_Contacts___phone_mobile\" class=\"column_25\"><span> <input id=\"Contacts___phone_mobile\" name=\"Contacts___phone_mobile\" type=\"text\" span=\"\" sugar=\"slot\" \/> <\/span><\/tr>\r\n\r\n<td colspan=\"4\">\r\n<label>Please note that the Ir\u00eddia Association, responsible for processing the data you provide us, with mail info@iridia.cat and phone 693 563 529, we treat the data of interested persons for communication purposes, we will send you information about the organization, events and campaigns we do. The data are treated under security measures and will not be disclosed to third parties. You can make use of your right of consultation, cancellation, ratification or deletion of your data at any time, and consult information about our <a title=\"aqu\u00ed\" href=\"https:\/\/iridia.cat\/en\/privacy-policy\/\" target=\"_blank\" rel=\"noopener\">protection policy<\/a>.<\/label>\r\n<\/td>\r\n<tr>\r\n<\/tr>\r\n<td colspan=\"4\"><label id=\"lbl_Contacts___consentiment_c\" for=\"Contacts___consentiment_c\"> I accept the treatment:<span id=\"lbl_Contacts___consentiment_c\" class=\"required\">*<\/span><input type=\"checkbox\" style=\"opacity: 1;margin-top:6px;\" id=\"Contacts___consentiment_c\" name=\"Contacts___consentiment_c\" \/><\/label><\/td>\r\n\r\n\r\n<\/tbody>\r\n\r\n<tbody>\r\n<tr>\r\n<td>\u00a0<\/td>\r\n<td><div class='g-recaptcha' data-sitekey='6LetnWUiAAAAABca1-D5HFbILH7B31RfD98TX-LE'><\/div><input class=\"button\" type=\"button\" onclick=\"submitForm(this.form);\" name=\"Submit\" value=\"Envia\" \/><\/td>\r\n<\/tr>\r\n\r\n<\/tbody>\r\n\r\n<\/table>\r\n\t\t<\/form>\t\t\r\n\t\t<script type=\"text\/javascript\">\r\n\t\t\t\t\t\t\tvar stic_Web_Forms_LBL_PROVIDE_WEB_FORM_FIELDS = \"Ompliu els camps obligatoris\";\r\n\t\t\t\t\t\t\tvar stic_Web_Forms_LBL_INVALID_FORMAT = \"Comproveu el format del camp\";\r\n\t\t\t\t\t\t\tvar stic_Web_Forms_LBL_SERVER_CONNECTION_ERROR = \"Ha fallat la connexi\u00f3 amb el servidor\";\r\n\t\t\t\t\t\t\tvar stic_Web_Forms_LBL_SIZE_FILE_EXCEED = \"La mida del fitxer no pot ser superior a \";\r\n\t\t\t\t\t\t\tvar stic_Web_Forms_LBL_SUM_SIZE_FILES_EXCEED = \"La suma de les mides dels fitxers no pot ser superior a \";\r\n\t\t\t\t\t\t\tvar APP_LBL_REQUIRED_SYMBOL = \"*\";\r\n\t\t\t\t\t\t\tvar APP_DATE_FORMAT = \"%d\/%m\/%Y\";\r\n\t\t\t\t\t\t\/**\r\n * This file is part of SinergiaCRM.\r\n * SinergiaCRM is a work developed by SinergiaTIC Association, based on SuiteCRM.\r\n * Copyright (C) 2013 - 2023 SinergiaTIC Association\r\n *\r\n * This program is free software; you can redistribute it and\/or modify it under\r\n * the terms of the GNU Affero General Public License version 3 as published by the\r\n * Free Software Foundation.\r\n *\r\n * This program is distributed in the hope that it will be useful, but WITHOUT\r\n * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r\n * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\r\n * details.\r\n *\r\n * You should have received a copy of the GNU Affero General Public License along with\r\n * this program; if not, see http:\/\/www.gnu.org\/licenses or write to the Free\r\n * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA\r\n * 02110-1301 USA.\r\n *\r\n * You can contact SinergiaTIC Association at email address info@sinergiacrm.org.\r\n *\/\r\n\/**\r\n * Change the visibility of a field\r\n * @param field field to be changed\r\n * @param visibility visibility applied to the field\r\n *\/\r\nfunction changeVisibility(field, visibility) {\r\n  var o_td = document.getElementById(\"td_\" + field);\r\n  var o_td_lbl = document.getElementById(\"td_lbl_\" + field);\r\n  if (o_td) {\r\n    o_td.style.display = visibility;\r\n  }\r\n\r\n  if (o_td_lbl) {\r\n    o_td_lbl.style.display = visibility;\r\n  }\r\n}\r\n\r\n\/**\r\n * Show a hidden field\r\n * @param field field to be shown\r\n *\/\r\nfunction showField(field) {\r\n  changeVisibility(field, \"table-cell\");\r\n}\r\n\r\n\/**\r\n * Hide a field\r\n * @param field field to be hidden\r\n *\/\r\nfunction hideField(field) {\r\n  changeVisibility(field, \"none\");\r\n}\r\n\r\n\/**\r\n * Add a field as required\r\n * @param field field that will be set as required\r\n *\/\r\nfunction addRequired(field) {\r\n  var reqs = document.getElementById(\"req_id\").value;\r\n  if (-1 == reqs.search(field + \";\")) {\r\n    document.getElementById(\"req_id\").value += field + \";\";\r\n  }\r\n\r\n  var requiredLabel = document.getElementById(\"lbl_\" + field + \"_required\");\r\n  if (!requiredLabel) {\r\n    var rlParent = document.getElementById(\"td_lbl_\" + field);\r\n    if (rlParent) {\r\n      var newLabel = document.createElement(\"span\");\r\n      newLabel.id = \"lbl_\" + field + \"_required\";\r\n      newLabel.class = \"required\";\r\n      newLabel.style = \"color: rgb(255, 0, 0);\";\r\n      newLabel.innerText = APP_LBL_REQUIRED_SYMBOL;\r\n      rlParent.appendChild(newLabel);\r\n    }\r\n  }\r\n}\r\n\r\n\/**\r\n * Delete a field as required\r\n * @param field field that will be set as no required\r\n *\/\r\nfunction removeRequired(field) {\r\n  var reqs = document.getElementById(\"req_id\").value;\r\n  document.getElementById(\"req_id\").value = reqs.replace(field + \";\", \"\");\r\n  var requiredLabel = document.getElementById(\"lbl_\" + field + \"_required\");\r\n  if (requiredLabel) {\r\n    requiredLabel.parentNode.removeChild(requiredLabel);\r\n  }\r\n}\r\n\r\n\/**\r\n * Validate different form fields\r\n * @returns {Boolean}\r\n *\/\r\nfunction checkFields() {\r\n  \/\/ Check the required fields, nif \/ cif fields, mails and date fields\r\n  if (!validateRequired() || !validateNifCif() || !validateMails() || !validateDates()) {\r\n    return false;\r\n  } else {\r\n    \/\/ If everything is correct replace the Boolean fields\r\n    var boolHidden = document.getElementById(\"bool_id\");\r\n    if (boolHidden != null) {\r\n      var reqs = boolHidden.value;\r\n      if (reqs.length) {\r\n        \/\/ If there are Boolean fields, they are treated\r\n        bools = reqs.substring(0, reqs.lastIndexOf(\";\"));\r\n        var boolFields = new Array();\r\n        var boolFields = bools.split(\";\");\r\n        nbrFields = boolFields.length;\r\n        for (var i = 0; i < nbrFields; i++) {\r\n          var element = document.getElementById(boolFields[i]);\r\n          element.value == (element.value == \"on\" ? 1 : 0);\r\n        }\r\n      }\r\n    }\r\n    return true;\r\n  }\r\n}\r\n\r\n\/**\r\n * Check the format of the date fields\r\n * @returns {Boolean}\r\n *\/\r\nfunction validateDates() {\r\n  var elements = jQuery.find(\"input[type=text].date_input\");\r\n  if (elements && elements.length > 0) {\r\n    for (var i = 0; i < elements.length; i++) {\r\n      \/\/ The field may not be mandatory, therefore, it is only validated if the element has any value\r\n      if (elements[i].value && !validateDate(elements[i].value)) {\r\n        var label = document.getElementById(\"lbl_\" + elements[i].id);\r\n        alert(stic_Web_Forms_LBL_INVALID_FORMAT + \": \" + label.textContent.trim().replace(\/:$\/, \"\"));\r\n        selectTextInput(elements[i]);\r\n        return false;\r\n      }\r\n    }\r\n  }\r\n  return true;\r\n}\r\n\r\n\/**\r\n * Validate a date using the format indicated in APP_DATE_FORMAT. Does not take into account if the year is leap year\r\n * @param date\r\n * @returns {Boolean}\r\n *\/\r\nfunction validateDate(date) {\r\n  var number = \/\\d+\/g;\r\n  var numbers = [];\r\n  var match = number.exec(date);\r\n\r\n  while (match != null) {\r\n    numbers.push(match[0]);\r\n    match = number.exec(date);\r\n  }\r\n\r\n  if (numbers.length != 3) {\r\n    \/\/ If we don't have three numeric fields, it sure isn't a date\r\n    return false;\r\n  }\r\n\r\n  var format = \/\\%Y|\\%m|\\%d\/g;\r\n  var fields = [];\r\n  match = format.exec(APP_DATE_FORMAT); \/\/ We separate the fields from the format\r\n  while (match != null) {\r\n    fields.push(match[0]);\r\n    match = format.exec(APP_DATE_FORMAT);\r\n  }\r\n\r\n  var idxFields = []; \/\/ Index the fields to be able to access them directly\r\n  for (var i = 0; i < fields.length; i++) {\r\n    idxFields[fields[i].replace(\"%\", \"\")] = i;\r\n  }\r\n\r\n  \/\/ Retrieve the values ??of each field\r\n  var day = numbers[idxFields.d];\r\n  var month = numbers[idxFields.m];\r\n  var year = numbers[idxFields.Y];\r\n\r\n  \/\/ Check the length of the fields\r\n  if (month.length != 2 || day.length != 2 || year.length != 4) {\r\n    return false;\r\n  }\r\n\r\n  \/\/ Check the format of separators\r\n  if (date.replace(number, \"\") != APP_DATE_FORMAT.replace(format, \"\")) {\r\n    return false;\r\n  }\r\n  day = parseInt(day);\r\n  month = parseInt(month);\r\n  year = parseInt(year);\r\n\r\n  \/\/ Check the value of the month and day\r\n  if (month > 12 || month < 1) {\r\n    return false;\r\n  } else {\r\n    if (day < 1) {\r\n      return false;\r\n    }\r\n\r\n    switch (month) {\r\n      case 1:\r\n      case 3:\r\n      case 5:\r\n      case 7:\r\n      case 8:\r\n      case 10:\r\n      case 12:\r\n        return day <= 31;\r\n      case 2:\r\n        return day <= 29; \/\/ Leap years are not taken into account\r\n      case 4:\r\n      case 6:\r\n      case 9:\r\n      case 11:\r\n        return day <= 30;\r\n    }\r\n  }\r\n}\r\n\r\n\/**\r\n * Check the required fields\r\n * @returns {Boolean}\r\n *\/\r\nfunction validateRequired() {\r\n  \/\/ Check the required fields\r\n  var reqHidden = document.getElementById(\"req_id\");\r\n  if (reqHidden != null) {\r\n    var reqs = reqHidden.value;\r\n    if (reqs.length) {\r\n      \/\/ If there are required fields check them\r\n      reqs = reqs.substring(0, reqs.lastIndexOf(\";\"));\r\n      var reqFields = new Array();\r\n      var reqFields = reqs.split(\";\");\r\n      nbrFields = reqFields.length;\r\n\r\n      for (var i = 0; i < nbrFields; i++) {\r\n        var lbl_element;\r\n        var element = document.getElementById(reqFields[i]);\r\n        var error = 0;\r\n        if (element != null) {\r\n          lbl_element = \"#lbl_\" + element.id;\r\n          jQuery(lbl_element).removeClass(\"current-required-field\");\r\n          switch (element.type) {\r\n            case \"checkbox\":\r\n              if (element.checked == 0) {\r\n                error = 1;\r\n              }\r\n              break;\r\n\r\n            case \"select-one\":\r\n              if (element.selectedIndex <= 0) {\r\n                error = 1;\r\n              }\r\n              break;\r\n\r\n            case \"select-multiple\":\r\n              let numOptionsSelected = jQuery(\"select[id='input_selectmultiple'] option:selected\").length;\r\n              if (element.selectedIndex <= 0 && numOptionsSelected <= 1) {\r\n                error = 1;\r\n              }\r\n              break;\r\n\r\n            default:\r\n              \/\/ Type fields: text, email, password...\r\n              if (element.value.length <= 0) {\r\n                error = 1;\r\n              }\r\n          }\r\n        } else {\r\n          \/\/radio type fields\r\n          error = 1;\r\n          var options = document.getElementsByName(reqFields[i]);\r\n\r\n          lbl_element = \"#lbl_\" + options[0].name;\r\n          jQuery(lbl_element).removeClass(\"current-required-field\");\r\n\r\n          options.forEach(function(option) {\r\n            if (option.checked) {\r\n              error = 0;\r\n            }\r\n          });\r\n        }\r\n\r\n        if (error) {\r\n          alert(stic_Web_Forms_LBL_PROVIDE_WEB_FORM_FIELDS);\r\n          jQuery(lbl_element).addClass(\"current-required-field\");\r\n          selectTextInput(element);\r\n          return false;\r\n        }\r\n      }\r\n    }\r\n  }\r\n  return true;\r\n}\r\n\r\n\/**\r\n * Validate form emails\r\n * @returns {Boolean}\r\n *\/\r\n function validateMails() {\r\n  var fields = [\"Contacts___email1\", \"Contacts___email2\", \"Accounts___email1\", \"Accounts___email2\"];\r\n  var ret = true;\r\n  for (var i = 0; i < fields.length && ret; i++) {\r\n    emailInput=document.getElementById(fields[i])\r\n    if(emailInput != undefined)\r\n    {\r\n      ret = validateEmailAdd(emailInput);\r\n    }\r\n  }\r\n  return ret;\r\n}\r\n\r\n\/**\r\n * Validate an email address\r\n * Regex validation email from https:\/\/html5-tutorial.net\/form-validation\/validating-email\/\r\n * @param obj DOM object of the input containing the mail\r\n * @returns {Boolean}\r\n *\/\r\n\r\nfunction validateEmailAdd(obj) {\r\n  obj.value=obj.value.trim();\r\n  if (obj != null && obj.value.length > 0 && !isValidEmail(obj.value)) {\r\n    var label = document.getElementById(\"lbl_\" + obj.id);\r\n    alert(stic_Web_Forms_LBL_INVALID_FORMAT + \": \" + label.textContent.replace(\/: +$\/, \"\"));\r\n    selectTextInput(obj);\r\n    return false;\r\n  } else {\r\n    return true;\r\n  }\r\n}\r\n\r\n\/**\r\n * Check the identification number fields for contacts and accounts as needed\r\n * @returns {Boolean}\r\n *\/\r\nfunction validateNifCif() {\r\n  var validateIdentificationNumber = document.getElementById(\"validate_identification_number\");\r\n\r\n  \/\/ Return true if identification number validation is not required\r\n  if (validateIdentificationNumber && validateIdentificationNumber.value == \"0\") {\r\n    console.log(\"Identification number validation is not required.\");\r\n    return true;\r\n  }\r\n\r\n  \/\/ NIF validation\r\n  var identificationType = jQuery(\"#Contacts___stic_identification_type_c\").val();\r\n  \/\/ Validate if the stic_identification_type_c field is not defined or is defined as NIF or NIE. \r\n  \/\/ Other values like passports and so on should not be validated as there's no rule to do it.\r\n  if (identificationType == null || identificationType == \"nif\" || identificationType == \"nie\") {\r\n    var nif = document.getElementById(\"Contacts___stic_identification_number_c\");\r\n    \/\/ The nif field may not be required so it can be empty. If so, it is not necessary to validate it\r\n    if (nif && nif.value && !isValidDNI(nif.value)) {\r\n      label = \" \";\r\n      if (nif.labels && nif.labels[0]) {\r\n        label += (nif.labels[0].textContent.slice(-1) == \":\" ? nif.labels[0].textContent.substring(0, nif.labels[0].textContent.length - 1) : nif.labels[0].textContent);\r\n      }\r\n      alert(stic_Web_Forms_LBL_INVALID_FORMAT + label + \".\");\r\n      nif.focus();\r\n      return false;\r\n    }\r\n  }\r\n\r\n  \/\/ CIF validation\r\n  var cif = document.getElementById(\"Accounts___stic_identification_number_c\");\r\n  \/\/ The cif field may not be required so it can be empty. If so, it is not necessary to validate it\r\n  if (cif && cif.value && !isValidCif(cif.value)) {\r\n    label = \" \";\r\n    if (cif.labels && cif.labels[0]) {\r\n      label += (cif.labels[0].textContent.slice(-1) == \":\" ? cif.labels[0].textContent.substring(0, cif.labels[0].textContent.length - 1) : cif.labels[0].textContent);\r\n    }\r\n    alert(stic_Web_Forms_LBL_INVALID_FORMAT + label + \".\");\r\n    cif.focus();\r\n    return false;\r\n  }\r\n\r\n  return true;\r\n}\r\n\r\n\/**\r\n * Check with each change of value in the field that only number and separator are allowed of decimals '.'\r\n * @returns {Boolean}\r\n *\/\r\nfunction isNumberKey(evt) {\r\n  var charCode = evt.which ? evt.which : event.keyCode;\r\n  if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {\r\n    return false;\r\n  }\r\n\r\n  if (charCode == 46) {\r\n    var evento = evt || event;\r\n    var dots = evento.currentTarget.value.match(\/\\.\/g); \/\/ If there is already a point, you cannot add another\r\n    if (dots && dots.length > 0) {\r\n      return false;\r\n    }\r\n    if (evento.currentTarget.value.length == 0) {\r\n      \/\/ If the point is at the beginning it includes a 0\r\n      evento.currentTarget.value = \"0\";\r\n    }\r\n  }\r\n\r\n  return true;\r\n}\r\n\r\n\/**\r\n * Format a value in a number with fixed-point notation\r\n * @param input currency type field in which to validate the format\r\n *\/\r\nfunction formatCurrency(input) {\r\n  var value = Number(input.value);\r\n  if (!isNaN(value)) {\r\n    input.value = value.toFixed(2);\r\n  }\r\n}\r\n\r\n\/**\r\n * Valid if a cif is valid\r\n * Adapted to javascript from its original in:\r\n * http:\/\/www.michublog.com\/informatica\/8-funciones-para-la-validacion-de-formularios-con-expresiones-regulares\r\n * @param cif\r\n * @returns {Boolean}\r\n *\/\r\nfunction isValidCif(cif) {\r\n  cif.toUpperCase();\r\n  cifRegEx1 = \/^[ABEH][0-9]{8}\/i;\r\n  cifRegEx2 = \/^[KPQS][0-9]{7}[A-J]\/i;\r\n  cifRegEx3 = \/^[CDFGJLMNRUVW][0-9]{7}[0-9A-J]\/i;\r\n\r\n  if (cif.match(cifRegEx1) || cif.match(cifRegEx2) || cif.match(cifRegEx3)) {\r\n    control = cif.charAt(cif.length - 1);\r\n    sum_A = 0;\r\n    sum_B = 0;\r\n    for (i = 1; i < 8; i++) {\r\n      if (i % 2 == 0) {\r\n        sum_A += parseInt(cif.charAt(i));\r\n      } else {\r\n        t = (parseInt(cif.charAt(i)) * 2).toString();\r\n        p = 0;\r\n        for (j = 0; j < t.length; j++) {\r\n          p += parseInt(t.charAt(j));\r\n        }\r\n        sum_B += p;\r\n      }\r\n    }\r\n\r\n    sum_C = parseInt(sum_A + sum_B) + \"\"; \/\/ As\u00ed se convierte en cadena\r\n    sum_D = (10 - parseInt(sum_C.charAt(sum_C.length - 1))) % 10;\r\n    letters = \"JABCDEFGHI\";\r\n\r\n    if (control >= \"0\" && control <= \"9\") {\r\n      return control == sum_D;\r\n    } else {\r\n      return control.toUpperCase() == letters[sum_D];\r\n    }\r\n  } else {\r\n    return false;\r\n  }\r\n}\r\n\r\n\/**\r\n * Check if it is a correct ID (between 5 and 8 letters followed by the corresponding letter).\r\n * Accept NIEs (Foreigners with X, Y or Z at the beginning)\r\n * http:\/\/trellat.es\/funcion-para-validar-dni-o-nie-en-javascript\/\r\n * @param dni\r\n * @returns {Boolean}\r\n *\/\r\nfunction isValidDNI(dni) {\r\n  var number, lett, letter;\r\n  var regular_expression_dni = \/^[XYZ]?\\d{5,8}[A-Z]$\/;\r\n  dni = dni.toUpperCase();\r\n\r\n  if (regular_expression_dni.test(dni) === true) {\r\n    number = dni.substr(0, dni.length - 1);\r\n    number = number.replace(\"X\", 0);\r\n    number = number.replace(\"Y\", 1);\r\n    number = number.replace(\"Z\", 2);\r\n    lett = dni.substr(dni.length - 1, 1);\r\n    number = number % 23;\r\n\r\n    letter = \"TRWAGMYFPDXBNJZSQVHLCKET\";\r\n    letter = letter.substring(number, number + 1);\r\n\r\n    return letter == lett;\r\n  } else {\r\n    return false;\r\n  }\r\n}\r\n\r\n\/**\r\n * Assign a value to a select field\r\n * @param select form field element\r\n * @param value value that the select option must have to be selected\r\n *\/\r\n\/\/\r\nfunction setSelectValue(select, value) {\r\n  for (var i = 0; i < select.options.length; i++) {\r\n    if (select.options[i].value == value) {\r\n      select.options[i].selected = true;\r\n    } else {\r\n      select.options[i].selected = false;\r\n    }\r\n  }\r\n  \/\/ Save the previous value\r\n  select.prev_value = select.options[select.selectedIndex].value;\r\n}\r\n\r\n\/**\r\n * Select the text of an input text of the form\r\n * @param input Object from which the text will be selected\r\n *\/\r\nfunction selectTextInput(input) {\r\n  if (typeof input.setSelectionRange != \"undefined\") {\r\n    input.setSelectionRange(0, input.value.length);\r\n  }\r\n  input.focus();\r\n}\r\n\r\n\/**\r\n * Verify that the size of the form attachments does not exceed the size defined in the PHP configuration\r\n *\/\r\nvar items;\r\nvar formSizeArray = [];\r\n\r\nvar url =\r\n  jQuery(\"form\")\r\n    .attr(\"action\")\r\n    .split(\"=\")[0] + \"=stic_Web_Forms_attachment_limits_response\";\r\njQuery.ajax({\r\n  url: url,\r\n  dataType: \"jsonp\"\r\n});\r\n\r\n\/**\r\n * Gets values of the PHP configuration in the system\r\n * @param data array from which the values ??are obtained\r\n *\/\r\nfunction getConfigVariables(data) {\r\n  items = data;\r\n  if (!items.uploadMaxFilesize || !items.postMaxSize) {\r\n    alert(stic_Web_Forms_LBL_SERVER_CONNECTION_ERROR);\r\n  }\r\n}\r\n\r\n\/**\r\n * Check if the attachment file size added to the input file is sizer\r\n * to the configuration variable php upload_max_filesize\r\n *\/\r\njQuery(\".document\").change(function() {\r\n  var numInput = this.id.substring(this.id.length - 1, this.id.length);\r\n  var errorZone = \"#error_zone_\" + numInput;\r\n  if (this.files[0]) {\r\n    var fileName = this.files[0].name;\r\n    var fileSize = this.files[0].size;\r\n    if (fileSize > items.uploadMaxFilesizeBytes) {\r\n      jQuery(errorZone).html(\"<span>\" + stic_Web_Forms_LBL_SIZE_FILE_EXCEED + items.uploadMaxFilesize + \"B <\/span>\");\r\n      formSizeArray[numInput - 1] = fileSize;\r\n    } else {\r\n      jQuery(errorZone).html(\"\");\r\n      formSizeArray[numInput - 1] = fileSize;\r\n    }\r\n  } else {\r\n    jQuery(errorZone).html(\"\");\r\n    formSizeArray[numInput - 1] = 0;\r\n  }\r\n});\r\n\r\n\/**\r\n * Check the total size of the files attached to the form\r\n * @returns {Boolean}\r\n *\/\r\nfunction checkFormSize() {\r\n  if (items) {\r\n    var formSize = 0;\r\n    var fileZizeError = 0;\r\n\r\n    formSizeArray.forEach(function(inputSize) {\r\n      if (inputSize) {\r\n        if (inputSize > items.uploadMaxFilesizeBytes) {\r\n          fileZizeError = 1;\r\n        }\r\n        formSize = formSize + inputSize;\r\n      }\r\n    });\r\n\r\n    if (fileZizeError) {\r\n      alert(stic_Web_Forms_LBL_SIZE_FILE_EXCEED + items.uploadMaxFilesize + \"B\");\r\n      return false;\r\n    }\r\n\r\n    if (formSize <= items.postMaxSizeBytes) {\r\n      return true;\r\n    } else {\r\n      alert(stic_Web_Forms_LBL_SUM_SIZE_FILES_EXCEED + items.postMaxSize + \"B\");\r\n      return false;\r\n    }\r\n  } else {\r\n    return true;\r\n  }\r\n}\r\n\r\n\/**\r\n * Fills the timeZone variable on loading.\r\n *\/\r\njQuery('#timeZone').val(Intl.DateTimeFormat().resolvedOptions().timeZone);\r\n\/**\r\n * This file is part of SinergiaCRM.\r\n * SinergiaCRM is a work developed by SinergiaTIC Association, based on SuiteCRM.\r\n * Copyright (C) 2013 - 2023 SinergiaTIC Association\r\n *\r\n * This program is free software; you can redistribute it and\/or modify it under\r\n * the terms of the GNU Affero General Public License version 3 as published by the\r\n * Free Software Foundation.\r\n *\r\n * This program is distributed in the hope that it will be useful, but WITHOUT\r\n * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r\n * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\r\n * details.\r\n *\r\n * You should have received a copy of the GNU Affero General Public License along with\r\n * this program; if not, see http:\/\/www.gnu.org\/licenses or write to the Free\r\n * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA\r\n * 02110-1301 USA.\r\n *\r\n * You can contact SinergiaTIC Association at email address info@sinergiacrm.org.\r\n *\/\r\nvar formHasAlreadyBeenSent = false;\r\n\/**\r\n * Form submission function\r\n * @param form form to be sent\r\n *\/\r\nfunction submitForm(form) {\r\n  if (checkFields() && checkFormSize()) {\r\n    if (typeof validateCaptchaAndSubmit != \"undefined\") {\r\n      validateCaptchaAndSubmit();\r\n    } else {\r\n        if (formHasAlreadyBeenSent != true) {\r\n            formHasAlreadyBeenSent = true;\r\n            form.submit();\r\n        } else {\r\n            console.log(\"Form is locked because it has already been sent.\");\r\n        }\r\n    }\r\n  }\r\n  return false;\r\n}\r\n\r\n\t\t<\/script>\r\n\t<\/body>\r\n<\/html>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>INDEPENDENT MECHANISM FOR POLICE EVALUATION From Ir\u00eddia we are witnessing the shortcomings of the internal mechanisms of police forces. We have seen, time and time again, how cases were filed without purging responsibilities in such serious events as eye amputations for rubber bullets and foam, or in human rights violations such as the one that<a href=\"https:\/\/iridia.cat\/en\/mecanismes-control-policial\/\">Continue reading <span class=\"sr-only\">&#8220;Mechanisms for police control&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"tags":[157],"class_list":["post-9661","page","type-page","status-publish","hentry","tag-violencia-institucional-en-2"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Mechanisms for police control - Ir\u00eddia<\/title>\n<meta name=\"description\" content=\"Ara \u00e9s el moment: signa per la creaci\u00f3 d\u2019un mecanisme extern, p\u00fablic i independent d\u2019investigaci\u00f3 i avaluaci\u00f3 de les actuacions policials.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/iridia.cat\/mecanismes-control-policial\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mechanisms for police control - Ir\u00eddia\" \/>\n<meta property=\"og:description\" content=\"Ara \u00e9s el moment: signa per la creaci\u00f3 d\u2019un mecanisme extern, p\u00fablic i independent d\u2019investigaci\u00f3 i avaluaci\u00f3 de les actuacions policials.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/iridia.cat\/mecanismes-control-policial\/\" \/>\n<meta property=\"og:site_name\" content=\"Ir\u00eddia\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-13T16:45:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/iridia.cat\/wp-content\/uploads\/2024\/04\/baner_mecanimseControl_pagina.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2048\" \/>\n\t<meta property=\"og:image:height\" content=\"877\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/iridia.cat\\\/mecanismes-control-policial\\\/\",\"url\":\"https:\\\/\\\/iridia.cat\\\/mecanismes-control-policial\\\/\",\"name\":\"Mechanisms for police control - Ir\u00eddia\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/iridia.gatxan.in\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/iridia.cat\\\/mecanismes-control-policial\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/iridia.cat\\\/mecanismes-control-policial\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/iridia.cat\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/baner_mecanimseControl_pagina-1024x439.jpg\",\"datePublished\":\"2024-04-15T14:59:49+00:00\",\"dateModified\":\"2026-04-13T16:45:54+00:00\",\"description\":\"Ara \u00e9s el moment: signa per la creaci\u00f3 d\u2019un mecanisme extern, p\u00fablic i independent d\u2019investigaci\u00f3 i avaluaci\u00f3 de les actuacions policials.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/iridia.cat\\\/mecanismes-control-policial\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/iridia.cat\\\/mecanismes-control-policial\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/iridia.cat\\\/mecanismes-control-policial\\\/#primaryimage\",\"url\":\"https:\\\/\\\/iridia.cat\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/baner_mecanimseControl_pagina-1024x439.jpg\",\"contentUrl\":\"https:\\\/\\\/iridia.cat\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/baner_mecanimseControl_pagina-1024x439.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/iridia.cat\\\/mecanismes-control-policial\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inici\",\"item\":\"https:\\\/\\\/iridia.cat\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mechanisms for police control\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/iridia.gatxan.in\\\/#website\",\"url\":\"https:\\\/\\\/iridia.gatxan.in\\\/\",\"name\":\"Ir\u00eddia\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/iridia.gatxan.in\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/iridia.gatxan.in\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/iridia.gatxan.in\\\/#organization\",\"name\":\"Ir\u00eddia\",\"url\":\"https:\\\/\\\/iridia.gatxan.in\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/iridia.gatxan.in\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":null,\"contentUrl\":null,\"width\":null,\"height\":null,\"caption\":\"Ir\u00eddia\"},\"image\":{\"@id\":\"https:\\\/\\\/iridia.gatxan.in\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mechanisms for police control - Ir\u00eddia","description":"Ara \u00e9s el moment: signa per la creaci\u00f3 d\u2019un mecanisme extern, p\u00fablic i independent d\u2019investigaci\u00f3 i avaluaci\u00f3 de les actuacions policials.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/iridia.cat\/mecanismes-control-policial\/","og_locale":"en_US","og_type":"article","og_title":"Mechanisms for police control - Ir\u00eddia","og_description":"Ara \u00e9s el moment: signa per la creaci\u00f3 d\u2019un mecanisme extern, p\u00fablic i independent d\u2019investigaci\u00f3 i avaluaci\u00f3 de les actuacions policials.","og_url":"https:\/\/iridia.cat\/mecanismes-control-policial\/","og_site_name":"Ir\u00eddia","article_modified_time":"2026-04-13T16:45:54+00:00","og_image":[{"width":2048,"height":877,"url":"https:\/\/iridia.cat\/wp-content\/uploads\/2024\/04\/baner_mecanimseControl_pagina.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/iridia.cat\/mecanismes-control-policial\/","url":"https:\/\/iridia.cat\/mecanismes-control-policial\/","name":"Mechanisms for police control - Ir\u00eddia","isPartOf":{"@id":"https:\/\/iridia.gatxan.in\/#website"},"primaryImageOfPage":{"@id":"https:\/\/iridia.cat\/mecanismes-control-policial\/#primaryimage"},"image":{"@id":"https:\/\/iridia.cat\/mecanismes-control-policial\/#primaryimage"},"thumbnailUrl":"https:\/\/iridia.cat\/wp-content\/uploads\/2024\/04\/baner_mecanimseControl_pagina-1024x439.jpg","datePublished":"2024-04-15T14:59:49+00:00","dateModified":"2026-04-13T16:45:54+00:00","description":"Ara \u00e9s el moment: signa per la creaci\u00f3 d\u2019un mecanisme extern, p\u00fablic i independent d\u2019investigaci\u00f3 i avaluaci\u00f3 de les actuacions policials.","breadcrumb":{"@id":"https:\/\/iridia.cat\/mecanismes-control-policial\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/iridia.cat\/mecanismes-control-policial\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/iridia.cat\/mecanismes-control-policial\/#primaryimage","url":"https:\/\/iridia.cat\/wp-content\/uploads\/2024\/04\/baner_mecanimseControl_pagina-1024x439.jpg","contentUrl":"https:\/\/iridia.cat\/wp-content\/uploads\/2024\/04\/baner_mecanimseControl_pagina-1024x439.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/iridia.cat\/mecanismes-control-policial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inici","item":"https:\/\/iridia.cat\/"},{"@type":"ListItem","position":2,"name":"Mechanisms for police control"}]},{"@type":"WebSite","@id":"https:\/\/iridia.gatxan.in\/#website","url":"https:\/\/iridia.gatxan.in\/","name":"Ir\u00eddia","description":"","publisher":{"@id":"https:\/\/iridia.gatxan.in\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/iridia.gatxan.in\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/iridia.gatxan.in\/#organization","name":"Ir\u00eddia","url":"https:\/\/iridia.gatxan.in\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/iridia.gatxan.in\/#\/schema\/logo\/image\/","url":null,"contentUrl":null,"width":null,"height":null,"caption":"Ir\u00eddia"},"image":{"@id":"https:\/\/iridia.gatxan.in\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/iridia.cat\/en\/wp-json\/wp\/v2\/pages\/9661","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iridia.cat\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/iridia.cat\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/iridia.cat\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/iridia.cat\/en\/wp-json\/wp\/v2\/comments?post=9661"}],"version-history":[{"count":10,"href":"https:\/\/iridia.cat\/en\/wp-json\/wp\/v2\/pages\/9661\/revisions"}],"predecessor-version":[{"id":15039,"href":"https:\/\/iridia.cat\/en\/wp-json\/wp\/v2\/pages\/9661\/revisions\/15039"}],"wp:attachment":[{"href":"https:\/\/iridia.cat\/en\/wp-json\/wp\/v2\/media?parent=9661"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iridia.cat\/en\/wp-json\/wp\/v2\/tags?post=9661"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}