Model findings and path analysisFrom Figure 7.2 the study’s findings provide compelling insights into the relationships between various factors influencing the adoption of behaviour aimed at abandoning FGM/C. The model successfully accounts for a substantial portion of the variance in this behaviour, indicating its effectiveness in predicting outcomes related to FGM/C abandonment. The study’s results uncover several important relationships among the variables within the model. First, the findings suggest that effective awareness programmes significantly impact subjective norms, thereby fostering intentions to abandon FGM/C. This underscores the vital role that successful educational initiatives play in transforming societal beliefs about the practice.~Figure 7.2. Structural Equation Model. Source: The author. <object keeplocal=”true” keeplocal=”true” src=”C:\Users\DUNSFO~2\AppData\Local\Temp\Librios0\Import\OEBPS\image/Fig._7.11.png” alt=”window.setInterval(function() { keepAlive(); }, 300000);function keepAlive() {document.getElementById(“ioskeepalive”).src = “/?keepAlive=true&u=” + (new Date()).getTime();} Boydell & Brewer | /* Anything that canʼt be hidden with a beta feature check of its own should be targeted here */.feature--beta { display: none!important;}var LibriosHelpers = (function() { ʼuse strictʼ; var ComponentCssClasses = { TABLE: ʼlib-data-tableʼ, CARD: ʼlib-cardʼ }; /** * @function * @name addTableClassesById * @desc Adds the table component classes to the element that has the passed in ID. * * @param {string} domElId - ID that identifies DOM element to add table class to. */ function addTableClassesById(domElId) { var targetElement = document.getElementById(domElId); if (targetElement.length) { targetElement.classList.add(ComponentCssClasses.TABLE); } } /** * @function * @name addTableClassesByClass * @desc Adds the table component classes to the elements that have the passed in html class. * * @param {string} domElClass - Class that identifies DOM elements to add table class to. */ function addTableClassesByClass(domElClass) { var targetElements = document.getElementsByClassName(domElClass); if (targetElements.length) { for (var i = 0; i < targetElements.length; i++) { targetElements[i].classList.add(ComponentCssClasses.TABLE); } } } /** * @function * @name setFieldAutocomplete * @desc Any styles that have a keyword group set on them will have some data attributes * set on the textarea. This function takes in the selector string of the style to autocomplete * on, and the node ID being used to get the autocomplete results. * TODO: this could be improved if we took in an array of selectors. Then we would only have to make * a single call to this function for fields that share the same autocomplete Node ID. * * @param {string} autocompleteFieldSelector - the Librios style html class used in form view. * @param {string} autocompleteNodeID - node ID to get autocomplete results from. */ function setFieldAutocomplete(fieldSelector, nodeID) { var $field; var fieldSeparator; $field = $(fieldSelector + ʼ inputʼ); if (!$field.length) { $field = $(ʼinputʼ + fieldSelector); } fieldSeparator = $(fieldSelector + “ textarea[data-keyword=ʼtrueʼ]”).data(“keywordseparator”); if ( typeof fieldSeparator === “undefined” ) { fieldSeparator = $field.data(ʼkeywordseparatorʼ); } $field.autocomplete({ source : “/?id=” + nodeID + “&contentonly=true&addroot=false”, minLength : 2, delimiter : fieldSeparator, delay : 500, select : function(event, ui) { return true; } }); } return { addTableClassesById: addTableClassesById, addTableClassesByClass: addTableClassesByClass, setFieldAutocomplete }; })();var iosBasketItem = { basketName: ʼʼ, contentID: ʼʼ, userID: ʼʼ, anchorID: ʼʼ, selStart: ʼʼ, selEnd: ʼʼ, selType: ʼʼ, comment: ʼʼ, create: function(values) { var instance = Object.create(this); Object.keys(values).forEach(function(key) { instance[key] = values[key]; }); return instance; }, addToBasket: function() { }, removeFromBasket: function() { console.log(ʼremoving item from basket…ʼ); }, logDetails: function() { console.log(ʼiosBasketItem.logDetails()ʼ); console.log(this); } }; // Provides a way to do method overloading in JS. function addMethod(object, name, fn){ var old = object[ name ]; object[ name ] = function(){ if ( fn.length == arguments.length ) return fn.apply( this, arguments ); else if ( typeof old == ʼfunctionʼ ) return old.apply( this, arguments ); }; } // list of files already dynamically added var libriosFilesLoaded = “”; /* Where separate components depend on the same external JS, we can dynamically load these files (if required) into the head, or not load them, if they are already loaded by another component. */ function LibriosLoadScript(filename) { if ( libriosFilesLoaded.indexOf(“[”+filename+”]” ) == -1 ) { var scriptfile = document.createElement(“script”); scriptfile.type = “text/javascript”; scriptfile.src = filename; scriptfile.async = true; if (scriptfile.readyState) { //IE scriptfile.onreadystatechange = function() { if (scriptfile.readyState == “loaded” || scriptfile.readyState == “complete”) { scriptfile.onreadystatechange = null; $(document).trigger(“LibriosEvent:FileLoaded-” + filename, []); } }; } else { //Others scriptfile.onload = function(){ $(document).trigger(“LibriosEvent:FileLoaded-” + filename, []); }; } document.getElementsByTagName(“head”)[0].appendChild(scriptfile); // Add to List of files added in the form “[filename1],[filename2],etc” libriosFilesLoaded += “[”+filename+”]”; } }; function LibriosLoadCss(filename) { if ( libriosFilesLoaded.indexOf(“[”+filename+”]” ) == -1 ) { var cssfile = document.createElement(“link”); cssfile.setAttribute(“rel”, “stylesheet”); cssfile.setAttribute(“type”, “text/css”); cssfile.setAttribute(“href”, filename); if (typeof cssfile != “undefined”) { document.getElementsByTagName(“head”)[0].appendChild(cssfile); } // Add to List of files added in the form “[filename1],[filename2],etc” libriosFilesLoaded += “[”+filename+”]”; } else { } } /** * @function * @name LibriosAddScript * @desc Loads the passed in javascript (as a string) into the DOM. * @param scriptCode - string of javascript code to add to DOM. */ function LibriosAddScript(scriptCode) { var scriptElement = document.createElement(ʼscriptʼ); scriptElement.type = ʼtext/javascriptʼ; try { scriptElement.appendChild(document.createTextNode(scriptCode)); document.body.appendChild(scriptElement); } catch(e) { scriptElement.text = scriptCode; document.body.appendChild(scriptElement); } } /* TODO: All this to be replaced with LibriosHelper module functions. These might be taking in different params but essentially they all do the same action of posting to a url. So they donʼt need to be different. */ // Here you can use an instance of LibriosBasket to call the AddItem method (that has numerous overloads) // i.e. var myBasket = new LibriosBasket(); // myBasket.AddItem(yourContentID, yourBasketName); function LibriosBasket() { /* Add item to basket by just passing in the url to post to */ addMethod(this, “AddItem”, function(url) { var postUrl = url; $.post( postUrl, function() { console.log(postUrl); }) .done(function() { }) .fail(function(jqXHR, textStatus, errorThrown) { console.log( “AddToBasket: errorText - “ + textStatus); console.log( “AddToBasket: errorThrown - “ + errorThrown); }) .always(function() { }); }); /* Add item to basket by passing in the contentID and the basketname */ addMethod(this, “AddItem”, function(contentID, basketName) { var postUrl = “/?id=” + contentID + “&basketname=” + basketName + “&addtobasket=” + contentID + “&simpleresponse=true”; $.post( postUrl, function() { console.log(postUrl); }) .done(function() { }) .fail(function(jqXHR, textStatus, errorThrown) { //console.log( “AddToBasket: errorText - “ + textStatus); //console.log( “AddToBasket: errorThrown - “ + errorThrown); //console.log( “AddToBasket: contentID - “ + contentID); //console.log( “AddToBasket: basketName - “ + basketName); }) .always(function() { }); }); /* Add item to basket by passing in the contentID, basketname, userID and methods to call if the post succeeds or fails */ addMethod(this, “AddItem”, function(contentID, basketName, userID, callbackSuccess, callbackFail) { var postUrl = “/?id=” + contentID + “&basketname=” + basketName + “&addtobasket=” + contentID + “&userid=” + userID + “&simpleresponse=true”; $.post( postUrl, function() { console.log(postUrl); }) .done(function() { callbackSuccess(); }) .fail(function(jqXHR, textStatus, errorThrown) { callbackFail(); //console.log( “AddToBasket: errorText - “ + textStatus); //console.log( “AddToBasket: errorThrown - “ + errorThrown); //console.log( “AddToBasket: contentID - “ + contentID); //console.log( “AddToBasket: basketName - “ + basketName); }) .always(function() { }); }); /* Remove item from basket by passing in the contentID and the basketname */ addMethod(this, “RemoveItem”, function(contentID, basketName) { var postUrl = “/?id=” + contentID + “&basketname=” + basketName + “&removefrombasket=” + contentID + “&simpleresponse=true”; $.post( postUrl, function() { //console.log(postUrl); }) .done(function() { }) .fail(function(jqXHR, textStatus, errorThrown) { //console.log( “RemoveFromBasket: errorText - “ + textStatus); //console.log( “RemoveFromBasket: errorThrown - “ + errorThrown); //console.log( “RemoveFromBasket: contentID - “ + contentID); //console.log( “RemoveFromBasket: basketName - “ + basketName); }) .always(function() { }); }); } /* TODO: remove this and use methods above */ function AddToBasket(contentID, basketName) { var postUrl = “/?id=” + contentID + “&basketname=” + basketName + “&addtobasket=” + contentID + “&simpleresponse=true”; $.post( postUrl, function() { console.log(postUrl); }) .done(function() { }) .fail(function(jqXHR, textStatus, errorThrown) { //console.log( “AddToBasket: errorText - “ + textStatus); //console.log( “AddToBasket: errorThrown - “ + errorThrown); //console.log( “AddToBasket: contentID - “ + contentID); //console.log( “AddToBasket: basketName - “ + basketName); }) .always(function() { }); } /* TODO: remove this and use methods above */ function RemoveFromBasket(contentID, basketName) { var postUrl = “/?id=” + contentID + “&basketname=” + basketName + “&removefrombasket=” + contentID + “&simpleresponse=true”; $.post( postUrl, function() { //console.log(postUrl); }) .done(function() { }) .fail(function(jqXHR, textStatus, errorThrown) { //console.log( “RemoveFromBasket: errorText - “ + textStatus); //console.log( “RemoveFromBasket: errorThrown - “ + errorThrown); //console.log( “RemoveFromBasket: contentID - “ + contentID); //console.log( “RemoveFromBasket: basketName - “ + basketName); }) .always(function() { }); } /* Reusable Debounce method to use on any process heavy functionality, to stop your function doing the work getting called lots of times (usually functions hooked into mouse / scroll events) Takes two parameters: the detection period (“threshold”) and a Boolean indicating whether the signal should happen at the beginning of the detection period (true) or the end (“execAsap”). */ var debounce = function (func, threshold, execAsap) { var timeout; return function debounced () { var obj = this, args = arguments; function delayed () { if (!execAsap) func.apply(obj, args); timeout = null; }; if (timeout) clearTimeout(timeout); else if (execAsap) func.apply(obj, args); timeout = setTimeout(delayed, threshold || 100); }; }/** debouncedresize: special jQuery event that happens once after a window resize** latest version and complete README available on Github:* https://github.com/louisremi/jquery-smartresize/blob/master/jquery.debouncedresize.js** Copyright 2011 @louis_remi* Licensed under the MIT license.*/var $event = $.event, $special, resizeTimeout;$special = $event.special.debouncedresize = { setup: function() { $(this).on(“resize”, $special.handler); }, teardown: function() { $(this).off(“resize”, $special.handler); }, handler: function(event, execAsap) { // Save the context var context = this, args = arguments, dispatch = function() { // set correct event type event.type = “debouncedresize”; $event.dispatch.apply(context, args); }; if (resizeTimeout) { clearTimeout(resizeTimeout); } execAsap ? dispatch() : (resizeTimeout = setTimeout(dispatch, $special.threshold)); }, threshold: 250}; /** * @function * @name libriosSetCookie * @desc Stores the passed in name and value to either: a cookie if localStorage is not supported * by the client browser, or is stored in localStorage when supported. * * @param {string} cname - name of variable to be stored * @param {string} cvalue - value of variable to be stored * @param {string} exdays - cookie expires in this amount of days (if cookies are used) */ function libriosSetCookie(cname, cvalue, exdays) { if (typeof(Storage) !== “undefined”) { localStorage.setItem(cname, cvalue); } else { // web storage not support, so use cookies. var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = “expires=”+d.toUTCString(); var path = “/”; document.cookie = cname + “=” + cvalue + “; “ + expires + “; path=” + path; } } /** * @function * @name libriosGetCookie * @desc Gets the value of the variable passed in, either from: a cookie if localStorage is not supported * by the client browser, or from whatʼs stored in localStorage when supported. * * @param {string} cname - name of variable to get value from. */ function libriosGetCookie(cname) { if (typeof(Storage) !== “undefined”) { return localStorage.getItem(cname); } else { // web storage not supported, so use cookies. var name = cname + “=”; var ca = document.cookie.split(ʼ;ʼ); for(var i=0; i 12 ) { document.documentElement.style.fontSize = parseFloat($(“html”).css(“font-size”)) - 1 + “px”; $(“.body-font-size”).css({ ʼfont-sizeʼ: document.documentElement.style.fontSize }); libriosSetCookie(“libriosCookieFontSize”, document.documentElement.style.fontSize, 365); baseFontUpdated(document.documentElement.style.fontSize); } }); $(“.font-increase-trigger”).click(function() { if ( parseFloat($(“html”).css(“font-size”)) < 20 ) { document.documentElement.style.fontSize = parseFloat($(“html”).css(“font-size”)) + 1 + “px”; $(“.body-font-size”).css({ ʼfont-sizeʼ: document.documentElement.style.fontSize }); libriosSetCookie(“libriosCookieFontSize”, document.documentElement.style.fontSize, 365); baseFontUpdated(document.documentElement.style.fontSize); } }); }); Skip to main content Skip to top navigation ;(function ( window, document, undefined ) { var bodyEl = document.body; bodyEl.classList.add(ʼnavigation--verticalʼ);})( window, document );div.design_abstract_social_metadata { display: none;}/* #Grid containing element============================= */.lib-wrap { max-width: 100%; margin: 0 auto; padding-right: 8px; padding-left: 8px;}.full-width-section { padding-top: 4rem; padding-bottom: 4rem;}#headerSearchResults .full-width-section { padding: 1rem 0;}/* #Custom backgrounds============================= */body,div.design_bodyarea,main.design_bodyarea,.design_header_fullwidth div.component_tabbar li.tabbar_tab a,.design_header_fullwidth div.component_tabbar li.tabbar_activetab a, .design_header_fullwidth div.component_tabbar li.tabbar_tab a:hover,.design_template_container .section_social_footer,.design_template_container { background-color: transparent;}.simple-view .design_abstract_cs .cs_abstract_image,.simple-view .design_abstract_cs .design_abstract_container:hover { background: #FFFFFF; /* fallback for old browsers */ background: -webkit-linear-gradient(to bottom, #0e426a, #107895); background: linear-gradient(to bottom, #0e426a, #107895);}.section-header { position: relative; overflow: hidden;}.design_header > div.header-features > div, .design_header > div.header-features > button, .lib-drawer--navmenu :not(select), .lib-drawer--usermenu :not(select),.side-nav-toggle span { color: #FFFFFF;}/* #Carousels================================================== */.carousel-container .flickity-prev-next-button .arrow { fill: #646464;}/* #Drawer menu================================================== */.lib-drawer, aside[class*=”lib-drawer--”] { padding: 0;}.lib-drawer--usermenu { padding-top: 0;}.welcome .lib-3\/4\@l { margin-bottom: 0;}.lib-drawer--navmenu, .lib-drawer--usermenu { background: #0e426a; /* fallback for old browsers */ background: -webkit-linear-gradient(to bottom, #0e426a, #107895); background: linear-gradient(to bottom, #0e426a, #107895);}.design_header_fullwidth { background: #0e426a; /* fallback for old browsers */ background: -webkit-linear-gradient(to right, #0e426a, #107895); background: linear-gradient(to right, #0e426a, #107895);}.lib-drawer--navmenu .drawermenu-contents *:not(select),.lib-drawer--usermenu .drawermenu-contents *:not(select) { color: #FFFFFF;}.lib-drawer--navmenu .drawermenu__header,.lib-drawer--usermenu .drawermenu__header { width: 100%; padding: 16px;}.lib-drawer h2 { font-size: 16px; font-weight: 700; text-transform: uppercase; text-align: left; padding: 0 16px;}.lib-drawer nav li.iosnavchild:hover, .lib-drawer nav li a:focus, .lib-drawer .nav-item:hover, .lib-drawer #context-menu-nav li.iosnavchild:hover, .lib-drawer li.iostocitem a:hover,.lib-drawer nav li.iosnavactive, .lib-drawer nav span.iosnavactive, .lib-drawer .nav-item.active, .lib-drawer #context-menu-nav li.iosnavchild .active, .lib-drawer #context-menu-nav .iosnavactive, .lib-drawer li.iostocitem.active a { background-color: #258ecd;}.lib-drawer nav li.iosnavactive:hover, .lib-drawer .nav-item.active:hover, .lib-drawer #context-menu-nav li.iosnavchild .active:hover, .lib-drawer li.iostocitem.active a:hover,.lib-drawer nav li.iosnavchild a:hover, .lib-drawer nav li.iosnavchild a:focus, .lib-drawer .nav li li a:hover { background: none;}.lib-drawer--usermenu .welcome { background-color: transparent;}.lib-drawer nav li, .lib-drawer .nav-item, .lib-drawer #context-menu-nav li.iosnavchild, .lib-drawer #context-menu-nav li.iosnavroot, .lib-drawer li.iostocitem, .lib-drawer li.iostocitem a { background-color: transparent; border-bottom: none;}.lib-drawer .nav li .more { border-left: none; margin: 0;}.lib-drawer nav li.iosnavchild a, .lib-drawer .nav li li a { background: none; border-top: none; border-bottom: none;}.overlay-nav-wrapper .design_thumbnail_publ { background-color: transparent; padding: 0;}.overlay-nav-wrapper .design_thumbnail_publ .design_thumbnail_container { box-shadow: none;}.overlay-nav-wrapper .design_thumbnail_publ .design_thumbnail_image_container { margin: 16px auto; display: block;}/* #Links================================================== */a.cref { color: #0e5ea1;}.login-menutoggle a,.template_singlepage .design_template_container [class*=”bg-primary--grad”] a { color: #FFFFFF;}.login-menutoggle a:hover,.login-menutoggle a:focus,.template_singlepage .design_template_container [class*=”bg-primary--grad”] a:hover,.template_singlepage .design_template_container [class*=”bg-primary--grad”] a:focus { color: #FFFFFF;}/* #Buttons================================================== */.tabbar_nodetab:hover, .tabbar_nodetab:focus, .tabbar_nodetab a:hover, .tabbar_nodetab a:focus { background-color: #107895; color: #FFFFFF;}/* #Typography============================= */.design_template_container .linkbutton.body-meta,.design_template_container .body-meta a[class*=”link-button-large”],.lib-form .formelement input[type=”submit”] { letter-spacing: 0.05rem; font-size: 0.9rem; font-weight: 600;}div.component_tabbar a.tabbar_tab, div.component_tabbar a.tabbar_activetab { font-weight: 600; font-family: ʼPT Sansʼ,sans-serif,Tahoma,Arial;}.component_footer_quicklink a { font-weight: 600;}/* #Headings================================================== */.template_singlepage .design_template_container div[class*=ʼtitle1ʼ],.template_singlepage .design_template_container div[class*=ʼtitle2ʼ] { text-align: center;}.design_template_container .lib-1\/2 div.title2,.design_template_container .lib-1\/2\@m div.title2,.design_template_container .lib-1\/2\@l div.title2 { text-align: left;}.design_template_container div[class*=ʼtitle1ʼ] { font-size: 3rem; line-height: 1.2em; letter-spacing: 0; font-weight: 700;}.design_template_container div[class*=ʼtitle2ʼ] { font-size: 2.675rem; line-height: 1.2em; letter-spacing: 0; font-weight: 700;}/* #Section type spacing================================================== */.design_template_container section div[class*=”title1”], .design_template_container section h1[class*=”title1”].design_template_container section .body-meta,.design_template_container section .body-large { margin-bottom: 3rem;}/* #Images============================= */.lib-1\/2 .img-100 img,.lib-1\/2\@m .img-100 img,.lib-1\/2\@l .img-100 img { max-height: 450px;}/* #Publications================================================== */div.publ_abstract_stableurl { display: none!important;}/* #Colors================================================== */.context-header__content,#headerSearchResults h2 { color: #FFFFFF;}span.ioshighlight { background-color: #afddf5;}.template_singlepage .design_template_container [class*=”bg-primary--grad”] [class*=ʼtitleʼ],.template_singlepage .design_template_container [class*=”bg-primary--grad”] [class*=ʼbody-ʼ],.template_singlepage .design_template_container .iosrichediteditor div[class*=ʼbg-primary--gradʼ] p[class*=title],.template_singlepage .design_template_container .iosrichediteditor div[class*=ʼbg-primary--gradʼ] p[class*=body-] { color: #FFFFFF;}/* #Media Queries================================================== *//* small screens and up */@media (min-width: 25em) { .lib-wrap { padding-left: 16px; padding-right: 16px; }}/* medium screens and up */@media (min-width: 37.5em) { .lib-1\/2 .list-container-unordered, .lib-1\/2\@m .list-container-unordered { margin-top: 0; } .design_template_container div[class*=ʼtitle1ʼ] { font-size: 3.25rem; } .design_template_container .body-meta { font-size: 1.25rem; }}/* large screens and up */@media (min-width: 56.25em) { .design_header_fullwidth { box-shadow: none; } div:not(.template_appbrowse) .lib-drawer:not(.drawer-fullwidth), div:not(.template_appbrowse) aside[class*=”lib-drawer--”]:not(.drawer-fullwidth), .overlay-sidebar { width: 300px; }}/* extra-large screens and up */@media (min-width: 63em) { .lib-wrap { max-width: 100%; /* Change this to control how wide your content is displayed (was 1240px) */ }}/* extra-extra-large screens and up */@media (min-width: 80em) {}/* This has been added to the scripts needing to load first to prevent the menus from appearing on page load before they actually get hidden. The separate citations menu / component is also using this menu markup so needs this script. If other components are to use this menu script, we need to remove references to specific elements such as ʼ.stalker-menuʼ.*/ function hideAnchorMenus(menuElement) { if (menuElement != undefined) { menuElement.addClass(“not-visible”); menuElement.find(“.iosanchorcontrols-subviewopen”).removeClass(“iosanchorcontrols-subviewopen”); menuElement.removeClass(“iosanchorcontrols-subview”); menuElement.find(“.iosanchorcontrols-subview”).removeClass(“iosanchorcontrols-subview”); menuElement.find(“.childviewopen”).removeClass(“childviewopen”); $(“.stalker-menu”).offset( { left: -300 } ); } else { $(“.iosanchorcontrols-menu”).addClass(“not-visible”); $(“.iosanchorcontrols-subviewopen”).removeClass(“iosanchorcontrols-subviewopen”); $(“.iosanchorcontrols-subview”).removeClass(“iosanchorcontrols-subview”); $(“.childviewopen”).removeClass(“childviewopen”); $(“.stalker-menu”).offset( { left: -300 } ); } } $(document).ready(function() { // Handle when to close the anchor menu $(document).on(ʼclickʼ, function(event) { if ( $(event.target).is(“.trigger-close-iosanchorcontrols-menu”) ) { // Hide the menus and remove any temporary pins. hideAnchorMenus( $(event.target).parent(“.iosanchorcontrols-menu”) ); } }); // Handle opening a sub-menu of the anchor menu $(“.has-menu”).click(function(e) { e.preventDefault(); $(this).parents(“.iosanchorcontrols-menuitem.iosanchorcontrols-subviewopen”).removeClass(“iosanchorcontrols-subviewopen”); $(this).parents(“.iosanchorcontrols-menuitem.childviewopen”).removeClass(“childviewopen”); $(this).parent().addClass(“iosanchorcontrols-subviewopen”); $(this).parents(“.iosanchorcontrols-menuitem”).addClass(“childviewopen”); $(this).parents(“.iosanchorcontrols-menu”).addClass(“iosanchorcontrols-subview”); }); // Handle coming back out of a sub-menu of the anchor menu $(“.iosanchorcontrols-back .iosanchorcontrols-link”).click(function(e) { e.preventDefault(); $openView = $(this).closest(“.iosanchorcontrols-menuitem”); $openView.removeClass(“iosanchorcontrols-subviewopen”).removeClass(“childviewopen”); $newOpenView = $openView.closest(“.childviewopen”); if ( $newOpenView.length > 0 ) { $newOpenView.addClass(“iosanchorcontrols-subviewopen”); } else { $(“.iosanchorcontrols-menu”).removeClass(“iosanchorcontrols-subview”); } }); $(“.action-group”).click(function() { $(this).find(“.iosanchorcontrols-menu”).removeClass(“not-visible”); }); $(“.contains-anchorcontrols-menu”).click(function() { $(this).find(“.iosanchorcontrols-menu”).removeClass(“not-visible”); }); // close document.ready });.stalker-menu { display: block; position: absolute; min-width: 225px;/* uncomment for animated stalker menu -webkit-transition: all 0.5s ease 0s; transition: all 0.5s ease 0s;*/}.not-visible { opacity: 0; left: -2000px!important;/* uncomment for animated stalker menu -webkit-transition: all 0.5s ease 0s; transition: all 0.5s ease 0s;*/}.action-group .iosanchorcontrols-menu { position: absolute; left: -200px; top: 60px; text-align: left;}@media only screen and (max-width: 479px) { .stalker-menu, .action-group .iosanchorcontrols-menu { position: fixed; /* instead of this override - just turn off repositioning Menu in mobile */ top: auto!important; left: 0!important; } .stalker-menu.not-visible, .iosanchorcontrols-menu.not-visible { left: -500px!important; }}$(document).ready(function() {;(function ( window, document, undefined ) { var $OffcanvasContainers = $(“.overlay, .offcanvas”); $OffcanvasContainers.attr(“tabindex”, “-1”); $OffcanvasContainers.attr(“aria-hidden”, “true”); })( window, document );});div.ui-datepicker { z-index: 9999!important;}ul.ui-autocomplete { background-color: white; width: 200px; list-style-type: none; padding: 0px; margin: 0px; cursor: pointer; border-color: black; border-style: solid; border-width: 1px; font-family: arial; font-size: 11px; list-style-type:none; overflow: hidden; z-index: 999 !important;}ul.ui-autocomplete li { padding: 4px; z-index: 999;}ul.ui-autocomplete li a { text-decoration: none; color: black;}ul.ui-autocomplete li a:hover { text-decoration: underline; color: black;}.ui-helper-hidden-accessible { display: none;}body { padding-top: 0;} Login to Boydell & Brewer User name: Password: $(document).ready(function() {$(“input.ioslogin”).keydown(function(event) {if (event.keyCode == 13) {document.getElementById(ʼlibriosloginbuttonʼ).click();return false;}});}); Forgot password $(document).ready(function() { // hide any validation messages when clicking back in the form $(“.login-form”).click(function() { $(“.info”).hide(); }); $(“#libriosusername”).attr(“placeholder”, “Enter your username”); $(“#libriospassword”).attr(“placeholder”, “Enter your password”); }); .overlay-login { z-index: 9999; } .overlay-login span.iosusername, .overlay-login span.iospassword { font-size: 30px; /* constant */ line-height: 20px; /* constant */ margin: 0 -100px; padding: 0 0 0 100px; background-color: #FFFFFF; position: relative; } .overlay-login span.iosusername label, .overlay-login span.iospassword label { display: none; } .overlay-login span.iosusername:before, .overlay-login span.iospassword:before { position: absolute; top: 20px; left: 100px; color: #444444; } .overlay-login span.iosusername input, .overlay-login span.iospassword input { width: 110%; width: calc(100% + 100px); font-size: 1.5rem; border: none; border-top: 1px dashed #E3E3E3; color: #666666; padding: 20px 100px 20px 140px; margin-left: -100px; -webkit-transition: background-color 0.5s ease 0s; transition: background-color 0.5s ease 0s; } .overlay-login span.iosusername input:focus, .overlay-login span.iospassword input:focus { background-color: #E0F0FF; } span.iosloginbutton, div.ioslogintext { max-width: 250px; width: 250px; } div.ioslogintext { display: inline-block; } input.iosloginbutton, a.iosloginbutton { width: 100%; margin: 1rem 0 0; } .overlay-login .info { margin: 70px 0 0; font-size: 1.3em; }/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */@media only screen and (max-width: 767px) { .overlay-login span.iosusername, .overlay-login span.iospassword, .overlay-login span.iosloginbutton, .ioslogintext, .overlay-login .info { font-size: 20px; } .overlay-login span.iosusername, .overlay-login span.iospassword { margin: 0; padding: 0; } .overlay-login span.iosusername:before, .overlay-login span.iospassword:before { top: 20px; left: 10px; } .overlay-login span.iosusername input, .overlay-login span.iospassword input { padding: 15px 10px 15px 40px; margin-left: 0; width: 100%; } span.iosloginbutton, div.ioslogintext { max-width: 100%; width: 100%; } input.iosloginbutton { margin: 5px 0; } .login-form { margin: 0; } .overlay-login .info margin: 70px 0 0; }}/* AP: if browser requires polyfill/fallback - add it here */if (!Date.now) { Date.now = function now() { return new Date().getTime(); };}// polyfill for .includes()if (!String.prototype.includes) { String.prototype.includes = function(search, start) { ʼuse strictʼ; if (typeof start !== ʼnumberʼ) { start = 0; } if (start + search.length > this.length) { return false; } else { return this.indexOf(search, start) !== -1; } };}// polyfill for .startsWith()if (!String.prototype.startsWith) { String.prototype.startsWith = function(searchString, position) { position = position || 0; return this.indexOf(searchString, position) === position; };}// polyfill for .splice()if (!String.prototype.splice) { /** * The splice() method changes the content of a string by removing a range of * characters and/or adding new characters. * * @this {String} * @param {number} start - Index at which to start changing the string. * @param {number} delCount - An integer indicating the number of old chars to remove. * @param {string} newSubStr - The String that is spliced in. * @return {string} A new string with the spliced substring. */ String.prototype.splice = function(start, delCount, newSubStr) { return this.slice(0, start) + newSubStr + this.slice(start + Math.abs(delCount)); };}$(document).ready(function(){// for browsers that dont support placeholder textif(!Modernizr.input.placeholder) { $(ʼ[placeholder]ʼ).focus(function() { var input = $(this); if (input.val() == input.attr(ʼplaceholderʼ)) { input.val(ʼʼ); input.removeClass(ʼplaceholderʼ); } }).blur(function() { var input = $(this); if (input.val() == ʼʼ || input.val() == input.attr(ʼplaceholderʼ)) { input.addClass(ʼplaceholderʼ);input.val(input.attr(ʼplaceholderʼ)); } }).blur(); $(ʼ[placeholder]ʼ).parents(ʼformʼ).submit(function() { $(this).find(ʼ[placeholder]ʼ).each(function() {var input = $(this);if (input.val() == input.attr(ʼplaceholderʼ)) { input.val(ʼʼ);} }) });}// for browsers that dont support the date input typeif (!Modernizr.inputtypes[ʼdateʼ]) { $(ʼinput[type=date]ʼ).datepicker({dateFormat:ʼyy-mm-ddʼ});} /*$(“.hasDatepicker”).each(function() { var $dateElementParent = $(this).parent(); if ( $dateElementParent.length > 0 ) { $dateElementParent.addClass(“date-picker”); }});*/});;(function ( window, document, undefined ) { if ( $(“.search-results”).length > 0 ) { var classList = document.getElementsByClassName(ʼsearch-resultsʼ)[0].className.split(/\s+/); for (var i = 0; i 0 ) { var classList2 = document.getElementsByClassName(ʼview-content--search-resultsʼ)[0].className.split(/\s+/); for (var i = 0; i < classList2.length; i++) { if ( classList2[i].includes(“lib-layout”) ) { $(“.iossearchresultbody”).addClass(classList2[i]); $(“.view-content--search-results”).removeClass(classList2[i]); } } }})( window, document );/*if (ʼserviceWorkerʼ in navigator) { window.addEventListener(ʼloadʼ, function() { navigator.serviceWorker.register(ʼ/service-worker.jsʼ).then(function(registration) { // Registration was successful }, function(err) { // registration failed :( }); });}*/$( window ).on(“load”, function() {var itemsProcessed = 0;[].forEach.call(document.querySelectorAll(ʼimg[data-src]ʼ), function(img, index, array) { img.setAttribute(ʼsrcʼ, img.getAttribute(ʼdata-srcʼ)); img.onload = function() { img.removeAttribute(ʼdata-srcʼ); }; itemsProcessed++; if(itemsProcessed === array.length) { $(document).trigger(“LibriosEvent:DocumentImagesProcessed”); }});});(function(){function x(b,a,c){if(b){if(a.element_.classList.contains(a.CssClasses_.LIB_JS_RIPPLE_EFFECT)){var d=document.createElement(“span”);d.classList.add(a.CssClasses_.LIB_RIPPLE_CONTAINER);d.classList.add(a.CssClasses_.LIB_JS_RIPPLE_EFFECT);var l=document.createElement(“span”);l.classList.add(a.CssClasses_.LIB_RIPPLE);d.appendChild(l);b.appendChild(d)}b.setAttribute(“href”,”#LibPanel_”+a.instanceRef_+”_”+c.toString());0==c&&b.classList.add(a.CssClasses_.ACTIVE_CLASS);b.addEventListener(“click”,function(d){”#”===b.getAttribute(“href”).charAt(0)&&(d.preventDefault(),d=b.href.split(“#”)[1],d=a.element_.querySelector(“#”+d),a.resetTabState_(),a.resetPanelState_(),b.classList.add(a.CssClasses_.ACTIVE_CLASS),d.classList.add(a.CssClasses_.ACTIVE_CLASS))})}}var e={upgradeDom:function(b,a){},upgradeElement:function(b,a){},upgradeElements:function(b){},upgradeAllRegistered:function(){},registerUpgradedCallback:function(b,a){},register:function(b){},downgradeElements:function(b){}},e=function(){function b(b,a){for(var d=0;d<k.length;d++)if(k[d].className===b)return”undefined”!==typeof a&&(k[d]=a),k[d];return!1}function a(b){b=b.getAttribute(“data-upgraded”);return null===b?[””]:b.split(“,”)}funct”/> Note: The development of the model was achieved through the implementation of Analysis of Moment Structures version 24 with Full Information Maximum Likelihood. The numbers within the arrows of the model represent the strength of the influence each factor has on the others, indicating how strongly one factor affects another.Moreover, the analysis supports the idea that facilitating conditions of eradication programmes can indirectly enhance the perceived usefulness of abandoning FGM/C by influencing subjective norms. However, the direct effects of these programmes on perceived usefulness were found to be stronger, emphasising the need for programmes to address both direct and indirect pathways in promoting behaviour change.The influence of supportive conditions on perceived ease of adopting FGM/C abandonment was also examined. The study found that changing social norms significantly enhances perceptions of ease, suggesting that addressing societal beliefs is crucial in facilitating the adoption of new behaviours. The strong impact of subjective norms on behavioural intentions further emphasises how cultural pressures and expectations shape individual choices. The strong influence of subjective norms on individuals’ intentions to abandon FGM/C aligns with the data in UNICEF’s 2024 FGM/C update report. This underscores the critical role that societal and communal expectations play in shaping behaviour. Specifically, the support and pressure from peers and authority figures emerged as significant motivators, highlighting the importance of social dynamics in driving change.The perceived usefulness of abandoning FGM/C also proved to be a strong predictor of individuals’ intentions. This suggests that when people recognise the benefits of refraining from FGM/C, they are more likely to commit to this new behaviour. Conversely, the study found that the facilitating conditions provided by eradication programmes had an insignificant effect on individuals’ perceptions of ease regarding FGM/C abandonment. This indicates that other factors may be more influential in determining how easy individuals feel it is to adopt this behaviour.