/* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved. Licensed under the Academic Free License version 2.1 or above OR the modified BSD license. For more information on Dojo licensing, see: http://dojotoolkit.org/community/licensing.shtml */ dojo.provide("dojo.a11y"); dojo.require("dojo.uri.*"); dojo.require("dojo.html.common"); dojo.a11y = { // imgPath: String path to the test image for determining if images are displayed or not // doAccessibleCheck: Boolean if true will perform check for need to create accessible widgets // accessible: Boolean uninitialized when null (accessible check has not been performed) // if true generate accessible widgets imgPath:dojo.uri.dojoUri("src/widget/templates/images"), doAccessibleCheck: true, accessible: null, checkAccessible: function(){ // summary: // perform check for accessibility if accessibility checking is turned // on and the accessibility test has not been performed yet if(this.accessible === null){ this.accessible = false; //default if(this.doAccessibleCheck == true){ this.accessible = this.testAccessible(); } } return this.accessible; /* Boolean */ }, testAccessible: function(){ // summary: // Always perform the accessibility check to determine if high // contrast mode is on or display of images are turned off. Currently only checks // in IE and Mozilla. this.accessible = false; //default if (dojo.render.html.ie || dojo.render.html.mozilla){ var div = document.createElement("div"); //div.style.color="rgb(153,204,204)"; div.style.backgroundImage = "url(\"" + this.imgPath + "/tab_close.gif\")"; // must add to hierarchy before can view currentStyle below dojo.body().appendChild(div); // in FF and IE the value for the current background style of the added div // will be "none" in high contrast mode // in FF the return value will be url(invalid-url:) when running over http var bkImg = null; if (window.getComputedStyle ) { var cStyle = getComputedStyle(div, ""); bkImg = cStyle.getPropertyValue("background-image"); }else{ bkImg = div.currentStyle.backgroundImage; } var bUseImgElem = false; if (bkImg != null && (bkImg == "none" || bkImg == "url(invalid-url:)" )) { this.accessible = true; } /* if(this.accessible == false && document.images){ // test if images are off in IE var testImg = new Image(); if(testImg.fileSize) { testImg.src = this.imgPath + "/tab_close.gif"; if(testImg.fileSize < 0){ this.accessible = true; } } }*/ dojo.body().removeChild(div); } return this.accessible; /* Boolean */ }, setCheckAccessible: function(/* Boolean */ bTest){ // summary: // Set whether or not to check for accessibility mode. Default value // of module is true - perform check for accessibility modes. // bTest: Boolean - true to check; false to turn off checking this.doAccessibleCheck = bTest; }, setAccessibleMode: function(){ // summary: // perform the accessibility check and sets the correct mode to load // a11y widgets. Only runs if test for accessiiblity has not been performed yet. // Call testAccessible() to force the test. if (this.accessible === null){ if (this.checkAccessible()){ dojo.render.html.prefixes.unshift("a11y"); } } return this.accessible; /* Boolean */ } }; //dojo.hostenv.modulesLoadedListeners.unshift(function() { dojo.a11y.setAccessibleMode(); }); //dojo.event.connect("before", dojo.hostenv, "makeWidgets", dojo.a11y, "setAccessibleMode");