/**
 * Money microformat.
 *
 * http://microformats.org/wiki/currency
 *
 * Author: David I. Lehn <dlehn@digitalbazaar.com>
 */

if (Components.utils.import) {
  try {
    Components.utils.import("resource://gre/modules/Microformats.js");
    EXPORTED_SYMBOLS = ["money"];
  } catch (ex) {}
}

function money(node) {
  if (node) {
    Microformats.parser.newMicroformat(this, node, "money");
  }
}
money.prototype.toString = function() {
  return this["amount"];
}

var money_definition = {
  mfVersion: 0.8,
  mfObject: money,
  className: "money",
  required: ["amount"],
  properties: {
    "amount" : {
      required: true,
    },
    "currency" : {
    },
    "unit" : {
    },
    "date" : {
      datatype: "dateTime"
    }
  }
};

Microformats.add("money", money_definition);

var money_convert = {
  description: "Yahoo! Currency Converter",
  shortDescription: "Convert",
  icon: "http://finance.yahoo.com/favicon.ico",
  scope: {
    semantic: {
      "money" : "amount"
    }
  },
  doAction: function(semanticObject, semanticObjectType) {
    var url = "http://finance.yahoo.com/currency/";
    // Yahoo! service requires currency.  If not specified just return their
    // generic URL.  Don't know local currency so just convert to self.
    // (Could perhaps add local currency preference?)
    if (semanticObject.currency) {
      currency = encodeURIComponent(semanticObject.currency);
      amount = encodeURIComponent(semanticObject.amount);
      url += "convert?amt=" + amount +
          "&from=" + currency + "&to=" + currency +
          "&submit=Convert";
    }
    return url;
  }
};

SemanticActions.add("money_convert", money_convert);
