
instrument = function(root) {
    root.select(".submitFocus",".submit", ".pagebrowser a", ".resultHeader a").each(function(element) {
        element.observe('click', ajax_submit);
    });
    root.select(".resultHeader select").each(function(element) {
        element.observe('change', ajax_submit);
    });
    root.select(".popup").each(function(element) {
                new Tip(element, element.getAttribute("popuptext"), { title: element.getAttribute("popuptitle")});
    });
    root.select(".cartAdd").each(function(element) {
        element.observe('click', toggle_cart);
    });

}

document.observe("dom:loaded", function() {instrument($('tx_pmtree_pi1_search'));}); 

multiReceiver = Class.create({
  initialize: function(container, next) {
    this.container = container;
    this.next = next;
    container.each(function(element) {
      element.update('<div style="text-align:center; width:100%; height:4em;background: transparent url(typo3conf/ext/pm_tree/pi1/include/gfx/loading.gif) no-repeat center center; " alt="loading">&nbsp;</div>');
    });
  },
  update: function(value) {
    this.container.each(function(element) {element.update(value); instrument(element);});
    this.next();
  }
});

update_stats = function() {
    var container = new multiReceiver($$('#tx_pmtree_pi1_search_stats'));
    new Ajax.Updater(container,'/search/?type=1&tx_pmtree_pi1[type]=search:stats', {method:'get'});
}

ajax_submit = function(event) {
    Event.stop(event);
    Tips.hideAll()
    var element = Event.element(event);
    var url = element.readAttribute('href');
    var params = {};
    if (url) {
        params['type']=1;
    } else {
        url = "/search/?type=1";
        params = $('tx_pmtree_pi1_search_form').serialize(true);
        params['tx_pmtree_pi1[submit]'] = $F(element);
    }
    

    params['tx_pmtree_pi1[type]']='search:navi';
    var container = new multiReceiver($$('.tx_pmtree_pi1_search_result_navi'), update_stats);
    new Ajax.Updater(container, url, { method:'get', parameters:params} );

    params['tx_pmtree_pi1[type]']='search:result';
    container = new multiReceiver($$('#tx_pmtree_pi1_search_result'));
    new Ajax.Updater(container, url, { method:'get', parameters:params} );
}


toggle_cart = function(event) {
 Event.stop(event);
 var me = Event.element(event);
 new Ajax.Request('/search/?type=1', {
    parameters: {
        acc: me.identify(),
        test: 'bla'
    },
    method:'get',
    onSuccess: function(transport) {
        me.className=eval(transport.responseText).newItemClass;
    }
 });
    
}


function toggleCartAdd(db, primaryAccession, pid, pname, taxonomy) {
    var del = ($(primaryAccession).className=="cartRemove");
    var url = "browser/?type=1";
    url += '&tx_pmtree_pi1[type]=cart:' + (del?"del":"add");
    url += '&tx_pmtree_pi1[pid]=' + escape(pid);
    url += '&tx_pmtree_pi1[db]=' + db;
    url += '&tx_pmtree_pi1[model]=element';
    url += '&tx_pmtree_pi1[taxonomy]=' + taxonomy;
    url += '&tx_pmtree_pi1[primaryAccession]=' + primaryAccession;
    url += '&tx_pmtree_pi1[pname]=' + pname;
    var pars = '';
    var request =
        {
            method: 'get',
            parameters: pars,
            onSuccess: function(transport)
            { 
                $(primaryAccession).className=eval(transport.responseText).newItemClass;
            }
        };
    requestViaAjax("CartChange", url, request);
    $(primaryAccession).className=del?"cartAdd":"cartRemove";
}

