Config.js
Summary
No overview generated for 'Config.js'
mapbuilder.loadScript(baseDir+"/model/ModelBase.js");
function Config(url) {
this.doc = Sarissa.getDomDocument();
this.doc.async = false;
this.doc.validateOnParse=false; //IE6 SP2 parsing bug
if(_SARISSA_IS_SAFARI)
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", url, false);
xmlhttp.send(null);
this.doc = xmlhttp.responseXML;
}else
{
this.doc.load(url);
}
if (Sarissa.getParseErrorText(this.doc) != Sarissa.PARSED_OK){
alert("error loading config document: " + url );//+ " - " + Sarissa.getParseErrorText(this.doc) );
}
this.url = url;
this.namespace = "xmlns:mb='"+mbNsUrl+"'";
if(! _SARISSA_IS_SAFARI ){
this.doc.setProperty("SelectionLanguage", "XPath");
Sarissa.setXpathNamespaces(this.doc, this.namespace);}
var configDoc = Sarissa.getDomDocument();
configDoc.async = false;
configDoc.validateOnParse=false; //IE6 SP2 parsing bug
if(_SARISSA_IS_SAFARI){
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", baseDir+"/"+mbServerConfig, false);
xmlhttp.send(null);
configDoc = xmlhttp.responseXML;
}else
{
configDoc.load(baseDir+"/"+mbServerConfig);
}
if (Sarissa.getParseErrorText(configDoc) != Sarissa.PARSED_OK) {
} else {
if(! _SARISSA_IS_SAFARI ){
configDoc.setProperty("SelectionLanguage", "XPath");
Sarissa.setXpathNamespaces(configDoc, this.namespace);
}
var node = configDoc.selectSingleNode("/mb:MapbuilderConfig/mb:proxyUrl");
if (node) this.proxyUrl = getNodeValue(node);
node = configDoc.selectSingleNode("/mb:MapbuilderConfig/mb:serializeUrl");
if (node) this.serializeUrl = getNodeValue(node);
}
configDoc = null;
this.loadConfigScripts=function(){
mapbuilder.loadScriptsFromXpath(this.doc.selectNodes("//mb:models/*"),"model/");
mapbuilder.loadScriptsFromXpath(this.doc.selectNodes("//mb:widgets/*"),"widget/");
mapbuilder.loadScriptsFromXpath(this.doc.selectNodes("//mb:tools/*"),"tool/");
var scriptFileNodes = this.doc.selectNodes("//mb:scriptFile");
for (var i=0; i<scriptFileNodes.length; i++ ) {
scriptFile = getNodeValue(scriptFileNodes[i]);
mapbuilder.loadScript(scriptFile);
}
}
this.defaultLang = "en";
this.lang = this.defaultLang;
if (window.cgiArgs["language"]) {
this.lang = window.cgiArgs["language"];
} else if (window.language) {
this.lang = window.language;
}
var modelNode = this.doc.documentElement;
this.skinDir = modelNode.selectSingleNode("mb:skinDir").firstChild.nodeValue;
var proxyUrl = modelNode.selectSingleNode("mb:proxyUrl");
if (proxyUrl) this.proxyUrl = getNodeValue(proxyUrl);
var serializeUrl = modelNode.selectSingleNode("mb:serializeUrl");
if (serializeUrl) this.serializeUrl = getNodeValue(serializeUrl);
function loadWidgetText(config, dir) {
var widgetFile = "/widgetText.xml";
var widgetText;
var widgetTextUrl = dir + "/" + config.lang + widgetFile;
widgetText = Sarissa.getDomDocument();
widgetText.async = false;
widgetText.validateOnParse=false; //IE6 SP2 parsing bug
if (typeof(inlineXSL)!="undefined") {
var xmlString = inlineXSL[widgetTextUrl];
xmlString = xmlString.replace(/DOUBLE_QUOTE/g,"\"");
widgetText = (new DOMParser()).parseFromString(xmlString, "text/xml");
}
else {
if (_SARISSA_IS_SAFARI) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", widgetTextUrl, false);
xmlhttp.send(null);
widgetText = xmlhttp.responseXML;
}
else {
widgetText.load(widgetTextUrl);
}
}
if (Sarissa.getParseErrorText(widgetText) != Sarissa.PARSED_OK) {
var errMsg = "Error loading widgetText document: " + widgetTextUrl;
if (config.lang == config.defaultLang) {
alert(errMsg);
}
else {
// Try to fall back on default language
alert(errMsg + "\nFalling back on default language=\"" + config.defaultLang + "\"");
config.lang = config.defaultLang;
widgetTextUrl = dir + "/" + config.lang + widgetFile;
if(_SARISSA_IS_SAFARI) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", widgetTextUrl, false);
xmlhttp.send(null);
widgetText = xmlhttp.responseXML;
}
else {
widgetText.load(widgetTextUrl);
}
if (Sarissa.getParseErrorText(widgetText) != Sarissa.PARSED_OK) {
alert("Falling back on default language failed!");
}
}
}
if(! _SARISSA_IS_SAFARI) {
widgetText.setProperty("SelectionLanguage", "XPath");
Sarissa.setXpathNamespaces(widgetText, config.namespace);
}
return widgetText;
}
// Load widgetText
this.widgetText = loadWidgetText(this, baseDir + "/text");
// Try to load userWidgetText
userWidgetTextDir = modelNode.selectSingleNode("mb:userWidgetTextDir");
if (userWidgetTextDir) {
var userWidgetText = loadWidgetText(this, getNodeValue(userWidgetTextDir));
if (userWidgetText) {
// User has specified userWidgetText, merge with widgetText
var userWidgets = userWidgetText.selectSingleNode("/mb:WidgetText/mb:widgets");
var configWidgets = this.widgetText.selectSingleNode("/mb:WidgetText/mb:widgets");
if (userWidgets && configWidgets) {
// Merge <widgets/> texts
Sarissa.copyChildNodes(userWidgets, configWidgets, true);
}
var userMessages = userWidgetText.selectSingleNode("/mb:WidgetText/mb:messages");
var configMessages = this.widgetText.selectSingleNode("/mb:WidgetText/mb:messages");
if (userMessages && configMessages) {
// Merge <messages/> texts
Sarissa.copyChildNodes(userMessages, configMessages, true);
}
}
}
/**
* the objects property holds a reference to every mapbuilder javascript object
* created. Each object is added as a property of config.objects using the
* value of the object id from the configuration file
*/
this.objects = new Object();
// Inherit the ModelBase functions and parameters
ModelBase.apply(this, new Array(modelNode));
/**
* Load a model and its child models, widgets and tools.
* This function can be called at any time to load a new model or replace an
* existing model object.
* @param modelId the id of the model in config XML to be updated
* @param modelUrl URL of the XML model document to be loaded
*/
this.loadModel = function( modelId, modelUrl ) {
var model = this.objects[modelId];
if (model && modelUrl) {
var httpPayload = new Object();
httpPayload.method = model.method;
httpPayload.url = modelUrl;
model.newRequest(model,httpPayload);
} else {
alert(mbGetMessage("errorLoadingModel", modelId, modelUrl));
}
}
/**
* Repaint the widget passed in.
* This function can be called at any time to paint the widget.
* @param widget a pointer to the widget object to be painted.
*/
this.paintWidget = function( widget ) {
if (widget) {
widget.paint(widget, widget.id);
} else {
alert(mbGetMessage("errorPaintingWidget"));
}
}
}
if (document.readyState==null){
mapbuilder.setLoadState(MB_LOAD_CONFIG);
config=new Config(mbConfigUrl);
config[config.id] = config;
config.loadConfigScripts();
}
Documentation generated by
JSDoc on Tue Aug 21 08:12:28 2007