var IAR = {

  syncParentFlags: function(event, cbx) {
    if(event) cbx = Event.element(event);
    var parent = cbx.parentNode.parentNode.parentNode;
    if(parent.tagName.toLowerCase() != 'li') return true;
    var parentCbx = parent.getElementsByTagName("input")[0];
    if(parentCbx && parentCbx != cbx) { 
      if(cbx.checked) {
        parentCbx.name = "_" + parentCbx.name;
        parentCbx.checked = true;
        parentCbx.disabled = true;
        IAR.syncParentFlags(null, parentCbx);
      } else {
        parentCbx.disabled = false;
        parentCbx.name = parentCbx.name.replace(/^_+/, '');
      }
    }
    return true;
  },
  
  patchFlagsTree: function(treeId) {
    new Selector("input").findElements($(treeId)).each(function(cbx) {
       Event.observe(cbx, "click", IAR.syncParentFlags);
       IAR.syncParentFlags(null, cbx);
    });

    Event.observe(window, "unload", function() {
      new Selector("input").findElements($(treeId)).each(function(cbx) {
        Event.stopObserving(cbx, "click", IAR.syncParentFlags);
      });
    });

  }
}

// Ajax double click prevention
Ajax.Responders.register({
  checkPattern: /\/(?:edit|new)(?:[\/\?]|$)/,
  pending: {},
  onLoading: function(request, transport) {
    var url = request.url;
    if(this.pending[url]) {
      if(this.checkPattern.test(url)) {
        transport.abort();
      }
      this.pending[url]++;
    } else {
      this.pending[url] = 1;
    }
   
  },
  
  onComplete: function(request, transport) {
    var url = request.url;
    window.setTimeout(function() {
        if(this.pending[url] == 1) delete(this.pending[url]);
        else this.pending[url]--;
      }.bind(this), 500
    );
  }
});


document.write("<style type=\"text/css\">.js-nodisplay, .fadein { display: none }</style>");
LifeCycle.runOnload(function() {
  $$('.fadein').each(function(e) {
    new Effect.Appear(e);
    e.removeClassName('fadein');
  });
});
