Blame | Last modification | View Log | RSS feed
if(!dojo._hasResource["dijit._base.wai"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dijit._base.wai"] = true;dojo.provide("dijit._base.wai");dijit.wai = {onload: function(){// summary:// Function that detects if we are in high-contrast mode or not,// and sets up a timer to periodically confirm the value.// figure out the background-image style property// and apply that to the image.src property.// description:// This must be a named function and not an anonymous// function, so that the widget parsing code can make sure it// registers its onload function after this function.// DO NOT USE "this" within this function.// create div for testing if high contrast mode is on or images are turned offvar div = document.createElement("div");div.id = "a11yTestNode";div.style.cssText = 'border: 1px solid;'+ 'border-color:red green;'+ 'position: absolute;'+ 'height: 5px;'+ 'top: -999px;'+ 'background-image: url("' + dojo.moduleUrl("dijit", "form/templates/blank.gif") + '");';dojo.body().appendChild(div);// test itfunction check(){var cs = dojo.getComputedStyle(div);if(cs){var bkImg = cs.backgroundImage;var needsA11y = (cs.borderTopColor==cs.borderRightColor) || (bkImg != null && (bkImg == "none" || bkImg == "url(invalid-url:)" ));dojo[needsA11y ? "addClass" : "removeClass"](dojo.body(), "dijit_a11y");}}check();if(dojo.isIE){setInterval(check, 4000);}}};// Test if computer is in high contrast mode.// Make sure the a11y test runs first, before widgets are instantiated.if(dojo.isIE || dojo.isMoz){ // NOTE: checking in Safari messes things updojo._loaders.unshift(dijit.wai.onload);}dojo.mixin(dijit,{hasWaiRole: function(/*Element*/ elem){// Summary: Return true if elem has a role attribute and false if not.if(elem.hasAttribute){return elem.hasAttribute("role");}else{return elem.getAttribute("role") ? true : false;}},getWaiRole: function(/*Element*/ elem){// Summary: Return the role of elem or an empty string if// elem does not have a role.var value = elem.getAttribute("role");if(value){var prefixEnd = value.indexOf(":");return prefixEnd == -1 ? value : value.substring(prefixEnd+1);}else{return "";}},setWaiRole: function(/*Element*/ elem, /*String*/ role){// Summary: Set the role on elem. On Firefox 2 and below, "wairole:" is// prepended to the provided role value.if(dojo.isFF && dojo.isFF < 3){elem.setAttribute("role", "wairole:"+role);}else{elem.setAttribute("role", role);}},removeWaiRole: function(/*Element*/ elem){// Summary: Removes the role attribute from elem.elem.removeAttribute("role");},hasWaiState: function(/*Element*/ elem, /*String*/ state){// Summary: Return true if elem has a value for the given state and// false if it does not.// On Firefox 2 and below, we check for an attribute in namespace// "http://www.w3.org/2005/07/aaa" with a name of the given state.// On all other browsers, we check for an attribute called// "aria-"+state.if(dojo.isFF && dojo.isFF < 3){return elem.hasAttributeNS("http://www.w3.org/2005/07/aaa", state);}else{if(elem.hasAttribute){return elem.hasAttribute("aria-"+state);}else{return elem.getAttribute("aria-"+state) ? true : false;}}},getWaiState: function(/*Element*/ elem, /*String*/ state){// Summary: Return the value of the requested state on elem// or an empty string if elem has no value for state.// On Firefox 2 and below, we check for an attribute in namespace// "http://www.w3.org/2005/07/aaa" with a name of the given state.// On all other browsers, we check for an attribute called// "aria-"+state.if(dojo.isFF && dojo.isFF < 3){return elem.getAttributeNS("http://www.w3.org/2005/07/aaa", state);}else{var value = elem.getAttribute("aria-"+state);return value ? value : "";}},setWaiState: function(/*Element*/ elem, /*String*/ state, /*String*/ value){// Summary: Set state on elem to value.// On Firefox 2 and below, we set an attribute in namespace// "http://www.w3.org/2005/07/aaa" with a name of the given state.// On all other browsers, we set an attribute called// "aria-"+state.if(dojo.isFF && dojo.isFF < 3){elem.setAttributeNS("http://www.w3.org/2005/07/aaa","aaa:"+state, value);}else{elem.setAttribute("aria-"+state, value);}},removeWaiState: function(/*Element*/ elem, /*String*/ state){// Summary: Removes the given state from elem.// On Firefox 2 and below, we remove the attribute in namespace// "http://www.w3.org/2005/07/aaa" with a name of the given state.// On all other browsers, we remove the attribute called// "aria-"+state.if(dojo.isFF && dojo.isFF < 3){elem.removeAttributeNS("http://www.w3.org/2005/07/aaa", state);}else{elem.removeAttribute("aria-"+state);}}});}