function hProduct(node) {
  if (node) {
    Microformats.parser.newMicroformat(this, node, "hProduct");
  }
}
hProduct.prototype.toString = function() {
  return this.fn;
}

var hProduct_definition = {
  mfVersion: 0.1,
  description: "Product(s)",
  mfObject: hProduct,
  className: "hproduct",
  required: ["fn"],
  properties: {
    "brand" : {
      datatype: "microformat",
      microformat: "hCard"
    },
    "category" : {
      plural: true,
      rel: true,
      datatype: "microformat",
      microformat: "tag"
    },
    "price" : {
    },
    "description" : {
    },
    "fn" : {
    },
    "photo" : {
      plural: true,
      datatype: "anyURI"
    },
    "url" : {
      plural: true,
      datatype: "anyURI"
    },
    "review" : {
      plural: true
    },
    "listing" : {
      plural: true
    },
    "identifier" : {
      subproperties: {
        "type" : {
        },
        "value" : {
        }
      },
      plural: true
    }
  }
};

Microformats.add("hProduct", hProduct_definition);

var hproduct_firefox_bookmark = {
  scope: {
    semantic: {
      "hProduct" : "hProduct"
    }
  }
};

var hproduct_google_search = {
  scope: {
    semantic: {
      "hProduct" : "fn"
    }
  }
};

var hproduct_yahoo_search = {
  scope: {
    semantic: {
      "hProduct" : "fn"
    }
  }
};

SemanticActions.add("firefox_bookmark", hproduct_firefox_bookmark);
SemanticActions.add("google_search", hproduct_google_search);
SemanticActions.add("yahoo_search", hproduct_yahoo_search);
