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