Changeset 1374

Show
Ignore:
Timestamp:
05/18/08 11:54:55 (5 months ago)
Author:
cederberg@gmail.com
Message:

Added MochiKit.Visual.Sequence class to fix switchOff effect options (see #295).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • mochikit/trunk/MochiKit/Visual.js

    r1360 r1374  
    727727}; 
    728728 
    729     /** @id MochiKit.Visual.Parallel */ 
     729/** @id MochiKit.Visual.Parallel */ 
    730730MochiKit.Visual.Parallel = function (effects, options) { 
    731731    var cls = arguments.callee; 
     
    761761 
    762762    /** @id MochiKit.Visual.Parallel.prototype.finish */ 
     763    finish: function () { 
     764        MochiKit.Base.map(function (effect) { 
     765            effect.finalize(); 
     766        }, this.effects); 
     767    } 
     768}); 
     769 
     770/** @id MochiKit.Visual.Sequence */ 
     771MochiKit.Visual.Sequence = function (effects, options) { 
     772    var cls = arguments.callee; 
     773    if (!(this instanceof cls)) { 
     774        return new cls(effects, options); 
     775    } 
     776    this.__init__(effects, options); 
     777}; 
     778 
     779MochiKit.Visual.Sequence.prototype = new MochiKit.Visual.Base(); 
     780 
     781MochiKit.Base.update(MochiKit.Visual.Sequence.prototype, { 
     782 
     783    __class__ : MochiKit.Visual.Sequence, 
     784 
     785    __init__: function (effects, options) { 
     786        var defs = { transition: MochiKit.Visual.Transitions.linear, 
     787                     duration: 0 }; 
     788        this.effects = effects || []; 
     789        MochiKit.Base.map(function (effect) { 
     790            defs.duration += effect.options.duration; 
     791        }, this.effects); 
     792        MochiKit.Base.setdefault(options, defs); 
     793        this.start(options); 
     794    }, 
     795 
     796    /** @id MochiKit.Visual.Sequence.prototype.update */ 
     797    update: function (position) { 
     798        var time = position * this.options.duration; 
     799        for (var i = 0; i < this.effects.length; i++) { 
     800            var effect = this.effects[i]; 
     801            if (time <= effect.options.duration) { 
     802                effect.render(time / effect.options.duration); 
     803                break; 
     804            } else { 
     805                time -= effect.options.duration; 
     806            } 
     807        } 
     808    }, 
     809 
     810    /** @id MochiKit.Visual.Sequence.prototype.finish */ 
    763811    finish: function () { 
    764812        MochiKit.Base.map(function (effect) { 
     
    14101458    var elemClip; 
    14111459    options = MochiKit.Base.update({ 
    1412         duration: 0.3, 
    1413         scaleFromCenter: true, 
    1414         scaleX: false, 
    1415         scaleContent: false, 
     1460        duration: 0.7, 
    14161461        restoreAfterFinish: true, 
    14171462        beforeSetupInternal: function (effect) { 
    1418             d.makePositioned(effect.element); 
    1419             elemClip = d.makeClipping(effect.element); 
     1463            d.makePositioned(element); 
     1464            elemClip = d.makeClipping(element); 
    14201465        }, 
    14211466        afterFinishInternal: function (effect) { 
    1422             MochiKit.Style.hideElement(effect.element); 
    1423             d.undoClipping(effect.element, elemClip); 
    1424             d.undoPositioned(effect.element); 
    1425             MochiKit.Style.setStyle(effect.element, {'opacity': oldOpacity}); 
     1467            MochiKit.Style.hideElement(element); 
     1468            d.undoClipping(element, elemClip); 
     1469            d.undoPositioned(element); 
     1470            MochiKit.Style.setStyle(element, {'opacity': oldOpacity}); 
    14261471        } 
    14271472    }, options); 
    14281473    var v = MochiKit.Visual; 
    1429     return new v.appear(element, { 
    1430         duration: 0.4, 
    1431         from: 0, 
    1432         transition: v.Transitions.flicker, 
    1433         afterFinishInternal: function (effect) { 
    1434             new v.Scale(effect.element, 1, options); 
    1435         } 
    1436     }); 
     1474    return new v.Sequence( 
     1475        [new v.appear(element, 
     1476                      { sync: true, duration: 0.57 * options.duration, 
     1477                        from: 0, transition: v.Transitions.flicker }), 
     1478         new v.Scale(element, 1, 
     1479                     { sync: true, duration: 0.43 * options.duration, 
     1480                       scaleFromCenter: true, scaleX: false, 
     1481                       scaleContent: false, restoreAfterFinish: true })], 
     1482        options); 
    14371483}; 
    14381484 
     
    19221968    "toggle", 
    19231969    "Parallel", 
     1970    "Sequence", 
    19241971    "Opacity", 
    19251972    "Move", 
  • mochikit/trunk/doc/html/MochiKit/Visual.html

    r1360 r1374  
    782782<table border="1" class="docutils"> 
    783783<colgroup> 
    784 <col width="17%" /> 
    785 <col width="83%" /> 
     784<col width="13%" /> 
     785<col width="88%" /> 
    786786</colgroup> 
    787787<tbody valign="top"> 
     
    796796</tr> 
    797797<tr><td>sync</td> 
    798 <td><tt class="docutils literal"><span class="pre">false</span></tt> (only set for <a class="mochiref reference" href="#fn-parallel">Parallel</a> effects)</td> 
     798<td><tt class="docutils literal"><span class="pre">false</span></tt> (only set for <a class="mochiref reference" href="#fn-parallel">Parallel</a> or <a class="mochiref reference" href="#fn-sequence">Sequence</a> effects)</td> 
    799799</tr> 
    800800<tr><td>from</td> 
     
    867867</blockquote> 
    868868<p> 
     869<a name="fn-sequence"></a> 
     870<a class="mochidef reference" href="#fn-sequence">Sequence(effects [, options])</a>:</p> 
     871<blockquote> 
     872<p>Launch a list of <tt class="docutils literal"><span class="pre">effects</span></tt> in sequence, one after the other.</p> 
     873<dl class="docutils"> 
     874<dt>effects:</dt> 
     875<dd>An array of instantiated effect objects. Note that they <em>must</em> 
     876all have <tt class="docutils literal"><span class="pre">sync</span></tt> set to <tt class="docutils literal"><span class="pre">true</span></tt>.</dd> 
     877<dt>options:</dt> 
     878<dd><p class="first">See <a class="mochiref reference" href="#fn-defaultoptions">DefaultOptions</a>. Note that the default value 
     879for some options is different and that some of the transition 
     880and timing options don't make sense to override.</p> 
     881<table border="1" class="last docutils"> 
     882<colgroup> 
     883<col width="20%" /> 
     884<col width="80%" /> 
     885</colgroup> 
     886<tbody valign="top"> 
     887<tr><td>transition</td> 
     888<td><tt class="docutils literal"><span class="pre">MochiKit.Visual.Transitions.linear</span></tt></td> 
     889</tr> 
     890<tr><td>duration</td> 
     891<td>Sum of the <tt class="docutils literal"><span class="pre">duration</span></tt> for all <tt class="docutils literal"><span class="pre">effects</span></tt>.</td> 
     892</tr> 
     893<tr><td>from</td> 
     894<td>Only <tt class="docutils literal"><span class="pre">0.0</span></tt> makes sense.</td> 
     895</tr> 
     896<tr><td>to</td> 
     897<td>Only <tt class="docutils literal"><span class="pre">1.0</span></tt> makes sense.</td> 
     898</tr> 
     899</tbody> 
     900</table> 
     901</dd> 
     902<dt><em>Availability</em>:</dt> 
     903<dd>Available in MochiKit 1.4+</dd> 
     904</dl> 
     905</blockquote> 
     906<p> 
    869907<a name="fn-opacity"></a> 
    870908<a class="mochidef reference" href="#fn-opacity">Opacity(element [, options])</a>:</p> 
  • mochikit/trunk/doc/rst/MochiKit/Visual.rst

    r1360 r1374  
    617617    duration    ``1.0`` (seconds) 
    618618    fps         ``25.0`` 
    619     sync        ``false`` (only set for :mochiref:`Parallel` effects) 
     619    sync        ``false`` (only set for :mochiref:`Parallel` or :mochiref:`Sequence` effects) 
    620620    from        ``0.0`` 
    621621    to          ``1.0`` 
     
    672672    options: 
    673673        See :mochiref:`DefaultOptions`. 
     674 
     675    *Availability*: 
     676        Available in MochiKit 1.4+ 
     677 
     678 
     679:mochidef:`Sequence(effects [, options])`: 
     680 
     681    Launch a list of ``effects`` in sequence, one after the other. 
     682 
     683    effects: 
     684        An array of instantiated effect objects. Note that they *must* 
     685        all have ``sync`` set to ``true``. 
     686 
     687    options: 
     688        See :mochiref:`DefaultOptions`. Note that the default value 
     689        for some options is different and that some of the transition 
     690        and timing options don't make sense to override. 
     691 
     692        =========== ======================================== 
     693        transition  ``MochiKit.Visual.Transitions.linear`` 
     694        duration    Sum of the ``duration`` for all ``effects``. 
     695        from        Only ``0.0`` makes sense. 
     696        to          Only ``1.0`` makes sense. 
     697        =========== ======================================== 
    674698 
    675699    *Availability*: 
  • mochikit/trunk/packed/MochiKit/MochiKit.js

    r1373 r1374  
    60106010},this.effects); 
    60116011}}); 
    6012 MochiKit.Visual.Opacity=function(_645,_646){ 
     6012MochiKit.Visual.Sequence=function(_645,_646){ 
    60136013var cls=arguments.callee; 
    60146014if(!(this instanceof cls)){ 
     
    60176017this.__init__(_645,_646); 
    60186018}; 
     6019MochiKit.Visual.Sequence.prototype=new MochiKit.Visual.Base(); 
     6020MochiKit.Base.update(MochiKit.Visual.Sequence.prototype,{__class__:MochiKit.Visual.Sequence,__init__:function(_648,_649){ 
     6021var defs={transition:MochiKit.Visual.Transitions.linear,duration:0}; 
     6022this.effects=_648||[]; 
     6023MochiKit.Base.map(function(_64b){ 
     6024defs.duration+=_64b.options.duration; 
     6025},this.effects); 
     6026MochiKit.Base.setdefault(_649,defs); 
     6027this.start(_649); 
     6028},update:function(_64c){ 
     6029var time=_64c*this.options.duration; 
     6030for(var i=0;i<this.effects.length;i++){ 
     6031var _64f=this.effects[i]; 
     6032if(time<=_64f.options.duration){ 
     6033_64f.render(time/_64f.options.duration); 
     6034break; 
     6035}else{ 
     6036time-=_64f.options.duration; 
     6037} 
     6038} 
     6039},finish:function(){ 
     6040MochiKit.Base.map(function(_650){ 
     6041_650.finalize(); 
     6042},this.effects); 
     6043}}); 
     6044MochiKit.Visual.Opacity=function(_651,_652){ 
     6045var cls=arguments.callee; 
     6046if(!(this instanceof cls)){ 
     6047return new cls(_651,_652); 
     6048} 
     6049this.__init__(_651,_652); 
     6050}; 
    60196051MochiKit.Visual.Opacity.prototype=new MochiKit.Visual.Base(); 
    6020 MochiKit.Base.update(MochiKit.Visual.Opacity.prototype,{__class__:MochiKit.Visual.Opacity,__init__:function(_648,_649){ 
     6052MochiKit.Base.update(MochiKit.Visual.Opacity.prototype,{__class__:MochiKit.Visual.Opacity,__init__:function(_654,_655){ 
    60216053var b=MochiKit.Base; 
    60226054var s=MochiKit.Style; 
    6023 this.element=MochiKit.DOM.getElement(_648); 
     6055this.element=MochiKit.DOM.getElement(_654); 
    60246056if(this.element.currentStyle&&(!this.element.currentStyle.hasLayout)){ 
    60256057s.setStyle(this.element,{zoom:1}); 
    60266058} 
    6027 _649=b.update({from:s.getStyle(this.element,"opacity")||0,to:1},_649); 
    6028 this.start(_649); 
    6029 },update:function(_64c){ 
    6030 MochiKit.Style.setStyle(this.element,{"opacity":_64c}); 
     6059_655=b.update({from:s.getStyle(this.element,"opacity")||0,to:1},_655); 
     6060this.start(_655); 
     6061},update:function(_658){ 
     6062MochiKit.Style.setStyle(this.element,{"opacity":_658}); 
    60316063}}); 
    6032 MochiKit.Visual.Move=function(_64d,_64e){ 
     6064MochiKit.Visual.Move=function(_659,_65a){ 
    60336065var cls=arguments.callee; 
    60346066if(!(this instanceof cls)){ 
    6035 return new cls(_64d,_64e); 
    6036 } 
    6037 this.__init__(_64d,_64e); 
     6067return new cls(_659,_65a); 
     6068} 
     6069this.__init__(_659,_65a); 
    60386070}; 
    60396071MochiKit.Visual.Move.prototype=new MochiKit.Visual.Base(); 
    6040 MochiKit.Base.update(MochiKit.Visual.Move.prototype,{__class__:MochiKit.Visual.Move,__init__:function(_650,_651){ 
    6041 this.element=MochiKit.DOM.getElement(_650); 
    6042 _651=MochiKit.Base.update({x:0,y:0,mode:"relative"},_651); 
    6043 this.start(_651); 
     6072MochiKit.Base.update(MochiKit.Visual.Move.prototype,{__class__:MochiKit.Visual.Move,__init__:function(_65c,_65d){ 
     6073this.element=MochiKit.DOM.getElement(_65c); 
     6074_65d=MochiKit.Base.update({x:0,y:0,mode:"relative"},_65d); 
     6075this.start(_65d); 
    60446076},setup:function(){ 
    60456077MochiKit.DOM.makePositioned(this.element); 
    60466078var s=this.element.style; 
    6047 var _653=s.visibility; 
    6048 var _654=s.display; 
    6049 if(_654=="none"){ 
     6079var _65f=s.visibility; 
     6080var _660=s.display; 
     6081if(_660=="none"){ 
    60506082s.visibility="hidden"; 
    60516083s.display=""; 
     
    60576089this.options.y-=this.originalTop; 
    60586090} 
    6059 if(_654=="none"){ 
    6060 s.visibility=_653
    6061 s.display=_654
    6062 } 
    6063 },update:function(_655){ 
    6064 MochiKit.Style.setStyle(this.element,{left:Math.round(this.options.x*_655+this.originalLeft)+"px",top:Math.round(this.options.y*_655+this.originalTop)+"px"}); 
     6091if(_660=="none"){ 
     6092s.visibility=_65f
     6093s.display=_660
     6094} 
     6095},update:function(_661){ 
     6096MochiKit.Style.setStyle(this.element,{left:Math.round(this.options.x*_661+this.originalLeft)+"px",top:Math.round(this.options.y*_661+this.originalTop)+"px"}); 
    60656097}}); 
    6066 MochiKit.Visual.Scale=function(_656,_657,_658){ 
     6098MochiKit.Visual.Scale=function(_662,_663,_664){ 
    60676099var cls=arguments.callee; 
    60686100if(!(this instanceof cls)){ 
    6069 return new cls(_656,_657,_658); 
    6070 } 
    6071 this.__init__(_656,_657,_658); 
     6101return new cls(_662,_663,_664); 
     6102} 
     6103this.__init__(_662,_663,_664); 
    60726104}; 
    60736105MochiKit.Visual.Scale.prototype=new MochiKit.Visual.Base(); 
    6074 MochiKit.Base.update(MochiKit.Visual.Scale.prototype,{__class__:MochiKit.Visual.Scale,__init__:function(_65a,_65b,_65c){ 
    6075 this.element=MochiKit.DOM.getElement(_65a); 
    6076 _65c=MochiKit.Base.update({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:_65b},_65c); 
    6077 this.start(_65c); 
     6106MochiKit.Base.update(MochiKit.Visual.Scale.prototype,{__class__:MochiKit.Visual.Scale,__init__:function(_666,_667,_668){ 
     6107this.element=MochiKit.DOM.getElement(_666); 
     6108_668=MochiKit.Base.update({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:_667},_668); 
     6109this.start(_668); 
    60786110},setup:function(){ 
    60796111this.restoreAfterFinish=this.options.restoreAfterFinish||false; 
     
    60876119this.originalTop=this.element.offsetTop; 
    60886120this.originalLeft=this.element.offsetLeft; 
    6089 var _660=MochiKit.Style.getStyle(this.element,"font-size")||"100%"; 
    6090 ma(b(function(_661){ 
    6091 if(_660.indexOf(_661)>0){ 
    6092 this.fontSize=parseFloat(_660); 
    6093 this.fontSizeType=_661
     6121var _66c=MochiKit.Style.getStyle(this.element,"font-size")||"100%"; 
     6122ma(b(function(_66d){ 
     6123if(_66c.indexOf(_66d)>0){ 
     6124this.fontSize=parseFloat(_66c); 
     6125this.fontSizeType=_66d
    60946126} 
    60956127},this),["em","px","%"]); 
     
    61046136} 
    61056137} 
    6106 },update:function(_662){ 
    6107 var _663=(this.options.scaleFrom/100)+(this.factor*_662); 
     6138},update:function(_66e){ 
     6139var _66f=(this.options.scaleFrom/100)+(this.factor*_66e); 
    61086140if(this.options.scaleContent&&this.fontSize){ 
    6109 MochiKit.Style.setStyle(this.element,{fontSize:this.fontSize*_663+this.fontSizeType}); 
    6110 } 
    6111 this.setDimensions(this.dims[0]*_663,this.dims[1]*_663); 
     6141MochiKit.Style.setStyle(this.element,{fontSize:this.fontSize*_66f+this.fontSizeType}); 
     6142} 
     6143this.setDimensions(this.dims[0]*_66f,this.dims[1]*_66f); 
    61126144},finish:function(){ 
    61136145if(this.restoreAfterFinish){ 
    61146146MochiKit.Style.setStyle(this.element,this.originalStyle); 
    61156147} 
    6116 },setDimensions:function(_664,_665){ 
     6148},setDimensions:function(_670,_671){ 
    61176149var d={}; 
    61186150var r=Math.round; 
     
    61216153} 
    61226154if(this.options.scaleX){ 
    6123 d.width=r(_665)+"px"; 
     6155d.width=r(_671)+"px"; 
    61246156} 
    61256157if(this.options.scaleY){ 
    6126 d.height=r(_664)+"px"; 
     6158d.height=r(_670)+"px"; 
    61276159} 
    61286160if(this.options.scaleFromCenter){ 
    6129 var topd=(_664-this.dims[0])/2; 
    6130 var _669=(_665-this.dims[1])/2; 
     6161var topd=(_670-this.dims[0])/2; 
     6162var _675=(_671-this.dims[1])/2; 
    61316163if(this.elementPositioning=="absolute"){ 
    61326164if(this.options.scaleY){ 
     
    61346166} 
    61356167if(this.options.scaleX){ 
    6136 d.left=this.originalLeft-_669+"px"; 
     6168d.left=this.originalLeft-_675+"px"; 
    61376169} 
    61386170}else{ 
     
    61416173} 
    61426174if(this.options.scaleX){ 
    6143 d.left=-_669+"px"; 
     6175d.left=-_675+"px"; 
    61446176} 
    61456177} 
     
    61476179MochiKit.Style.setStyle(this.element,d); 
    61486180}}); 
    6149 MochiKit.Visual.Highlight=function(_66a,_66b){ 
     6181MochiKit.Visual.Highlight=function(_676,_677){ 
    61506182var cls=arguments.callee; 
    61516183if(!(this instanceof cls)){ 
    6152 return new cls(_66a,_66b); 
    6153 } 
    6154 this.__init__(_66a,_66b); 
     6184return new cls(_676,_677); 
     6185} 
     6186this.__init__(_676,_677); 
    61556187}; 
    61566188MochiKit.Visual.Highlight.prototype=new MochiKit.Visual.Base(); 
    6157 MochiKit.Base.update(MochiKit.Visual.Highlight.prototype,{__class__:MochiKit.Visual.Highlight,__init__:function(_66d,_66e){ 
    6158 this.element=MochiKit.DOM.getElement(_66d); 
    6159 _66e=MochiKit.Base.update({startcolor:"#ffff99"},_66e); 
    6160 this.start(_66e); 
     6189MochiKit.Base.update(MochiKit.Visual.Highlight.prototype,{__class__:MochiKit.Visual.Highlight,__init__:function(_679,_67a){ 
     6190this.element=MochiKit.DOM.getElement(_679); 
     6191_67a=MochiKit.Base.update({startcolor:"#ffff99"},_67a); 
     6192this.start(_67a); 
    61616193},setup:function(){ 
    61626194var b=MochiKit.Base; 
     
    61806212return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]; 
    61816213},this),[0,1,2]); 
    6182 },update:function(_673){ 
     6214},update:function(_67f){ 
    61836215var m="#"; 
    61846216MochiKit.Base.map(MochiKit.Base.bind(function(i){ 
    6185 m+=MochiKit.Color.toColorPart(Math.round(this._base[i]+this._delta[i]*_673)); 
     6217m+=MochiKit.Color.toColorPart(Math.round(this._base[i]+this._delta[i]*_67f)); 
    61866218},this),[0,1,2]); 
    61876219MochiKit.Style.setStyle(this.element,{backgroundColor:m}); 
     
    61896221MochiKit.Style.setStyle(this.element,MochiKit.Base.update(this.oldStyle,{backgroundColor:this.options.restorecolor})); 
    61906222}}); 
    6191 MochiKit.Visual.ScrollTo=function(_676,_677){ 
     6223MochiKit.Visual.ScrollTo=function(_682,_683){ 
    61926224var cls=arguments.callee; 
    61936225if(!(this instanceof cls)){ 
    6194 return new cls(_676,_677); 
    6195 } 
    6196 this.__init__(_676,_677); 
     6226return new cls(_682,_683); 
     6227} 
     6228this.__init__(_682,_683); 
    61976229}; 
    61986230MochiKit.Visual.ScrollTo.prototype=new MochiKit.Visual.Base(); 
    6199 MochiKit.Base.update(MochiKit.Visual.ScrollTo.prototype,{__class__:MochiKit.Visual.ScrollTo,__init__:function(_679,_67a){ 
    6200 this.element=MochiKit.DOM.getElement(_679); 
    6201 this.start(_67a); 
     6231MochiKit.Base.update(MochiKit.Visual.ScrollTo.prototype,{__class__:MochiKit.Visual.ScrollTo,__init__:function(_685,_686){ 
     6232this.element=MochiKit.DOM.getElement(_685); 
     6233this.start(_686); 
    62026234},setup:function(){ 
    62036235var p=MochiKit.Position; 
    62046236p.prepare(); 
    6205 var _67c=p.cumulativeOffset(this.element); 
     6237var _688=p.cumulativeOffset(this.element); 
    62066238if(this.options.offset){ 
    6207 _67c.y+=this.options.offset; 
     6239_688.y+=this.options.offset; 
    62086240} 
    62096241var max; 
     
    62206252} 
    62216253this.scrollStart=p.windowOffset.y; 
    6222 this.delta=(_67c.y>max?max:_67c.y)-this.scrollStart; 
    6223 },update:function(_67e){ 
     6254this.delta=(_688.y>max?max:_688.y)-this.scrollStart; 
     6255},update:function(_68a){ 
    62246256var p=MochiKit.Position; 
    62256257p.prepare(); 
    6226 window.scrollTo(p.windowOffset.x,this.scrollStart+(_67e*this.delta)); 
     6258window.scrollTo(p.windowOffset.x,this.scrollStart+(_68a*this.delta)); 
    62276259}}); 
    62286260MochiKit.Visual.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/; 
    6229 MochiKit.Visual.Morph=function(_680,_681){ 
     6261MochiKit.Visual.Morph=function(_68c,_68d){ 
    62306262var cls=arguments.callee; 
    62316263if(!(this instanceof cls)){ 
    6232 return new cls(_680,_681); 
    6233 } 
    6234 this.__init__(_680,_681); 
     6264return new cls(_68c,_68d); 
     6265} 
     6266this.__init__(_68c,_68d); 
    62356267}; 
    62366268MochiKit.Visual.Morph.prototype=new MochiKit.Visual.Base(); 
    6237 MochiKit.Base.update(MochiKit.Visual.Morph.prototype,{__class__:MochiKit.Visual.Morph,__init__:function(_683,_684){ 
    6238 this.element=MochiKit.DOM.getElement(_683); 
    6239 this.start(_684); 
     6269MochiKit.Base.update(MochiKit.Visual.Morph.prototype,{__class__:MochiKit.Visual.Morph,__init__:function(_68f,_690){ 
     6270this.element=MochiKit.DOM.getElement(_68f); 
     6271this.start(_690); 
    62406272},setup:function(){ 
    62416273var b=MochiKit.Base; 
    6242 var _686=this.options.style; 
     6274var _692=this.options.style; 
    62436275this.styleStart={}; 
    62446276this.styleEnd={}; 
    62456277this.units={}; 
    6246 var _687,unit; 
    6247 for(var s in _686){ 
    6248 _687=_686[s]; 
     6278var _693,unit; 
     6279for(var s in _692){ 
     6280_693=_692[s]; 
    62496281s=b.camelize(s); 
    6250 if(MochiKit.Visual.CSS_LENGTH.test(_687)){ 
    6251 var _68a=_687.match(/^([\+\-]?[0-9\.]+)(.*)$/); 
    6252 _687=parseFloat(_68a[1]); 
    6253 unit=(_68a.length==3)?_68a[2]:null; 
    6254 this.styleEnd[s]=_687
     6282if(MochiKit.Visual.CSS_LENGTH.test(_693)){ 
     6283var _696=_693.match(/^([\+\-]?[0-9\.]+)(.*)$/); 
     6284_693=parseFloat(_696[1]); 
     6285unit=(_696.length==3)?_696[2]:null; 
     6286this.styleEnd[s]=_693
    62556287this.units[s]=unit; 
    6256 _687=MochiKit.Style.getStyle(this.element,s); 
    6257 _68a=_687.match(/^([\+\-]?[0-9\.]+)(.*)$/); 
    6258 _687=parseFloat(_68a[1]); 
    6259 this.styleStart[s]=_687
     6288_693=MochiKit.Style.getStyle(this.element,s); 
     6289_696=_693.match(/^([\+\-]?[0-9\.]+)(.*)$/); 
     6290_693=parseFloat(_696[1]); 
     6291this.styleStart[s]=_693
    62606292}else{ 
    62616293var c=MochiKit.Color.Color; 
    6262 _687=c.fromString(_687); 
    6263 if(_687){ 
     6294_693=c.fromString(_693); 
     6295if(_693){ 
    62646296this.units[s]="color"; 
    6265 this.styleEnd[s]=_687.toHexString(); 
    6266 _687=MochiKit.Style.getStyle(this.element,s); 
    6267 this.styleStart[s]=c.fromString(_687).toHexString(); 
     6297this.styleEnd[s]=_693.toHexString(); 
     6298_693=MochiKit.Style.getStyle(this.element,s); 
     6299this.styleStart[s]=c.fromString(_693).toHexString(); 
    62686300this.styleStart[s]=b.map(b.bind(function(i){ 
    62696301return parseInt(this.styleStart[s].slice(i*2+1,i*2+3),16); 
     
    62756307} 
    62766308} 
    6277 },update:function(_68e){ 
    6278 var _68f
     6309},update:function(_69a){ 
     6310var _69b
    62796311for(var s in this.styleStart){ 
    62806312if(this.units[s]=="color"){ 
    62816313var m="#"; 
    6282 var _692=this.styleStart[s]; 
     6314var _69e=this.styleStart[s]; 
    62836315var end=this.styleEnd[s]; 
    62846316MochiKit.Base.map(MochiKit.Base.bind(function(i){ 
    6285 m+=MochiKit.Color.toColorPart(Math.round(_692[i]+(end[i]-_692[i])*_68e)); 
     6317m+=MochiKit.Color.toColorPart(Math.round(_69e[i]+(end[i]-_69e[i])*_69a)); 
    62866318},this),[0,1,2]); 
    62876319this.element.style[s]=m; 
    62886320}else{ 
    6289 _68f=this.styleStart[s]+Math.round((this.styleEnd[s]-this.styleStart[s])*_68e*1000)/1000+this.units[s]; 
    6290 this.element.style[s]=_68f
     6321_69b=this.styleStart[s]+Math.round((this.styleEnd[s]-this.styleStart[s])*_69a*1000)/1000+this.units[s]; 
     6322this.element.style[s]=_69b
    62916323} 
    62926324} 
    62936325}}); 
    6294 MochiKit.Visual.fade=function(_695,_696){ 
     6326MochiKit.Visual.fade=function(_6a1,_6a2){ 
    62956327var s=MochiKit.Style; 
    6296 var _698=s.getStyle(_695,"opacity"); 
    6297 _696=MochiKit.Base.update({from:s.getStyle(_695,"opacity")||1,to:0,afterFinishInternal:function(_699){ 
    6298 if(_699.options.to!==0){ 
     6328var _6a4=s.getStyle(_6a1,"opacity"); 
     6329_6a2=MochiKit.Base.update({from:s.getStyle(_6a1,"opacity")||1,to:0,afterFinishInternal:function(_6a5){ 
     6330if(_6a5.options.to!==0){ 
    62996331return; 
    63006332} 
    6301 s.hideElement(_699.element); 
    6302 s.setStyle(_699.element,{"opacity":_698}); 
    6303 }},_696); 
    6304 return new MochiKit.Visual.Opacity(_695,_696); 
    6305 }; 
    6306 MochiKit.Visual.appear=function(_69a,_69b){ 
     6333s.hideElement(_6a5.element); 
     6334s.setStyle(_6a5.element,{"opacity":_6a4}); 
     6335}},_6a2); 
     6336return new MochiKit.Visual.Opacity(_6a1,_6a2); 
     6337}; 
     6338MochiKit.Visual.appear=function(_6a6,_6a7){ 
    63076339var s=MochiKit.Style; 
    63086340var v=MochiKit.Visual; 
    6309 _69b=MochiKit.Base.update({from:(s.getStyle(_69a,"display")=="none"?0:s.getStyle(_69a,"opacity")||0),to:1,afterFinishInternal:function(_69e){ 
    6310 v.forceRerendering(_69e.element); 
    6311 },beforeSetupInternal:function(_69f){ 
    6312 s.setStyle(_69f.element,{"opacity":_69f.options.from}); 
    6313 s.showElement(_69f.element); 
    6314 }},_69b); 
    6315 return new v.Opacity(_69a,_69b); 
    6316 }; 
    6317 MochiKit.Visual.puff=function(_6a0,_6a1){ 
     6341_6a7=MochiKit.Base.update({from:(s.getStyle(_6a6,"display")=="none"?0:s.getStyle(_6a6,"opacity")||0),to:1,afterFinishInternal:function(_6aa){ 
     6342v.forceRerendering(_6aa.element); 
     6343},beforeSetupInternal:function(_6ab){ 
     6344s.setStyle(_6ab.element,{"opacity":_6ab.options.from}); 
     6345s.showElement(_6ab.element); 
     6346}},_6a7); 
     6347return new v.Opacity(_6a6,_6a7); 
     6348}; 
     6349MochiKit.Visual.puff=function(_6ac,_6ad){ 
    63186350var s=MochiKit.Style; 
    63196351var v=MochiKit.Visual; 
    6320 _6a0=MochiKit.DOM.getElement(_6a0); 
    6321 var _6a4={position:s.getStyle(_6a0,"position"),top:_6a0.style.top,left:_6a0.style.left,width:_6a0.style.width,height:_6a0.style.height,opacity:s.getStyle(_6a0,"opacity")}; 
    6322 _6a1=MochiKit.Base.update({beforeSetupInternal:function(_6a5){ 
    6323 MochiKit.Position.absolutize(_6a5.effects[0].element); 
    6324 },afterFinishInternal:function(_6a6){ 
    6325 s.hideElement(_6a6.effects[0].element); 
    6326 s.setStyle(_6a6.effects[0].element,_6a4); 
    6327 },scaleContent:true,scaleFromCenter:true},_6a1); 
    6328 return new v.Parallel([new v.Scale(_6a0,200,{sync:true,scaleFromCenter:_6a1.scaleFromCenter,scaleContent:_6a1.scaleContent,restoreAfterFinish:true}),new v.Opacity(_6a0,{sync:true,to:0})],_6a1); 
    6329 }; 
    6330 MochiKit.Visual.blindUp=function(_6a7,_6a8){ 
     6352_6ac=MochiKit.DOM.getElement(_6ac); 
     6353var _6b0={position:s.getStyle(_6ac,"position"),top:_6ac.style.top,left:_6ac.style.left,width:_6ac.style.width,height:_6ac.style.height,opacity:s.getStyle(_6ac,"opacity")}; 
     6354_6ad=MochiKit.Base.update({beforeSetupInternal:function(_6b1){ 
     6355MochiKit.Position.absolutize(_6b1.effects[0].element); 
     6356},afterFinishInternal:function(_6b2){ 
     6357s.hideElement(_6b2.effects[0].element); 
     6358s.setStyle(_6b2.effects[0].element,_6b0); 
     6359},scaleContent:true,scaleFromCenter:true},_6ad); 
     6360return new v.Parallel([new v.Scale(_6ac,200,{sync:true,scaleFromCenter:_6ad.scaleFromCenter,scaleContent:_6ad.scaleContent,restoreAfterFinish:true}),new v.Opacity(_6ac,{sync:true,to:0})],_6ad); 
     6361}; 
     6362MochiKit.Visual.blindUp=function(_6b3,_6b4){ 
    63316363var d=MochiKit.DOM; 
    6332 _6a7=d.getElement(_6a7); 
    6333 var _6aa=d.makeClipping(_6a7); 
    6334 _6a8=MochiKit.Base.update({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(_6ab){ 
    6335 MochiKit.Style.hideElement(_6ab.element); 
    6336 d.undoClipping(_6ab.element,_6aa); 
    6337 }},_6a8); 
    6338 return new MochiKit.Visual.Scale(_6a7,0,_6a8); 
    6339 }; 
    6340 MochiKit.Visual.blindDown=function(_6ac,_6ad){ 
     6364_6b3=d.getElement(_6b3); 
     6365var _6b6=d.makeClipping(_6b3); 
     6366_6b4=MochiKit.Base.update({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(_6b7){ 
     6367MochiKit.Style.hideElement(_6b7.element); 
     6368d.undoClipping(_6b7.element,_6b6); 
     6369}},_6b4); 
     6370return new MochiKit.Visual.Scale(_6b3,0,_6b4); 
     6371}; 
     6372MochiKit.Visual.blindDown=function(_6b8,_6b9){ 
    63416373var d=MochiKit.DOM; 
    63426374var s=MochiKit.Style; 
    6343 _6ac=d.getElement(_6ac); 
    6344 var _6b0=s.getElementDimensions(_6ac); 
    6345 var _6b1
    6346 _6ad=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_6b0.h,originalWidth:_6b0.w},restoreAfterFinish:true,afterSetupInternal:function(_6b2){ 
    6347 _6b1=d.makeClipping(_6b2.element); 
    6348 s.setStyle(_6b2.element,{height:"0px"}); 
    6349 s.showElement(_6b2.element); 
    6350 },afterFinishInternal:function(_6b3){ 
    6351 d.undoClipping(_6b3.element,_6b1); 
    6352 }},_6ad); 
    6353 return new MochiKit.Visual.Scale(_6ac,100,_6ad); 
    6354 }; 
    6355 MochiKit.Visual.switchOff=function(_6b4,_6b5){ 
     6375_6b8=d.getElement(_6b8); 
     6376var _6bc=s.getElementDimensions(_6b8); 
     6377var _6bd
     6378_6b9=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_6bc.h,originalWidth:_6bc.w},restoreAfterFinish:true,afterSetupInternal:function(_6be){ 
     6379_6bd=d.makeClipping(_6be.element); 
     6380s.setStyle(_6be.element,{height:"0px"}); 
     6381s.showElement(_6be.element); 
     6382},afterFinishInternal:function(_6bf){ 
     6383d.undoClipping(_6bf.element,_6bd); 
     6384}},_6b9); 
     6385return new MochiKit.Visual.Scale(_6b8,100,_6b9); 
     6386}; 
     6387MochiKit.Visual.switchOff=function(_6c0,_6c1){ 
    63566388var d=MochiKit.DOM; 
    6357 _6b4=d.getElement(_6b4); 
    6358 var _6b7=MochiKit.Style.getStyle(_6b4,"opacity"); 
    6359 var _6b8
    6360 _6b5=MochiKit.Base.update({duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetupInternal:function(_6b9){ 
    6361 d.makePositioned(_6b9.element); 
    6362 _6b8=d.makeClipping(_6b9.element); 
    6363 },afterFinishInternal:function(_6ba){ 
    6364 MochiKit.Style.hideElement(_6ba.element); 
    6365 d.undoClipping(_6ba.element,_6b8); 
    6366 d.undoPositioned(_6ba.element); 
    6367 MochiKit.Style.setStyle(_6ba.element,{"opacity":_6b7}); 
    6368 }},_6b5); 
     6389_6c0=d.getElement(_6c0); 
     6390var _6c3=MochiKit.Style.getStyle(_6c0,"opacity"); 
     6391var _6c4
     6392_6c1=MochiKit.Base.update({duration:0.7,restoreAfterFinish:true,beforeSetupInternal:function(_6c5){ 
     6393d.makePositioned(_6c0); 
     6394_6c4=d.makeClipping(_6c0); 
     6395},afterFinishInternal:function(_6c6){ 
     6396MochiKit.Style.hideElement(_6c0); 
     6397d.undoClipping(_6c0,_6c4); 
     6398d.undoPositioned(_6c0); 
     6399MochiKit.Style.setStyle(_6c0,{"opacity":_6c3}); 
     6400}},_6c1); 
    63696401var v=MochiKit.Visual; 
    6370 return new v.appear(_6b4,{duration:0.4,from:0,transition:v.Transitions.flicker,afterFinishInternal:function(_6bc){ 
    6371 new v.Scale(_6bc.element,1,_6b5); 
    6372 }}); 
    6373 }; 
    6374 MochiKit.Visual.dropOut=function(_6bd,_6be){ 
     6402return new v.Sequence([new v.appear(_6c0,{sync:true,duration:0.57*_6c1.duration,from:0,transition:v.Transitions.flicker}),new v.Scale(_6c0,1,{sync:true,duration:0.43*_6c1.duration,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true})],_6c1); 
     6403}; 
     6404MochiKit.Visual.dropOut=function(_6c8,_6c9){ 
    63756405var d=MochiKit.DOM; 
    63766406var s=MochiKit.Style; 
    6377 _6bd=d.getElement(_6bd); 
    6378 var _6c1={top:s.getStyle(_6bd,"top"),left:s.getStyle(_6bd,"left"),opacity:s.getStyle(_6bd,"opacity")}; 
    6379 _6be=MochiKit.Base.update({duration:0.5,distance:100,beforeSetupInternal:function(_6c2){ 
    6380 d.makePositioned(_6c2.effects[0].element); 
    6381 },afterFinishInternal:function(_6c3){ 
    6382 s.hideElement(_6c3.effects[0].element); 
    6383 d.undoPositioned(_6c3.effects[0].element); 
    6384 s.setStyle(_6c3.effects[0].element,_6c1); 
    6385 }},_6be); 
     6407_6c8=d.getElement(_6c8); 
     6408var _6cc={top:s.getStyle(_6c8,"top"),left:s.getStyle(_6c8,"left"),opacity:s.getStyle(_6c8,"opacity")}; 
     6409_6c9=MochiKit.Base.update({duration:0.5,distance:100,beforeSetupInternal:function(_6cd){ 
     6410d.makePositioned(_6cd.effects[0].element); 
     6411},afterFinishInternal:function(_6ce){ 
     6412s.hideElement(_6ce.effects[0].element); 
     6413d.undoPositioned(_6ce.effects[0].element); 
     6414s.setStyle(_6ce.effects[0].element,_6cc); 
     6415}},_6c9); 
    63866416var v=MochiKit.Visual; 
    6387 return new v.Parallel([new v.Move(_6bd,{x:0,y:_6be.distance,sync:true}),new v.Opacity(_6bd,{sync:true,to:0})],_6be); 
    6388 }; 
    6389 MochiKit.Visual.shake=function(_6c5,_6c6){ 
     6417return new v.Parallel([new v.Move(_6c8,{x:0,y:_6c9.distance,sync:true}),new v.Opacity(_6c8,{sync:true,to:0})],_6c9); 
     6418}; 
     6419MochiKit.Visual.shake=function(_6d0,_6d1){ 
    63906420var d=MochiKit.DOM; 
    63916421var v=MochiKit.Visual; 
    63926422var s=MochiKit.Style; 
    6393 _6c5=d.getElement(_6c5); 
    6394 var _6ca={top:s.getStyle(_6c5,"top"),left:s.getStyle(_6c5,"left")}; 
    6395 _6c6=MochiKit.Base.update({x:-20,y:0,duration:0.05,afterFinishInternal:function(_6cb){ 
    6396 d.undoPositioned(_6cb.element); 
    6397 s.setStyle(_6cb.element,_6ca); 
    6398 }},_6c6); 
    6399 return new v.Move(_6c5,{x:20,y:0,duration:0.05,afterFinishInternal:function(_6cc){ 
    6400 new v.Move(_6cc.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(_6cd){ 
    6401 new v.Move(_6cd.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(_6ce){ 
    6402 new v.Move(_6ce.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(_6cf){ 
    6403 new v.Move(_6cf.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(_6d0){ 
    6404 new v.Move(_6d0.element,_6c6); 
     6423_6d0=d.getElement(_6d0); 
     6424var _6d5={top:s.getStyle(_6d0,"top"),left:s.getStyle(_6d0,"left")}; 
     6425_6d1=MochiKit.Base.update({x:-20,y:0,duration:0.05,afterFinishInternal:function(_6d6){ 
     6426d.undoPositioned(_6d6.element); 
     6427s.setStyle(_6d6.element,_6d5); 
     6428}},_6d1); 
     6429return new v.Move(_6d0,{x:20,y:0,duration:0.05,afterFinishInternal:function(_6d7){ 
     6430new v.Move(_6d7.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(_6d8){ 
     6431new v.Move(_6d8.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(_6d9){ 
     6432new v.Move(_6d9.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(_6da){ 
     6433new v.Move(_6da.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(_6db){ 
     6434new v.Move(_6db.element,_6d1); 
    64056435}}); 
    64066436}}); 
     
    64096439}}); 
    64106440}; 
    6411 MochiKit.Visual.slideDown=function(_6d1,_6d2){ 
    6412 var d=MochiKit.DOM; 
    6413 var b=MochiKit.Base; 
    6414 var s=MochiKit.Style; 
    6415 _6d1=d.getElement(_6d1); 
    6416 if(!_6d1.firstChild){ 
    6417 throw "MochiKit.Visual.slideDown must be used on a element with a child"; 
    6418 
    6419 d.removeEmptyTextNodes(_6d1); 
    6420 var _6d6=s.getStyle(_6d1.firstChild,"bottom")||0; 
    6421 var _6d7=s.getElementDimensions(_6d1); 
    6422 var _6d8; 
    6423 _6d2=b.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_6d7.h,originalWidth:_6d7.w},restoreAfterFinish:true,afterSetupInternal:function(_6d9){ 
    6424 d.makePositioned(_6d9.element); 
    6425 d.makePositioned(_6d9.element.firstChild); 
    6426 if(/Opera/.test(navigator.userAgent)){ 
    6427 s.setStyle(_6d9.element,{top:""}); 
    6428 
    6429 _6d8=d.makeClipping(_6d9.element); 
    6430 s.setStyle(_6d9.element,{height:"0px"}); 
    6431 s.showElement(_6d9.element); 
    6432 },afterUpdateInternal:function(_6da){ 
    6433 s.setStyle(_6da.element.firstChild,{bottom:(_6da.dims[0]-_6da.element.clientHeight)+"px"}); 
    6434 },afterFinishInternal:function(_6db){ 
    6435 d.undoClipping(_6db.element,_6d8); 
    6436 if(/MSIE/.test(navigator.userAgent)){ 
    6437 d.undoPositioned(_6db.element); 
    6438 d.undoPositioned(_6db.element.firstChild); 
    6439 }else{ 
    6440 d.undoPositioned(_6db.element.firstChild); 
    6441 d.undoPositioned(_6db.element); 
    6442 
    6443 s.setStyle(_6db.element.firstChild,{bottom:_6d6}); 
    6444 }},_6d2); 
    6445 return new MochiKit.Visual.Scale(_6d1,100,_6d2); 
    6446 }; 
    6447 MochiKit.Visual.slideUp=function(_6dc,_6dd){ 
     6441MochiKit.Visual.slideDown=function(_6dc,_6dd){ 
    64486442var d=MochiKit.DOM; 
    64496443var b=MochiKit.Base; 
     
    64516445_6dc=d.getElement(_6dc); 
    64526446if(!_6dc.firstChild){ 
    6453 throw "MochiKit.Visual.slideUp must be used on a element with a child"; 
     6447throw "MochiKit.Visual.slideDown must be used on a element with a child"; 
    64546448} 
    64556449d.removeEmptyTextNodes(_6dc); 
    6456 var _6e1=s.getStyle(_6dc.firstChild,"bottom"); 
    6457 var _6e2; 
    6458 _6dd=b.update({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(_6e3){ 
    6459 d.makePositioned(_6e3.element); 
    6460 d.makePositioned(_6e3.element.firstChild); 
     6450var _6e1=s.getStyle(_6dc.firstChild,"bottom")||0; 
     6451var _6e2=s.getElementDimensions(_6dc); 
     6452var _6e3; 
     6453_6dd=b.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_6e2.h,originalWidth:_6e2.w},restoreAfterFinish:true,afterSetupInternal:function(_6e4){ 
     6454d.makePositioned(_6e4.element); 
     6455d.makePositioned(_6e4.element.firstChild); 
    64616456if(/Opera/.test(navigator.userAgent)){ 
    6462 s.setStyle(_6e3.element,{top:""}); 
    6463 
    6464 _6e2=d.makeClipping(_6e3.element); 
    6465 s.showElement(_6e3.element); 
    6466 },afterUpdateInternal:function(_6e4){ 
    6467 s.setStyle(_6e4.element.firstChild,{bottom:(_6e4.dims[0]-_6e4.element.clientHeight)+"px"}); 
    6468 },afterFinishInternal:function(_6e5){ 
    6469 s.hideElement(_6e5.element); 
    6470 d.undoClipping(_6e5.element,_6e2); 
    6471 d.undoPositioned(_6e5.element.firstChild); 
    6472 d.undoPositioned(_6e5.element); 
    6473 s.setStyle(_6e5.element.firstChild,{bottom:_6e1}); 
     6457s.setStyle(_6e4.element,{top:""}); 
     6458
     6459_6e3=d.makeClipping(_6e4.element); 
     6460s.setStyle(_6e4.element,{height:"0px"}); 
     6461s.showElement(_6e4.element); 
     6462},afterUpdateInternal:function(_6e5){ 
     6463s.setStyle(_6e5.element.firstChild,{bottom:(_6e5.dims[0]-_6e5.element.clientHeight)+"px"}); 
     6464},afterFinishInternal:function(_6e6){ 
     6465d.undoClipping(_6e6.element,_6e3); 
     6466if(/MSIE/.test(navigator.userAgent)){ 
     6467d.undoPositioned(_6e6.element); 
     6468d.undoPositioned(_6e6.element.firstChild); 
     6469}else{ 
     6470d.undoPositioned(_6e6.element.firstChild); 
     6471d.undoPositioned(_6e6.element); 
     6472
     6473s.setStyle(_6e6.element.firstChild,{bottom:_6e1}); 
    64746474}},_6dd); 
    6475 return new MochiKit.Visual.Scale(_6dc,0,_6dd); 
    6476 }; 
    6477 MochiKit.Visual.squish=function(_6e6,_6e7){ 
     6475return new MochiKit.Visual.Scale(_6dc,100,_6dd); 
     6476}; 
     6477MochiKit.Visual.slideUp=function(_6e7,_6e8){ 
    64786478var d=MochiKit.DOM; 
    64796479var b=MochiKit.Base; 
    6480 var _6ea; 
    6481 _6e7=b.update({restoreAfterFinish:true,beforeSetupInternal:function(_6eb){ 
    6482 _6ea=d.makeClipping(_6eb.element); 
    6483 },afterFinishInternal:function(_6ec){ 
    6484 MochiKit.Style.hideElement(_6ec.element); 
    6485 d.undoClipping(_6ec.element,_6ea); 
    6486 }},_6e7); 
    6487 return new MochiKit.Visual.Scale(_6e6,/Opera/.test(navigator.userAgent)?1:0,_6e7); 
    6488 }; 
    6489 MochiKit.Visual.grow=function(_6ed,_6ee){ 
     6480var s=MochiKit.Style; 
     6481_6e7=d.getElement(_6e7); 
     6482if(!_6e7.firstChild){ 
     6483throw "MochiKit.Visual.slideUp must be used on a element with a child"; 
     6484
     6485d.removeEmptyTextNodes(_6e7); 
     6486var _6ec=s.getStyle(_6e7.firstChild,"bottom"); 
     6487var _6ed; 
     6488_6e8=b.update({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(_6ee){ 
     6489d.makePositioned(_6ee.element); 
     6490d.makePositioned(_6ee.element.firstChild); 
     6491if(/Opera/.test(navigator.userAgent)){ 
     6492s.setStyle(_6ee.element,{top:""}); 
     6493
     6494_6ed=d.makeClipping(_6ee.element); 
     6495s.showElement(_6ee.element); 
     6496},afterUpdateInternal:function(_6ef){ 
     6497s.setStyle(_6ef.element.firstChild,{bottom:(_6ef.dims[0]-_6ef.element.clientHeight)+"px"}); 
     6498},afterFinishInternal:function(_6f0){ 
     6499s.hideElement(_6f0.element); 
     6500d.undoClipping(_6f0.element,_6ed); 
     6501d.undoPositioned(_6f0.element.firstChild); 
     6502d.undoPositioned(_6f0.element); 
     6503s.setStyle(_6f0.element.firstChild,{bottom:_6ec}); 
     6504}},_6e8); 
     6505return new MochiKit.Visual.Scale(_6e7,0,_6e8); 
     6506}; 
     6507MochiKit.Visual.squish=function(_6f1,_6f2){ 
     6508var d=MochiKit.DOM; 
     6509var b=MochiKit.Base; 
     6510var _6f5; 
     6511_6f2=b.update({restoreAfterFinish:true,beforeSetupInternal:function(_6f6){ 
     6512_6f5=d.makeClipping(_6f6.element); 
     6513},afterFinishInternal:function(_6f7){ 
     6514MochiKit.Style.hideElement(_6f7.element); 
     6515d.undoClipping(_6f7.element,_6f5); 
     6516}},_6f2); 
     6517return new MochiKit.Visual.Scale(_6f1,/Opera/.test(navigator.userAgent)?1:0,_6f2); 
     6518}; 
     6519MochiKit.Visual.grow=function(_6f8,_6f9){ 
    64906520var d=MochiKit.DOM; 
    64916521var v=MochiKit.Visual; 
    64926522var s=MochiKit.Style; 
    6493 _6ed=d.getElement(_6ed); 
    6494 _6ee=MochiKit.Base.update({direction:"center",moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.full,scaleContent:true,scaleFromCenter:false},_6ee); 
    6495 var _6f2={top:_6ed.style.top,left:_6ed.style.left,height:_6ed.style.height,width:_6ed.style.width,opacity:s.getStyle(_6ed,"opacity")}; 
    6496 var dims=s.getElementDimensions(_6ed); 
    6497 var _6f4,_6f5
    6498 var _6f6,_6f7
    6499 switch(_6ee.direction){ 
     6523_6f8=d.getElement(_6f8); 
     6524_6f9=MochiKit.Base.update({direction:"center",moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.full,scaleContent:true,scaleFromCenter:false},_6f9); 
     6525var _6fd={top:_6f8.style.top,left:_6f8.style.left,height:_6f8.style.height,width:_6f8.style.width,opacity:s.getStyle(_6f8,"opacity")}; 
     6526var dims=s.getElementDimensions(_6f8); 
     6527var _6ff,_700
     6528var _701,_702
     6529switch(_6f9.direction){ 
    65006530case "top-left": 
    6501 _6f4=_6f5=_6f6=_6f7=0; 
     6531_6ff=_700=_701=_702=0; 
    65026532break; 
    65036533case "top-right": 
    6504 _6f4=dims.w; 
    6505 _6f5=_6f7=0; 
    6506 _6f6=-dims.w; 
     6534_6ff=dims.w; 
     6535_700=_702=0; 
     6536_701=-dims.w; 
    65076537break; 
    65086538case "bottom-left": 
    6509 _6f4=_6f6=0; 
    6510 _6f5=dims.h; 
    6511 _6f7=-dims.h; 
     6539_6ff=_701=0; 
     6540_700=dims.h; 
     6541_702=-dims.h; 
    65126542break; 
    65136543case "bottom-right": 
    6514 _6f4=dims.w; 
    6515 _6f5=dims.h; 
    6516 _6f6=-dims.w; 
    6517 _6f7=-dims.h; 
     6544_6ff=dims.w; 
     6545_700=dims.h; 
     6546_701=-dims.w; 
     6547_702=-dims.h; 
    65186548break; 
    65196549case "center": 
    6520 _6f4=dims.w/2; 
    6521 _6f5=dims.h/2; 
    6522 _6f6=-dims.w/2; 
    6523 _6f7=-dims.h/2; 
     6550_6ff=dims.w/2; 
     6551_700=dims.h/2; 
     6552_701=-dims.w/2; 
     6553_702=-dims.h/2; 
    65246554break; 
    65256555} 
    6526 var _6f8=MochiKit.Base.update({beforeSetupInternal:function(_6f9){ 
    6527 s.setStyle(_6f9.effects[0].element,{height:"0px"}); 
    6528 s.showElement(_6f9.effects[0].element); 
    6529 },afterFinishInternal:function(_6fa){ 
    6530 d.undoClipping(_6fa.effects[0].element); 
    6531 d.undoPositioned(_6fa.effects[0].element); 
    6532 s.setStyle(_6fa.effects[0].element,_6f2); 
    6533 }},_6ee); 
    6534 return new v.Move(_6ed,{x:_6f4,y:_6f5,duration:0.01,beforeSetupInternal:function(_6fb){ 
    6535 s.hideElement(_6fb.element); 
    6536 d.makeClipping(_6fb.element); 
    6537 d.makePositioned(_6fb.element); 
    6538 },afterFinishInternal:function(_6fc){ 
    6539 new v.Parallel([new v.Opacity(_6fc.element,{sync:true,to:1,from:0,transition:_6ee.opacityTransition}),new v.Move(_6fc.element,{x:_6f6,y:_6f7,sync:true,transition:_6ee.moveTransition}),new v.Scale(_6fc.element,100,{scaleMode:{originalHeight:dims.h,originalWidth:dims.w},sync:true,scaleFrom:/Opera/.test(navigator.userAgent)?1:0,transition:_6ee.scaleTransition,scaleContent:_6ee.scaleContent,scaleFromCenter:_6ee.scaleFromCenter,restoreAfterFinish:true})],_6f8); 
     6556var _703=MochiKit.Base.update({beforeSetupInternal:function(_704){ 
     6557s.setStyle(_704.effects[0].element,{height:"0px"}); 
     6558s.showElement(_704.effects[0].element); 
     6559},afterFinishInternal:function(_705){ 
     6560d.undoClipping(_705.effects[0].element); 
     6561d.undoPositioned(_705.effects[0].element); 
     6562s.setStyle(_705.effects[0].element,_6fd); 
     6563}},_6f9); 
     6564return new v.Move(_6f8,{x:_6ff,y:_700,duration:0.01,beforeSetupInternal:function(_706){ 
     6565s.hideElement(_706.element); 
     6566d.makeClipping(_706.element); 
     6567d.makePositioned(_706.element); 
     6568},afterFinishInternal:function(_707){ 
     6569new v.Parallel([new v.Opacity(_707.element,{sync:true,to:1,from:0,transition:_6f9.opacityTransition}),new v.Move(_707.element,{x:_701,y:_702,sync:true,transition:_6f9.moveTransition}),new v.Scale(_707.element,100,{scaleMode:{originalHeight:dims.h,originalWidth:dims.w},sync:true,scaleFrom:/Opera/.test(navigator.userAgent)?1:0,transition:_6f9.scaleTransition,scaleContent:_6f9.scaleContent,scaleFromCenter:_6f9.scaleFromCenter,restoreAfterFinish:true})],_703); 
    65406570}}); 
    65416571}; 
    6542 MochiKit.Visual.shrink=function(_6fd,_6fe){ 
     6572MochiKit.Visual.shrink=function(_708,_709){ 
    65436573var d=MochiKit.DOM; 
    65446574var v=MochiKit.Visual; 
    65456575var s=MochiKit.Style; 
    6546 _6fd=d.getElement(_6fd); 
    6547 _6fe=MochiKit.Base.update({direction:"center",moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.none,scaleContent:true,scaleFromCenter:false},_6fe); 
    6548 var _702={top:_6fd.style.top,left:_6fd.style.left,height:_6fd.style.height,width:_6fd.style.width,opacity:s.getStyle(_6fd,"opacity")}; 
    6549 var dims=s.getElementDimensions(_6fd); 
    6550 var _704,_705
    6551 switch(_6fe.direction){ 
     6576_708=d.getElement(_708); 
     6577_709=MochiKit.Base.update({direction:"center",moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.none,scaleContent:true,scaleFromCenter:false},_709); 
     6578var _70d={top:_708.style.top,left:_708.style.left,height:_708.style.height,width:_708.style.width,opacity:s.getStyle(_708,"opacity")}; 
     6579var dims=s.getElementDimensions(_708);