Subversion Repositories Applications.papyrus

Rev

Rev 1372 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1372 Rev 1422
1
/*
1
/*
2
	Copyright (c) 2004-2006, The Dojo Foundation
2
	Copyright (c) 2004-2006, The Dojo Foundation
3
	All Rights Reserved.
3
	All Rights Reserved.
4
 
4
 
5
	Licensed under the Academic Free License version 2.1 or above OR the
5
	Licensed under the Academic Free License version 2.1 or above OR the
6
	modified BSD license. For more information on Dojo licensing, see:
6
	modified BSD license. For more information on Dojo licensing, see:
7
 
7
 
8
		http://dojotoolkit.org/community/licensing.shtml
8
		http://dojotoolkit.org/community/licensing.shtml
9
*/
9
*/
-
 
10
 
-
 
11
 
10
 
12
 
11
(function () {
13
(function () {
12
	var _addHostEnv = {pkgFileName:"__package__", loading_modules_:{}, loaded_modules_:{}, addedToLoadingCount:[], removedFromLoadingCount:[], inFlightCount:0, modulePrefixes_:{dojo:{name:"dojo", value:"src"}}, setModulePrefix:function (module, prefix) {
14
	var _addHostEnv = {pkgFileName:"__package__", loading_modules_:{}, loaded_modules_:{}, addedToLoadingCount:[], removedFromLoadingCount:[], inFlightCount:0, modulePrefixes_:{dojo:{name:"dojo", value:"src"}}, setModulePrefix:function (module, prefix) {
13
		this.modulePrefixes_[module] = {name:module, value:prefix};
15
		this.modulePrefixes_[module] = {name:module, value:prefix};
14
	}, moduleHasPrefix:function (module) {
16
	}, moduleHasPrefix:function (module) {
15
		var mp = this.modulePrefixes_;
17
		var mp = this.modulePrefixes_;
16
		return Boolean(mp[module] && mp[module].value);
18
		return Boolean(mp[module] && mp[module].value);
17
	}, getModulePrefix:function (module) {
19
	}, getModulePrefix:function (module) {
18
		if (this.moduleHasPrefix(module)) {
20
		if (this.moduleHasPrefix(module)) {
19
			return this.modulePrefixes_[module].value;
21
			return this.modulePrefixes_[module].value;
20
		}
22
		}
21
		return module;
23
		return module;
22
	}, getTextStack:[], loadUriStack:[], loadedUris:[], post_load_:false, modulesLoadedListeners:[], unloadListeners:[], loadNotifying:false};
24
	}, getTextStack:[], loadUriStack:[], loadedUris:[], post_load_:false, modulesLoadedListeners:[], unloadListeners:[], loadNotifying:false};
23
	for (var param in _addHostEnv) {
25
	for (var param in _addHostEnv) {
24
		dojo.hostenv[param] = _addHostEnv[param];
26
		dojo.hostenv[param] = _addHostEnv[param];
25
	}
27
	}
26
})();
28
})();
27
dojo.hostenv.loadPath = function (relpath, module, cb) {
29
dojo.hostenv.loadPath = function (relpath, module, cb) {
28
	var uri;
30
	var uri;
29
	if (relpath.charAt(0) == "/" || relpath.match(/^\w+:/)) {
31
	if (relpath.charAt(0) == "/" || relpath.match(/^\w+:/)) {
30
		uri = relpath;
32
		uri = relpath;
31
	} else {
33
	} else {
32
		uri = this.getBaseScriptUri() + relpath;
34
		uri = this.getBaseScriptUri() + relpath;
33
	}
35
	}
34
	if (djConfig.cacheBust && dojo.render.html.capable) {
36
	if (djConfig.cacheBust && dojo.render.html.capable) {
35
		uri += "?" + String(djConfig.cacheBust).replace(/\W+/g, "");
37
		uri += "?" + String(djConfig.cacheBust).replace(/\W+/g, "");
36
	}
38
	}
37
	try {
39
	try {
38
		return !module ? this.loadUri(uri, cb) : this.loadUriAndCheck(uri, module, cb);
40
		return !module ? this.loadUri(uri, cb) : this.loadUriAndCheck(uri, module, cb);
39
	}
41
	}
40
	catch (e) {
42
	catch (e) {
41
		dojo.debug(e);
43
		dojo.debug(e);
42
		return false;
44
		return false;
43
	}
45
	}
44
};
46
};
45
dojo.hostenv.loadUri = function (uri, cb) {
47
dojo.hostenv.loadUri = function (uri, cb) {
46
	if (this.loadedUris[uri]) {
48
	if (this.loadedUris[uri]) {
47
		return true;
49
		return true;
48
	}
50
	}
49
	var contents = this.getText(uri, null, true);
51
	var contents = this.getText(uri, null, true);
50
	if (!contents) {
52
	if (!contents) {
51
		return false;
53
		return false;
52
	}
54
	}
53
	this.loadedUris[uri] = true;
55
	this.loadedUris[uri] = true;
54
	if (cb) {
56
	if (cb) {
55
		contents = "(" + contents + ")";
57
		contents = "(" + contents + ")";
56
	}
58
	}
57
	var value = dj_eval(contents);
59
	var value = dj_eval(contents);
58
	if (cb) {
60
	if (cb) {
59
		cb(value);
61
		cb(value);
60
	}
62
	}
61
	return true;
63
	return true;
62
};
64
};
63
dojo.hostenv.loadUriAndCheck = function (uri, moduleName, cb) {
65
dojo.hostenv.loadUriAndCheck = function (uri, moduleName, cb) {
64
	var ok = true;
66
	var ok = true;
65
	try {
67
	try {
66
		ok = this.loadUri(uri, cb);
68
		ok = this.loadUri(uri, cb);
67
	}
69
	}
68
	catch (e) {
70
	catch (e) {
69
		dojo.debug("failed loading ", uri, " with error: ", e);
71
		dojo.debug("failed loading ", uri, " with error: ", e);
70
	}
72
	}
71
	return Boolean(ok && this.findModule(moduleName, false));
73
	return Boolean(ok && this.findModule(moduleName, false));
72
};
74
};
73
dojo.loaded = function () {
75
dojo.loaded = function () {
74
};
76
};
75
dojo.unloaded = function () {
77
dojo.unloaded = function () {
76
};
78
};
77
dojo.hostenv.loaded = function () {
79
dojo.hostenv.loaded = function () {
78
	this.loadNotifying = true;
80
	this.loadNotifying = true;
79
	this.post_load_ = true;
81
	this.post_load_ = true;
80
	var mll = this.modulesLoadedListeners;
82
	var mll = this.modulesLoadedListeners;
81
	for (var x = 0; x < mll.length; x++) {
83
	for (var x = 0; x < mll.length; x++) {
82
		mll[x]();
84
		mll[x]();
83
	}
85
	}
84
	this.modulesLoadedListeners = [];
86
	this.modulesLoadedListeners = [];
85
	this.loadNotifying = false;
87
	this.loadNotifying = false;
86
	dojo.loaded();
88
	dojo.loaded();
87
};
89
};
88
dojo.hostenv.unloaded = function () {
90
dojo.hostenv.unloaded = function () {
89
	var mll = this.unloadListeners;
91
	var mll = this.unloadListeners;
90
	while (mll.length) {
92
	while (mll.length) {
91
		(mll.pop())();
93
		(mll.pop())();
92
	}
94
	}
93
	dojo.unloaded();
95
	dojo.unloaded();
94
};
96
};
95
dojo.addOnLoad = function (obj, functionName) {
97
dojo.addOnLoad = function (obj, functionName) {
96
	var dh = dojo.hostenv;
98
	var dh = dojo.hostenv;
97
	if (arguments.length == 1) {
99
	if (arguments.length == 1) {
98
		dh.modulesLoadedListeners.push(obj);
100
		dh.modulesLoadedListeners.push(obj);
99
	} else {
101
	} else {
100
		if (arguments.length > 1) {
102
		if (arguments.length > 1) {
101
			dh.modulesLoadedListeners.push(function () {
103
			dh.modulesLoadedListeners.push(function () {
102
				obj[functionName]();
104
				obj[functionName]();
103
			});
105
			});
104
		}
106
		}
105
	}
107
	}
106
	if (dh.post_load_ && dh.inFlightCount == 0 && !dh.loadNotifying) {
108
	if (dh.post_load_ && dh.inFlightCount == 0 && !dh.loadNotifying) {
107
		dh.callLoaded();
109
		dh.callLoaded();
108
	}
110
	}
109
};
111
};
110
dojo.addOnUnload = function (obj, functionName) {
112
dojo.addOnUnload = function (obj, functionName) {
111
	var dh = dojo.hostenv;
113
	var dh = dojo.hostenv;
112
	if (arguments.length == 1) {
114
	if (arguments.length == 1) {
113
		dh.unloadListeners.push(obj);
115
		dh.unloadListeners.push(obj);
114
	} else {
116
	} else {
115
		if (arguments.length > 1) {
117
		if (arguments.length > 1) {
116
			dh.unloadListeners.push(function () {
118
			dh.unloadListeners.push(function () {
117
				obj[functionName]();
119
				obj[functionName]();
118
			});
120
			});
119
		}
121
		}
120
	}
122
	}
121
};
123
};
122
dojo.hostenv.modulesLoaded = function () {
124
dojo.hostenv.modulesLoaded = function () {
123
	if (this.post_load_) {
125
	if (this.post_load_) {
124
		return;
126
		return;
125
	}
127
	}
126
	if (this.loadUriStack.length == 0 && this.getTextStack.length == 0) {
128
	if (this.loadUriStack.length == 0 && this.getTextStack.length == 0) {
127
		if (this.inFlightCount > 0) {
129
		if (this.inFlightCount > 0) {
128
			dojo.debug("files still in flight!");
130
			dojo.debug("files still in flight!");
129
			return;
131
			return;
130
		}
132
		}
131
		dojo.hostenv.callLoaded();
133
		dojo.hostenv.callLoaded();
132
	}
134
	}
133
};
135
};
134
dojo.hostenv.callLoaded = function () {
136
dojo.hostenv.callLoaded = function () {
135
	if (typeof setTimeout == "object" || (djConfig["useXDomain"] && dojo.render.html.opera)) {
137
	if (typeof setTimeout == "object" || (djConfig["useXDomain"] && dojo.render.html.opera)) {
136
		setTimeout("dojo.hostenv.loaded();", 0);
138
		setTimeout("dojo.hostenv.loaded();", 0);
137
	} else {
139
	} else {
138
		dojo.hostenv.loaded();
140
		dojo.hostenv.loaded();
139
	}
141
	}
140
};
142
};
141
dojo.hostenv.getModuleSymbols = function (modulename) {
143
dojo.hostenv.getModuleSymbols = function (modulename) {
142
	var syms = modulename.split(".");
144
	var syms = modulename.split(".");
143
	for (var i = syms.length; i > 0; i--) {
145
	for (var i = syms.length; i > 0; i--) {
144
		var parentModule = syms.slice(0, i).join(".");
146
		var parentModule = syms.slice(0, i).join(".");
145
		if ((i == 1) && !this.moduleHasPrefix(parentModule)) {
147
		if ((i == 1) && !this.moduleHasPrefix(parentModule)) {
146
			syms[0] = "../" + syms[0];
148
			syms[0] = "../" + syms[0];
147
		} else {
149
		} else {
148
			var parentModulePath = this.getModulePrefix(parentModule);
150
			var parentModulePath = this.getModulePrefix(parentModule);
149
			if (parentModulePath != parentModule) {
151
			if (parentModulePath != parentModule) {
150
				syms.splice(0, i, parentModulePath);
152
				syms.splice(0, i, parentModulePath);
151
				break;
153
				break;
152
			}
154
			}
153
		}
155
		}
154
	}
156
	}
155
	return syms;
157
	return syms;
156
};
158
};
157
dojo.hostenv._global_omit_module_check = false;
159
dojo.hostenv._global_omit_module_check = false;
158
dojo.hostenv.loadModule = function (moduleName, exactOnly, omitModuleCheck) {
160
dojo.hostenv.loadModule = function (moduleName, exactOnly, omitModuleCheck) {
159
	if (!moduleName) {
161
	if (!moduleName) {
160
		return;
162
		return;
161
	}
163
	}
162
	omitModuleCheck = this._global_omit_module_check || omitModuleCheck;
164
	omitModuleCheck = this._global_omit_module_check || omitModuleCheck;
163
	var module = this.findModule(moduleName, false);
165
	var module = this.findModule(moduleName, false);
164
	if (module) {
166
	if (module) {
165
		return module;
167
		return module;
166
	}
168
	}
167
	if (dj_undef(moduleName, this.loading_modules_)) {
169
	if (dj_undef(moduleName, this.loading_modules_)) {
168
		this.addedToLoadingCount.push(moduleName);
170
		this.addedToLoadingCount.push(moduleName);
169
	}
171
	}
170
	this.loading_modules_[moduleName] = 1;
172
	this.loading_modules_[moduleName] = 1;
171
	var relpath = moduleName.replace(/\./g, "/") + ".js";
173
	var relpath = moduleName.replace(/\./g, "/") + ".js";
172
	var nsyms = moduleName.split(".");
174
	var nsyms = moduleName.split(".");
173
	var syms = this.getModuleSymbols(moduleName);
175
	var syms = this.getModuleSymbols(moduleName);
174
	var startedRelative = ((syms[0].charAt(0) != "/") && !syms[0].match(/^\w+:/));
176
	var startedRelative = ((syms[0].charAt(0) != "/") && !syms[0].match(/^\w+:/));
175
	var last = syms[syms.length - 1];
177
	var last = syms[syms.length - 1];
176
	var ok;
178
	var ok;
177
	if (last == "*") {
179
	if (last == "*") {
178
		moduleName = nsyms.slice(0, -1).join(".");
180
		moduleName = nsyms.slice(0, -1).join(".");
179
		while (syms.length) {
181
		while (syms.length) {
180
			syms.pop();
182
			syms.pop();
181
			syms.push(this.pkgFileName);
183
			syms.push(this.pkgFileName);
182
			relpath = syms.join("/") + ".js";
184
			relpath = syms.join("/") + ".js";
183
			if (startedRelative && relpath.charAt(0) == "/") {
185
			if (startedRelative && relpath.charAt(0) == "/") {
184
				relpath = relpath.slice(1);
186
				relpath = relpath.slice(1);
185
			}
187
			}
186
			ok = this.loadPath(relpath, !omitModuleCheck ? moduleName : null);
188
			ok = this.loadPath(relpath, !omitModuleCheck ? moduleName : null);
187
			if (ok) {
189
			if (ok) {
188
				break;
190
				break;
189
			}
191
			}
190
			syms.pop();
192
			syms.pop();
191
		}
193
		}
192
	} else {
194
	} else {
193
		relpath = syms.join("/") + ".js";
195
		relpath = syms.join("/") + ".js";
194
		moduleName = nsyms.join(".");
196
		moduleName = nsyms.join(".");
195
		var modArg = !omitModuleCheck ? moduleName : null;
197
		var modArg = !omitModuleCheck ? moduleName : null;
196
		ok = this.loadPath(relpath, modArg);
198
		ok = this.loadPath(relpath, modArg);
197
		if (!ok && !exactOnly) {
199
		if (!ok && !exactOnly) {
198
			syms.pop();
200
			syms.pop();
199
			while (syms.length) {
201
			while (syms.length) {
200
				relpath = syms.join("/") + ".js";
202
				relpath = syms.join("/") + ".js";
201
				ok = this.loadPath(relpath, modArg);
203
				ok = this.loadPath(relpath, modArg);
202
				if (ok) {
204
				if (ok) {
203
					break;
205
					break;
204
				}
206
				}
205
				syms.pop();
207
				syms.pop();
206
				relpath = syms.join("/") + "/" + this.pkgFileName + ".js";
208
				relpath = syms.join("/") + "/" + this.pkgFileName + ".js";
207
				if (startedRelative && relpath.charAt(0) == "/") {
209
				if (startedRelative && relpath.charAt(0) == "/") {
208
					relpath = relpath.slice(1);
210
					relpath = relpath.slice(1);
209
				}
211
				}
210
				ok = this.loadPath(relpath, modArg);
212
				ok = this.loadPath(relpath, modArg);
211
				if (ok) {
213
				if (ok) {
212
					break;
214
					break;
213
				}
215
				}
214
			}
216
			}
215
		}
217
		}
216
		if (!ok && !omitModuleCheck) {
218
		if (!ok && !omitModuleCheck) {
217
			dojo.raise("Could not load '" + moduleName + "'; last tried '" + relpath + "'");
219
			dojo.raise("Could not load '" + moduleName + "'; last tried '" + relpath + "'");
218
		}
220
		}
219
	}
221
	}
220
	if (!omitModuleCheck && !this["isXDomain"]) {
222
	if (!omitModuleCheck && !this["isXDomain"]) {
221
		module = this.findModule(moduleName, false);
223
		module = this.findModule(moduleName, false);
222
		if (!module) {
224
		if (!module) {
223
			dojo.raise("symbol '" + moduleName + "' is not defined after loading '" + relpath + "'");
225
			dojo.raise("symbol '" + moduleName + "' is not defined after loading '" + relpath + "'");
224
		}
226
		}
225
	}
227
	}
226
	return module;
228
	return module;
227
};
229
};
228
dojo.hostenv.startPackage = function (packageName) {
230
dojo.hostenv.startPackage = function (packageName) {
229
	var fullPkgName = String(packageName);
231
	var fullPkgName = String(packageName);
230
	var strippedPkgName = fullPkgName;
232
	var strippedPkgName = fullPkgName;
231
	var syms = packageName.split(/\./);
233
	var syms = packageName.split(/\./);
232
	if (syms[syms.length - 1] == "*") {
234
	if (syms[syms.length - 1] == "*") {
233
		syms.pop();
235
		syms.pop();
234
		strippedPkgName = syms.join(".");
236
		strippedPkgName = syms.join(".");
235
	}
237
	}
236
	var evaledPkg = dojo.evalObjPath(strippedPkgName, true);
238
	var evaledPkg = dojo.evalObjPath(strippedPkgName, true);
237
	this.loaded_modules_[fullPkgName] = evaledPkg;
239
	this.loaded_modules_[fullPkgName] = evaledPkg;
238
	this.loaded_modules_[strippedPkgName] = evaledPkg;
240
	this.loaded_modules_[strippedPkgName] = evaledPkg;
239
	return evaledPkg;
241
	return evaledPkg;
240
};
242
};
241
dojo.hostenv.findModule = function (moduleName, mustExist) {
243
dojo.hostenv.findModule = function (moduleName, mustExist) {
242
	var lmn = String(moduleName);
244
	var lmn = String(moduleName);
243
	if (this.loaded_modules_[lmn]) {
245
	if (this.loaded_modules_[lmn]) {
244
		return this.loaded_modules_[lmn];
246
		return this.loaded_modules_[lmn];
245
	}
247
	}
246
	if (mustExist) {
248
	if (mustExist) {
247
		dojo.raise("no loaded module named '" + moduleName + "'");
249
		dojo.raise("no loaded module named '" + moduleName + "'");
248
	}
250
	}
249
	return null;
251
	return null;
250
};
252
};
251
dojo.kwCompoundRequire = function (modMap) {
253
dojo.kwCompoundRequire = function (modMap) {
252
	var common = modMap["common"] || [];
254
	var common = modMap["common"] || [];
253
	var result = modMap[dojo.hostenv.name_] ? common.concat(modMap[dojo.hostenv.name_] || []) : common.concat(modMap["default"] || []);
255
	var result = modMap[dojo.hostenv.name_] ? common.concat(modMap[dojo.hostenv.name_] || []) : common.concat(modMap["default"] || []);
254
	for (var x = 0; x < result.length; x++) {
256
	for (var x = 0; x < result.length; x++) {
255
		var curr = result[x];
257
		var curr = result[x];
256
		if (curr.constructor == Array) {
258
		if (curr.constructor == Array) {
257
			dojo.hostenv.loadModule.apply(dojo.hostenv, curr);
259
			dojo.hostenv.loadModule.apply(dojo.hostenv, curr);
258
		} else {
260
		} else {
259
			dojo.hostenv.loadModule(curr);
261
			dojo.hostenv.loadModule(curr);
260
		}
262
		}
261
	}
263
	}
262
};
264
};
263
dojo.require = function (resourceName) {
265
dojo.require = function (resourceName) {
264
	dojo.hostenv.loadModule.apply(dojo.hostenv, arguments);
266
	dojo.hostenv.loadModule.apply(dojo.hostenv, arguments);
265
};
267
};
266
dojo.requireIf = function (condition, resourceName) {
268
dojo.requireIf = function (condition, resourceName) {
267
	var arg0 = arguments[0];
269
	var arg0 = arguments[0];
268
	if ((arg0 === true) || (arg0 == "common") || (arg0 && dojo.render[arg0].capable)) {
270
	if ((arg0 === true) || (arg0 == "common") || (arg0 && dojo.render[arg0].capable)) {
269
		var args = [];
271
		var args = [];
270
		for (var i = 1; i < arguments.length; i++) {
272
		for (var i = 1; i < arguments.length; i++) {
271
			args.push(arguments[i]);
273
			args.push(arguments[i]);
272
		}
274
		}
273
		dojo.require.apply(dojo, args);
275
		dojo.require.apply(dojo, args);
274
	}
276
	}
275
};
277
};
276
dojo.requireAfterIf = dojo.requireIf;
278
dojo.requireAfterIf = dojo.requireIf;
277
dojo.provide = function (resourceName) {
279
dojo.provide = function (resourceName) {
278
	return dojo.hostenv.startPackage.apply(dojo.hostenv, arguments);
280
	return dojo.hostenv.startPackage.apply(dojo.hostenv, arguments);
279
};
281
};
280
dojo.registerModulePath = function (module, prefix) {
282
dojo.registerModulePath = function (module, prefix) {
281
	return dojo.hostenv.setModulePrefix(module, prefix);
283
	return dojo.hostenv.setModulePrefix(module, prefix);
282
};
284
};
283
if (djConfig["modulePaths"]) {
285
if (djConfig["modulePaths"]) {
284
	for (var param in djConfig["modulePaths"]) {
286
	for (var param in djConfig["modulePaths"]) {
285
		dojo.registerModulePath(param, djConfig["modulePaths"][param]);
287
		dojo.registerModulePath(param, djConfig["modulePaths"][param]);
286
	}
288
	}
287
}
289
}
288
dojo.setModulePrefix = function (module, prefix) {
290
dojo.setModulePrefix = function (module, prefix) {
289
	dojo.deprecated("dojo.setModulePrefix(\"" + module + "\", \"" + prefix + "\")", "replaced by dojo.registerModulePath", "0.5");
291
	dojo.deprecated("dojo.setModulePrefix(\"" + module + "\", \"" + prefix + "\")", "replaced by dojo.registerModulePath", "0.5");
290
	return dojo.registerModulePath(module, prefix);
292
	return dojo.registerModulePath(module, prefix);
291
};
293
};
292
dojo.exists = function (obj, name) {
294
dojo.exists = function (obj, name) {
293
	var p = name.split(".");
295
	var p = name.split(".");
294
	for (var i = 0; i < p.length; i++) {
296
	for (var i = 0; i < p.length; i++) {
295
		if (!obj[p[i]]) {
297
		if (!obj[p[i]]) {
296
			return false;
298
			return false;
297
		}
299
		}
298
		obj = obj[p[i]];
300
		obj = obj[p[i]];
299
	}
301
	}
300
	return true;
302
	return true;
301
};
303
};
302
dojo.hostenv.normalizeLocale = function (locale) {
304
dojo.hostenv.normalizeLocale = function (locale) {
303
	var result = locale ? locale.toLowerCase() : dojo.locale;
305
	var result = locale ? locale.toLowerCase() : dojo.locale;
304
	if (result == "root") {
306
	if (result == "root") {
305
		result = "ROOT";
307
		result = "ROOT";
306
	}
308
	}
307
	return result;
309
	return result;
308
};
310
};
309
dojo.hostenv.searchLocalePath = function (locale, down, searchFunc) {
311
dojo.hostenv.searchLocalePath = function (locale, down, searchFunc) {
310
	locale = dojo.hostenv.normalizeLocale(locale);
312
	locale = dojo.hostenv.normalizeLocale(locale);
311
	var elements = locale.split("-");
313
	var elements = locale.split("-");
312
	var searchlist = [];
314
	var searchlist = [];
313
	for (var i = elements.length; i > 0; i--) {
315
	for (var i = elements.length; i > 0; i--) {
314
		searchlist.push(elements.slice(0, i).join("-"));
316
		searchlist.push(elements.slice(0, i).join("-"));
315
	}
317
	}
316
	searchlist.push(false);
318
	searchlist.push(false);
317
	if (down) {
319
	if (down) {
318
		searchlist.reverse();
320
		searchlist.reverse();
319
	}
321
	}
320
	for (var j = searchlist.length - 1; j >= 0; j--) {
322
	for (var j = searchlist.length - 1; j >= 0; j--) {
321
		var loc = searchlist[j] || "ROOT";
323
		var loc = searchlist[j] || "ROOT";
322
		var stop = searchFunc(loc);
324
		var stop = searchFunc(loc);
323
		if (stop) {
325
		if (stop) {
324
			break;
326
			break;
325
		}
327
		}
326
	}
328
	}
327
};
329
};
328
dojo.hostenv.localesGenerated;
330
dojo.hostenv.localesGenerated;
329
dojo.hostenv.registerNlsPrefix = function () {
331
dojo.hostenv.registerNlsPrefix = function () {
330
	dojo.registerModulePath("nls", "nls");
332
	dojo.registerModulePath("nls", "nls");
331
};
333
};
332
dojo.hostenv.preloadLocalizations = function () {
334
dojo.hostenv.preloadLocalizations = function () {
333
	if (dojo.hostenv.localesGenerated) {
335
	if (dojo.hostenv.localesGenerated) {
334
		dojo.hostenv.registerNlsPrefix();
336
		dojo.hostenv.registerNlsPrefix();
335
		function preload(locale) {
337
		function preload(locale) {
336
			locale = dojo.hostenv.normalizeLocale(locale);
338
			locale = dojo.hostenv.normalizeLocale(locale);
337
			dojo.hostenv.searchLocalePath(locale, true, function (loc) {
339
			dojo.hostenv.searchLocalePath(locale, true, function (loc) {
338
				for (var i = 0; i < dojo.hostenv.localesGenerated.length; i++) {
340
				for (var i = 0; i < dojo.hostenv.localesGenerated.length; i++) {
339
					if (dojo.hostenv.localesGenerated[i] == loc) {
341
					if (dojo.hostenv.localesGenerated[i] == loc) {
340
						dojo["require"]("nls.dojo_" + loc);
342
						dojo["require"]("nls.dojo_" + loc);
341
						return true;
343
						return true;
342
					}
344
					}
343
				}
345
				}
344
				return false;
346
				return false;
345
			});
347
			});
346
		}
348
		}
347
		preload();
349
		preload();
348
		var extra = djConfig.extraLocale || [];
350
		var extra = djConfig.extraLocale || [];
349
		for (var i = 0; i < extra.length; i++) {
351
		for (var i = 0; i < extra.length; i++) {
350
			preload(extra[i]);
352
			preload(extra[i]);
351
		}
353
		}
352
	}
354
	}
353
	dojo.hostenv.preloadLocalizations = function () {
355
	dojo.hostenv.preloadLocalizations = function () {
354
	};
356
	};
355
};
357
};
356
dojo.requireLocalization = function (moduleName, bundleName, locale, availableFlatLocales) {
358
dojo.requireLocalization = function (moduleName, bundleName, locale, availableFlatLocales) {
357
	dojo.hostenv.preloadLocalizations();
359
	dojo.hostenv.preloadLocalizations();
358
	var targetLocale = dojo.hostenv.normalizeLocale(locale);
360
	var targetLocale = dojo.hostenv.normalizeLocale(locale);
359
	var bundlePackage = [moduleName, "nls", bundleName].join(".");
361
	var bundlePackage = [moduleName, "nls", bundleName].join(".");
360
	var bestLocale = "";
362
	var bestLocale = "";
361
	if (availableFlatLocales) {
363
	if (availableFlatLocales) {
362
		var flatLocales = availableFlatLocales.split(",");
364
		var flatLocales = availableFlatLocales.split(",");
363
		for (var i = 0; i < flatLocales.length; i++) {
365
		for (var i = 0; i < flatLocales.length; i++) {
364
			if (targetLocale.indexOf(flatLocales[i]) == 0) {
366
			if (targetLocale.indexOf(flatLocales[i]) == 0) {
365
				if (flatLocales[i].length > bestLocale.length) {
367
				if (flatLocales[i].length > bestLocale.length) {
366
					bestLocale = flatLocales[i];
368
					bestLocale = flatLocales[i];
367
				}
369
				}
368
			}
370
			}
369
		}
371
		}
370
		if (!bestLocale) {
372
		if (!bestLocale) {
371
			bestLocale = "ROOT";
373
			bestLocale = "ROOT";
372
		}
374
		}
373
	}
375
	}
374
	var tempLocale = availableFlatLocales ? bestLocale : targetLocale;
376
	var tempLocale = availableFlatLocales ? bestLocale : targetLocale;
375
	var bundle = dojo.hostenv.findModule(bundlePackage);
377
	var bundle = dojo.hostenv.findModule(bundlePackage);
376
	var localizedBundle = null;
378
	var localizedBundle = null;
377
	if (bundle) {
379
	if (bundle) {
378
		if (djConfig.localizationComplete && bundle._built) {
380
		if (djConfig.localizationComplete && bundle._built) {
379
			return;
381
			return;
380
		}
382
		}
381
		var jsLoc = tempLocale.replace("-", "_");
383
		var jsLoc = tempLocale.replace("-", "_");
382
		var translationPackage = bundlePackage + "." + jsLoc;
384
		var translationPackage = bundlePackage + "." + jsLoc;
383
		localizedBundle = dojo.hostenv.findModule(translationPackage);
385
		localizedBundle = dojo.hostenv.findModule(translationPackage);
384
	}
386
	}
385
	if (!localizedBundle) {
387
	if (!localizedBundle) {
386
		bundle = dojo.hostenv.startPackage(bundlePackage);
388
		bundle = dojo.hostenv.startPackage(bundlePackage);
387
		var syms = dojo.hostenv.getModuleSymbols(moduleName);
389
		var syms = dojo.hostenv.getModuleSymbols(moduleName);
388
		var modpath = syms.concat("nls").join("/");
390
		var modpath = syms.concat("nls").join("/");
389
		var parent;
391
		var parent;
390
		dojo.hostenv.searchLocalePath(tempLocale, availableFlatLocales, function (loc) {
392
		dojo.hostenv.searchLocalePath(tempLocale, availableFlatLocales, function (loc) {
391
			var jsLoc = loc.replace("-", "_");
393
			var jsLoc = loc.replace("-", "_");
392
			var translationPackage = bundlePackage + "." + jsLoc;
394
			var translationPackage = bundlePackage + "." + jsLoc;
393
			var loaded = false;
395
			var loaded = false;
394
			if (!dojo.hostenv.findModule(translationPackage)) {
396
			if (!dojo.hostenv.findModule(translationPackage)) {
395
				dojo.hostenv.startPackage(translationPackage);
397
				dojo.hostenv.startPackage(translationPackage);
396
				var module = [modpath];
398
				var module = [modpath];
397
				if (loc != "ROOT") {
399
				if (loc != "ROOT") {
398
					module.push(loc);
400
					module.push(loc);
399
				}
401
				}
400
				module.push(bundleName);
402
				module.push(bundleName);
401
				var filespec = module.join("/") + ".js";
403
				var filespec = module.join("/") + ".js";
402
				loaded = dojo.hostenv.loadPath(filespec, null, function (hash) {
404
				loaded = dojo.hostenv.loadPath(filespec, null, function (hash) {
403
					var clazz = function () {
405
					var clazz = function () {
404
					};
406
					};
405
					clazz.prototype = parent;
407
					clazz.prototype = parent;
406
					bundle[jsLoc] = new clazz();
408
					bundle[jsLoc] = new clazz();
407
					for (var j in hash) {
409
					for (var j in hash) {
408
						bundle[jsLoc][j] = hash[j];
410
						bundle[jsLoc][j] = hash[j];
409
					}
411
					}
410
				});
412
				});
411
			} else {
413
			} else {
412
				loaded = true;
414
				loaded = true;
413
			}
415
			}
414
			if (loaded && bundle[jsLoc]) {
416
			if (loaded && bundle[jsLoc]) {
415
				parent = bundle[jsLoc];
417
				parent = bundle[jsLoc];
416
			} else {
418
			} else {
417
				bundle[jsLoc] = parent;
419
				bundle[jsLoc] = parent;
418
			}
420
			}
419
			if (availableFlatLocales) {
421
			if (availableFlatLocales) {
420
				return true;
422
				return true;
421
			}
423
			}
422
		});
424
		});
423
	}
425
	}
424
	if (availableFlatLocales && targetLocale != bestLocale) {
426
	if (availableFlatLocales && targetLocale != bestLocale) {
425
		bundle[targetLocale.replace("-", "_")] = bundle[bestLocale.replace("-", "_")];
427
		bundle[targetLocale.replace("-", "_")] = bundle[bestLocale.replace("-", "_")];
426
	}
428
	}
427
};
429
};
428
(function () {
430
(function () {
429
	var extra = djConfig.extraLocale;
431
	var extra = djConfig.extraLocale;
430
	if (extra) {
432
	if (extra) {
431
		if (!extra instanceof Array) {
433
		if (!extra instanceof Array) {
432
			extra = [extra];
434
			extra = [extra];
433
		}
435
		}
434
		var req = dojo.requireLocalization;
436
		var req = dojo.requireLocalization;
435
		dojo.requireLocalization = function (m, b, locale, availableFlatLocales) {
437
		dojo.requireLocalization = function (m, b, locale, availableFlatLocales) {
436
			req(m, b, locale, availableFlatLocales);
438
			req(m, b, locale, availableFlatLocales);
437
			if (locale) {
439
			if (locale) {
438
				return;
440
				return;
439
			}
441
			}
440
			for (var i = 0; i < extra.length; i++) {
442
			for (var i = 0; i < extra.length; i++) {
441
				req(m, b, extra[i], availableFlatLocales);
443
				req(m, b, extra[i], availableFlatLocales);
442
			}
444
			}
443
		};
445
		};
444
	}
446
	}
445
})();
447
})();
446
 
448