Blame | Last modification | View Log | RSS feed
if(typeof window != 'undefined'){dojo.isBrowser = true;dojo._name = "browser";// attempt to figure out the path to dojo if it isn't set in the config(function(){var d = dojo;// this is a scope protection closure. We set browser versions and grab// the URL we were loaded from here.// grab the node we were loaded fromif(document && document.getElementsByTagName){var scripts = document.getElementsByTagName("script");var rePkg = /dojo(\.xd)?\.js([\?\.]|$)/i;for(var i = 0; i < scripts.length; i++){var src = scripts[i].getAttribute("src");if(!src){ continue; }var m = src.match(rePkg);if(m){// find out where we came fromif(!djConfig["baseUrl"]){djConfig["baseUrl"] = src.substring(0, m.index);}// and find out if we need to modify our behaviorvar cfg = scripts[i].getAttribute("djConfig");if(cfg){var cfgo = eval("({ "+cfg+" })");for(var x in cfgo){djConfig[x] = cfgo[x];}}break; // "first Dojo wins"}}}d.baseUrl = djConfig["baseUrl"];// fill in the rendering support information in dojo.render.*var n = navigator;var dua = n.userAgent;var dav = n.appVersion;var tv = parseFloat(dav);d.isOpera = (dua.indexOf("Opera") >= 0) ? tv : 0;d.isKhtml = (dav.indexOf("Konqueror") >= 0)||(dav.indexOf("Safari") >= 0) ? tv : 0;if(dav.indexOf("Safari") >= 0){d.isSafari = parseFloat(dav.split("Version/")[1]) || 2;}var geckoPos = dua.indexOf("Gecko");d.isMozilla = d.isMoz = ((geckoPos >= 0)&&(!d.isKhtml)) ? tv : 0;d.isFF = 0;d.isIE = 0;try{if(d.isMoz){d.isFF = parseFloat(dua.split("Firefox/")[1].split(" ")[0]);}if((document.all)&&(!d.isOpera)){d.isIE = parseFloat(dav.split("MSIE ")[1].split(";")[0]);}}catch(e){}//Workaround to get local file loads of dojo to work on IE 7//by forcing to not use native xhr.if(dojo.isIE && (window.location.protocol === "file:")){djConfig.ieForceActiveXXhr=true;}var cm = document["compatMode"];d.isQuirks = (cm == "BackCompat")||(cm == "QuirksMode")||(d.isIE < 6);// TODO: is the HTML LANG attribute relevant?d.locale = djConfig.locale || (d.isIE ? n.userLanguage : n.language).toLowerCase();d._println = console.debug;// These are in order of decreasing likelihood; this will change in time.d._XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];d._xhrObj= function(){// summary:// does the work of portably generating a new XMLHTTPRequest// object.var http = null;var last_e = null;if(!dojo.isIE || !djConfig.ieForceActiveXXhr){try{ http = new XMLHttpRequest(); }catch(e){}}if(!http){for(var i=0; i<3; ++i){var progid = dojo._XMLHTTP_PROGIDS[i];try{http = new ActiveXObject(progid);}catch(e){last_e = e;}if(http){dojo._XMLHTTP_PROGIDS = [progid]; // so faster next timebreak;}}}if(!http){throw new Error("XMLHTTP not available: "+last_e);}return http; // XMLHTTPRequest instance}d._isDocumentOk = function(http){var stat = http.status || 0;return ( (stat>=200)&&(stat<300))|| // Boolean(stat==304)|| // allow any 2XX response code(stat==1223)|| // get it out of the cache(!stat && (location.protocol=="file:" || location.protocol=="chrome:") ); // Internet Explorer mangled the status code}//See if base tag is in use.//This is to fix http://trac.dojotoolkit.org/ticket/3973,//but really, we need to find out how to get rid of the dojo._Url reference//below and still have DOH work with the dojo.i18n test following some other//test that uses the test frame to load a document (trac #2757).//Opera still has problems, but perhaps a larger issue of base tag support//with XHR requests (hasBase is true, but the request is still made to document//path, not base path).var owloc = window.location+"";var base = document.getElementsByTagName("base");var hasBase = (base && base.length > 0);d._getText = function(/*URI*/ uri, /*Boolean*/ fail_ok){// summary: Read the contents of the specified uri and return those contents.// uri:// A relative or absolute uri. If absolute, it still must be in// the same "domain" as we are.// fail_ok:// Default false. If fail_ok and loading fails, return null// instead of throwing.// returns: The response text. null is returned when there is a// failure and failure is okay (an exception otherwise)// alert("_getText: " + uri);// NOTE: must be declared before scope switches ie. this._xhrObj()var http = this._xhrObj();if(!hasBase && dojo._Url){uri = (new dojo._Url(owloc, uri)).toString();}/*console.debug("_getText:", uri);console.debug(window.location+"");alert(uri);*/http.open('GET', uri, false);try{http.send(null);// alert(http);if(!d._isDocumentOk(http)){var err = Error("Unable to load "+uri+" status:"+ http.status);err.status = http.status;err.responseText = http.responseText;throw err;}}catch(e){if(fail_ok){ return null; } // null// rethrow the exceptionthrow e;}return http.responseText; // String}})();dojo._initFired = false;// BEGIN DOMContentLoaded, from Dean Edwards (http://dean.edwards.name/weblog/2006/06/again/)dojo._loadInit = function(e){dojo._initFired = true;// allow multiple calls, only first one will take effect// A bug in khtml calls events callbacks for document for event which isnt supported// for example a created contextmenu event calls DOMContentLoaded, workaroundvar type = (e && e.type) ? e.type.toLowerCase() : "load";if(arguments.callee.initialized || (type!="domcontentloaded" && type!="load")){ return; }arguments.callee.initialized = true;if(typeof dojo["_khtmlTimer"] != 'undefined'){clearInterval(dojo._khtmlTimer);delete dojo._khtmlTimer;}if(dojo._inFlightCount == 0){dojo._modulesLoaded();}}// START DOMContentLoaded// Mozilla and Opera 9 expose the event we could useif(document.addEventListener){// NOTE:// due to a threading issue in Firefox 2.0, we can't enable// DOMContentLoaded on that platform. For more information, see:// http://trac.dojotoolkit.org/ticket/1704if(dojo.isOpera|| (dojo.isMoz && (djConfig["enableMozDomContentLoaded"] === true))){document.addEventListener("DOMContentLoaded", dojo._loadInit, null);}// mainly for Opera 8.5, won't be fired if DOMContentLoaded fired already.// also used for Mozilla because of trac #1640window.addEventListener("load", dojo._loadInit, null);}if(/(WebKit|khtml)/i.test(navigator.userAgent)){ // sniffdojo._khtmlTimer = setInterval(function(){if(/loaded|complete/.test(document.readyState)){dojo._loadInit(); // call the onload handler}}, 10);}// END DOMContentLoaded(function(){var _w = window;var _handleNodeEvent = function(/*String*/evtName, /*Function*/fp){// summary:// non-destructively adds the specified function to the node's// evtName handler.// evtName: should be in the form "onclick" for "onclick" handlers.// Make sure you pass in the "on" part.var oldHandler = _w[evtName] || function(){};_w[evtName] = function(){fp.apply(_w, arguments);oldHandler.apply(_w, arguments);}}if(dojo.isIE){// for Internet Explorer. readyState will not be achieved on init// call, but dojo doesn't need it however, we'll include it// because we don't know if there are other functions added that// might. Note that this has changed because the build process// strips all comments -- including conditional ones.document.write('<scr'+'ipt defer src="//:" '+ 'onreadystatechange="if(this.readyState==\'complete\'){dojo._loadInit();}">'+ '</scr'+'ipt>');// IE WebControl hosted in an application can fire "beforeunload" and "unload"// events when control visibility changes, causing Dojo to unload too soon. The// following code fixes the problem// Reference: http://support.microsoft.com/default.aspx?scid=kb;en-us;199155var _unloading = true;_handleNodeEvent("onbeforeunload", function(){_w.setTimeout(function(){ _unloading = false; }, 0);});_handleNodeEvent("onunload", function(){if(_unloading){ dojo.unloaded(); }});try{document.namespaces.add("v","urn:schemas-microsoft-com:vml");document.createStyleSheet().addRule("v\\:*", "behavior:url(#default#VML)");}catch(e){}}else{// FIXME: dojo.unloaded requires dojo scope, so using anon function wrapper._handleNodeEvent("onbeforeunload", function() { dojo.unloaded(); });}})();/*OpenAjax.subscribe("OpenAjax", "onload", function(){if(dojo._inFlightCount == 0){dojo._modulesLoaded();}});OpenAjax.subscribe("OpenAjax", "onunload", function(){dojo.unloaded();});*/} //if (typeof window != 'undefined')//Load debug code if necessary.// dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");//window.widget is for Dashboard detection//The full conditionals are spelled out to avoid issues during builds.//Builds may be looking for require/requireIf statements and processing them.// dojo.requireIf(djConfig["debugAtAllCosts"] && !window.widget && !djConfig["useXDomain"], "dojo.browser_debug");// dojo.requireIf(djConfig["debugAtAllCosts"] && !window.widget && djConfig["useXDomain"], "dojo.browser_debug_xd");if(djConfig.isDebug){dojo.require("dojo._firebug.firebug");}if(djConfig.debugAtAllCosts){djConfig.useXDomain = true;dojo.require("dojo._base._loader.loader_xd");dojo.require("dojo._base._loader.loader_debug");dojo.require("dojo.i18n");}