text: /**
   * @requires OpenLayers/Format/WMSCapabilities/v1.js
   */
  
  /**
   * Class: OpenLayers.Format.WMSCapabilities.v1_1
   * Abstract class not to be instantiated directly.
   * 
   * Inherits from:
   *  - <OpenLayers.Format.WMSCapabilities.v1>
   */
  OpenLayers.Format.WMSCapabilities.v1_1 = OpenLayers.Class(
      OpenLayers.Format.WMSCapabilities.v1, {
      
      /**
       * 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: {
          "wms": OpenLayers.Util.applyDefaults({
              "WMT_MS_Capabilities": function(node, obj) {
                  this.readChildNodes(node, obj);
              },
              "Keyword": function(node, obj) {
                  if (obj.keywords) {
                      obj.keywords.push(this.getChildValue(node));
                  }
              },
              "DescribeLayer": function(node, obj) {
                  obj.describelayer = {formats: []};
                  this.readChildNodes(node, obj.describelayer);
              },
              "GetLegendGraphic": function(node, obj) {
                  obj.getlegendgraphic = {formats: []};
                  this.readChildNodes(node, obj.getlegendgraphic);
              },
              "GetStyles": function(node, obj) {
                  obj.getstyles = {formats: []};
                  this.readChildNodes(node, obj.getstyles);
              },
              "PutStyles": function(node, obj) {
                  obj.putstyles = {formats: []};
                  this.readChildNodes(node, obj.putstyles);
              },
              "UserDefinedSymbolization": function(node, obj) {
                  var userSymbols = {
                      supportSLD: parseInt(node.getAttribute("SupportSLD")) == 1,
                      userLayer: parseInt(node.getAttribute("UserLayer")) == 1,
                      userStyle: parseInt(node.getAttribute("UserStyle")) == 1,
                      remoteWFS: parseInt(node.getAttribute("RemoteWFS")) == 1
                  };
                  obj.userSymbols = userSymbols;
              },
              "LatLonBoundingBox": function(node, obj) {
                  obj.llbbox = [
                      parseFloat(node.getAttribute("minx")),
                      parseFloat(node.getAttribute("miny")),
                      parseFloat(node.getAttribute("maxx")),
                      parseFloat(node.getAttribute("maxy"))
                  ];
              },
              "BoundingBox": function(node, obj) {
                  var bbox = OpenLayers.Format.WMSCapabilities.v1.prototype.readers["wms"].BoundingBox.apply(this, [node, obj]);
                  bbox.srs  = node.getAttribute("SRS");
                  obj.bbox[bbox.srs] = bbox;
              },
              "ScaleHint": function(node, obj) {
                  var min = node.getAttribute("min");
                  var max = node.getAttribute("max");
                  var rad2 = Math.pow(2, 0.5);
                  var ipm = OpenLayers.INCHES_PER_UNIT["m"];
                  obj.maxScale = parseFloat(
                      ((min / rad2) * ipm * 
                          OpenLayers.DOTS_PER_INCH).toPrecision(13)
                  );
                  obj.minScale = parseFloat(
                      ((max / rad2) * ipm * 
                          OpenLayers.DOTS_PER_INCH).toPrecision(13)
                  );
              },
              "Dimension": function(node, obj) {
                  var name = node.getAttribute("name").toLowerCase();
                  var dim = {
                      name: name,
                      units: node.getAttribute("units"),
                      unitsymbol: node.getAttribute("unitSymbol")
                  };
                  obj.dimensions[dim.name] = dim;
              },
              "Extent": function(node, obj) {
                  var name = node.getAttribute("name").toLowerCase();
                  if (name in obj["dimensions"]) {
                      var extent = obj.dimensions[name];
                      extent.nearestVal = 
                          node.getAttribute("nearestValue") === "1";
                      extent.multipleVal = 
                          node.getAttribute("multipleValues") === "1";
                      extent.current = node.getAttribute("current") === "1";
                      extent["default"] = node.getAttribute("default") || "";
                      var values = this.getChildValue(node);
                      extent.values = values.split(",");
                  }
                  }
          }, OpenLayers.Format.WMSCapabilities.v1.prototype.readers["wms"])
      },
  
      CLASS_NAME: "OpenLayers.Format.WMSCapabilities.v1_1" 
  
  });
  