YUI.add("ignite", function (Y) {

  var _funcs = [];
  
  var is = function (type, value) {
    return typeof value === type;
  };
 
  Y.ignite = {  
    on: function (v, func) {
      var init = v;
      if (is('function', v) && is('undefined', func)) {
        init = {condition: true, func: v};
      }
      else if (is('function', v) && is('function', func)) {
        init = {condition: v, func: func};
      }
      else if (is('boolean', v)) {
        init = {condition: v, func: func};        
      }
      else if (is('string', v) && is('function', func)) {
        init = {
          condition: function () { return Y.one(v) !== null; },
          func: func
        };
      }
    
      _funcs.push(init);
      return init.func;
    },
    
    spark: function () {
      var i, f, condition, l = _funcs.length;
    
      for (i = 0; i < l; i++) {
        f = _funcs[i];
        condition = (is("function", f.condition) ? f.condition() : f.condition);
        if (condition) {
          f.func();
        }
      }      
    }
  };
  
}, "1.0.0", {});

