More trip planner testing with colors
[busui.git] / labs / openlayers / lib / OpenLayers / Format / CSWGetDomain / v2_0_2.js
blob:a/labs/openlayers/lib/OpenLayers/Format/CSWGetDomain/v2_0_2.js -> blob:b/labs/openlayers/lib/OpenLayers/Format/CSWGetDomain/v2_0_2.js
  /* Copyright (c) 2006-2010 by OpenLayers Contributors (see authors.txt for
  * full list of contributors). Published under the Clear BSD license.
  * See http://svn.openlayers.org/trunk/openlayers/license.txt for the
  * full text of the license. */
   
  /**
  * @requires OpenLayers/Format/XML.js
  * @requires OpenLayers/Format/CSWGetDomain.js
  */
   
  /**
  * Class: OpenLayers.Format.CSWGetDomain.v2_0_2
  * A format for creating CSWGetDomain v2.0.2 transactions.
  * Create a new instance with the
  * <OpenLayers.Format.CSWGetDomain.v2_0_2> constructor.
  *
  * Inherits from:
  * - <OpenLayers.Format.XML>
  */
  OpenLayers.Format.CSWGetDomain.v2_0_2 = OpenLayers.Class(OpenLayers.Format.XML, {
   
  /**
  * Property: namespaces
  * {Object} Mapping of namespace aliases to namespace URIs.
  */
  namespaces: {
  xlink: "http://www.w3.org/1999/xlink",
  xsi: "http://www.w3.org/2001/XMLSchema-instance",
  csw: "http://www.opengis.net/cat/csw/2.0.2"
  },
   
  /**
  * Property: defaultPrefix
  * {String} The default prefix (used by Format.XML).
  */
  defaultPrefix: "csw",
   
  /**
  * Property: version
  * {String} CSW version number.
  */
  version: "2.0.2",
   
  /**
  * Property: schemaLocation
  * {String} http://www.opengis.net/cat/csw/2.0.2
  * http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd
  */
  schemaLocation: "http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",
   
  /**
  * APIProperty: PropertyName
  * {String} Value of the csw:PropertyName element, used when
  * writing a GetDomain document.
  */
  PropertyName: null,
   
  /**
  * APIProperty: ParameterName
  * {String} Value of the csw:ParameterName element, used when
  * writing a GetDomain document.
  */
  ParameterName: null,
   
  /**
  * Constructor: OpenLayers.Format.CSWGetDomain.v2_0_2
  * A class for parsing and generating CSWGetDomain v2.0.2 transactions.
  *
  * Parameters:
  * options - {Object} Optional object whose properties will be set on the
  * instance.
  *
  * Valid options properties:
  * - PropertyName
  * - ParameterName
  */
  initialize: function(options) {
  OpenLayers.Format.XML.prototype.initialize.apply(this, [options]);
  },
   
  /**
  * APIMethod: read
  * Parse the response from a GetDomain request.
  */
  read: function(data) {
  if(typeof data == "string") {
  data = OpenLayers.Format.XML.prototype.read.apply(this, [data]);
  }
  if(data && data.nodeType == 9) {
  data = data.documentElement;
  }
  var obj = {};
  this.readNode(data, obj);
  return obj;
  },
   
  /**
  * Property: readers
  * Contains public functions, grouped by namespace prefix, that will
  * be applied when a namespaced node is found matching the function
  * name. The function will be applied in the scope of this parser
  * with two arguments: the node being read and a context object passed
  * from the parent.
  */
  readers: {
  "csw": {
  "GetDomainResponse": function(node, obj) {
  this.readChildNodes(node, obj);
  },
  "DomainValues": function(node, obj) {
  if (!(obj.DomainValues instanceof Array)) {
  obj.DomainValues = [];
  }
  var attrs = node.attributes;
  var domainValue = {};
  for(var i=0, len=attrs.length; i<len; ++i) {
  domainValue[attrs[i].name] = attrs[i].nodeValue;
  }
  this.readChildNodes(node, domainValue);
  obj.DomainValues.push(domainValue);
  },
  "PropertyName": function(node, obj) {
  obj.PropertyName = this.getChildValue(node);
  },
  "ParameterName": function(node, obj) {
  obj.ParameterName = this.getChildValue(node);
  },
  "ListOfValues": function(node, obj) {
  if (!(obj.ListOfValues instanceof Array)) {
  obj.ListOfValues = [];
  }
  this.readChildNodes(node, obj.ListOfValues);
  },
  "Value": function(node, obj) {
  var attrs = node.attributes;
  var value = {}
  for(var i=0, len=attrs.length; i<len; ++i) {
  value[attrs[i].name] = attrs[i].nodeValue;
  }
  value.value = this.getChildValue(node);
  obj.push({Value: value});
  },
  "ConceptualScheme": function(node, obj) {
  obj.ConceptualScheme = {};
  this.readChildNodes(node, obj.ConceptualScheme);
  },
  "Name": function(node, obj) {
  obj.Name = this.getChildValue(node);
  },
  "Document": function(node, obj) {
  obj.Document = this.getChildValue(node);
  },
  "Authority": function(node, obj) {
  obj.Authority = this.getChildValue(node);
  },
  "RangeOfValues": function(node, obj) {
  obj.RangeOfValues = {};
  this.readChildNodes(node, obj.RangeOfValues);
  },
  "MinValue": function(node, obj) {
  var attrs = node.attributes;
  var value = {}
  for(var i=0, len=attrs.length; i<len; ++i) {
  value[attrs[i].name] = attrs[i].nodeValue;
  }
  value.value = this.getChildValue(node);
  obj.MinValue = value;
  },
  "MaxValue": function(node, obj) {
  var attrs = node.attributes;
  var value = {}
  for(var i=0, len=attrs.length; i<len; ++i) {
  value[attrs[i].name] = attrs[i].nodeValue;
  }
  value.value = this.getChildValue(node);
  obj.MaxValue = value;
  }
  }
  },
   
  /**
  * APIMethod: write
  * Given an configuration js object, write a CSWGetDomain request.
  *
  * Parameters:
  * options - {Object} A object mapping the request.
  *
  * Returns:
  * {String} A serialized CSWGetDomain request.
  */
  write: function(options) {
  var node = this.writeNode("csw:GetDomain", options);
  return OpenLayers.Format.XML.prototype.write.apply(this, [node]);
  },
   
  /**
  * Property: writers
  * As a compliment to the readers property, this structure contains public
  * writing functions grouped by namespace alias and named like the
  * node names they produce.
  */
  writers: {
  "csw": {
  "GetDomain": function(options) {
  var node = this.createElementNSPlus("csw:GetDomain", {
  attributes: {
  service: "CSW",
  version: this.version
  }
  });
  if (options.PropertyName || this.PropertyName) {
  this.writeNode(
  "csw:PropertyName",
  options.PropertyName || this.PropertyName,
  node
  );
  } else if (options.ParameterName || this.ParameterName) {
  this.writeNode(
  "csw:ParameterName",
  options.ParameterName || this.ParameterName,
  node
  );
  }
  this.readChildNodes(node, options);
  return node;
  },
  "PropertyName": function(value) {
  var node = this.createElementNSPlus("csw:PropertyName", {
  value: value
  });
  return node;
  },
  "ParameterName": function(value) {
  var node = this.createElementNSPlus("csw:ParameterName", {
  value: value
  });
  return node;
  }
  }
  },
   
  CLASS_NAME: "OpenLayers.Format.CSWGetDomain.v2_0_2"
  });