var AjaxTreeNavigation=JS.Class({include:[JS.Observable,JS.State],extend:{EASING:"easeOutStrong",ANIM_TIME:0.4,ANIM_MARGIN:100},initialize:function(A){if(A instanceof this.klass){A=A.updater.node}this.container=$(A);this.updater=$($.HTML.div());[this.container,this.updater].forEach(it().addClass("yui-u ajax-tree-nav").setStyle({display:"inline-block","float":"left"}));this.container.insert(this.updater.node,"after");this.container.on("click",$.delegateEvent({a:function(B,C){C.stopEvent();this.update(B.node.href)}.bind(this)}));this.setState("VISIBLE");this.hide()},update:function(A){A?this.hide()._($.HTTP).GET(A).insertInto(this.updater)._(this).show():this.hide();this.notifyObservers("update")},states:{INVISIBLE:{show:function(){this.updater.animate({opacity:{to:1},marginTop:{from:-this.klass.ANIM_MARGIN,to:0}},this.klass.ANIM_TIME,{easing:this.klass.EASING})._(this).setState("VISIBLE");this.notifyObservers("show")}},VISIBLE:{hide:function(){var A=new JS.MethodChain;this.updater.animate({opacity:{to:0},marginTop:{from:0,to:-this.klass.ANIM_MARGIN}},this.klass.ANIM_TIME,{easing:this.klass.EASING})._(this).setState("INVISIBLE")._(A.toFunction());this.notifyObservers("hide");return A}}},on:function(A,C,B){this.addObserver(function(D){if(D==A){C.call(B||null)}})}})