// summary: // Applies pre-set CSS classes to the top-level HTML node, based on: // - browser (ex: dj_ie) // - browser version (ex: dj_ie6) // - box model (ex: dj_contentBox) // - text direction (ex: dijitRtl) // // In addition, browser, browser version, and box model are // combined with an RTL flag when browser text is RTL. ex: dj_ie-rtl. // // Simply doing a require on this module will // establish this CSS. Modified version of Morris' CSS hack. dojo.provide("dijit._base.sniff"); (function(){ var d = dojo, html = d.doc.documentElement, ie = d.isIE, opera = d.isOpera, maj = Math.floor, ff = d.isFF, boxModel = d.boxModel.replace(/-/,''), classes = { dj_ie: ie, // dj_ie55: ie == 5.5, dj_ie6: maj(ie) == 6, dj_ie7: maj(ie) == 7, dj_iequirks: ie && d.isQuirks, // NOTE: Opera not supported by dijit dj_opera: opera, dj_opera8: maj(opera) == 8, dj_opera9: maj(opera) == 9, dj_khtml: d.isKhtml, dj_webkit: d.isWebKit, dj_safari: d.isSafari, dj_gecko: d.isMozilla, dj_ff2: maj(ff) == 2, dj_ff3: maj(ff) == 3 }; // no dojo unsupported browsers classes["dj_" + boxModel] = true; // apply browser, browser version, and box model class names for(var p in classes){ if(classes[p]){ if(html.className){ html.className += " " + p; }else{ html.className = p; } } } // If RTL mode then add dijitRtl flag plus repeat existing classes // with -rtl extension // (unshift is to make this code run after node is loaded but before parser runs) dojo._loaders.unshift(function(){ if(!dojo._isBodyLtr()){ html.className += " dijitRtl"; for(var p in classes){ if(classes[p]){ html.className += " " + p + "-rtl"; } } } }); })();