Changeset 1383

Show
Ignore:
Timestamp:
05/24/08 18:17:56 (5 months ago)
Author:
cito@online.de
Message:

Fixed problems with wrong sizes in visual effects, improved main visual effects demo.

Files:

Legend:

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

    r1382 r1383  
    137137 
    138138        return value == 'auto' ? null : value; 
     139    }, 
     140 
     141    /** @id MochiKit.Style.getElementWidth */ 
     142    getElementWidth: function (elem) { 
     143        var self = MochiKit.Style; 
     144        w = parseFloat(self.getStyle(elem, 'width')); 
     145        if (/Opera/.test(navigator.userAgent)) { 
     146            w -= (parseFloat(self.getStyle(elem, 'paddingLeft')) 
     147                + parseFloat(self.getStyle(elem, 'paddingRight')) 
     148                + parseFloat(self.getStyle(elem, 'borderLeft')) 
     149                + parseFloat(self.getStyle(elem, 'borderRight'))); 
     150        } 
     151        return w; 
     152    }, 
     153 
     154    /** @id MochiKit.Style.getElementHeight */ 
     155    getElementHeight: function (elem) { 
     156        var self = MochiKit.Style; 
     157        h = parseFloat(self.getStyle(elem, 'height')); 
     158        if (/Opera/.test(navigator.userAgent)) { 
     159            h -= (parseFloat(self.getStyle(elem, 'paddingTop')) 
     160                + parseFloat(self.getStyle(elem, 'paddingBottom')) 
     161                + parseFloat(self.getStyle(elem, 'borderTop')) 
     162                + parseFloat(self.getStyle(elem, 'borderBottom'))); 
     163        } 
     164        return h; 
    139165    }, 
    140166 
  • mochikit/trunk/MochiKit/Visual.js

    r1376 r1383  
    14001400    ***/ 
    14011401    var d = MochiKit.DOM; 
     1402    var s = MochiKit.Style; 
    14021403    element = d.getElement(element); 
    14031404    var elemClip = d.makeClipping(element); 
     
    14051406        scaleContent: false, 
    14061407        scaleX: false, 
     1408        scaleMode: {originalHeight: s.getElementHeight(element), 
     1409            originalWidth: s.getElementWidth(element)}, 
    14071410        restoreAfterFinish: true, 
    14081411        afterFinishInternal: function (effect) { 
     
    14111414        } 
    14121415    }, options); 
    1413  
    14141416    return new MochiKit.Visual.Scale(element, 0, options); 
    14151417}; 
     
    14251427    var s = MochiKit.Style; 
    14261428    element = d.getElement(element); 
    1427     var elementDimensions = s.getElementDimensions(element); 
    14281429    var elemClip; 
    14291430    options = MochiKit.Base.update({ 
     
    14311432        scaleX: false, 
    14321433        scaleFrom: 0, 
    1433         scaleMode: {originalHeight: elementDimensions.h
    1434                     originalWidth: elementDimensions.w}, 
     1434        scaleMode: {originalHeight: s.getElementHeight(element)
     1435            originalWidth: s.getElementWidth(element)}, 
    14351436        restoreAfterFinish: true, 
    14361437        afterSetupInternal: function (effect) { 
     
    14541455    ***/ 
    14551456    var d = MochiKit.DOM; 
     1457    var s = MochiKit.Style; 
    14561458    element = d.getElement(element); 
    14571459    var oldOpacity = MochiKit.Style.getStyle(element, 'opacity'); 
     
    14791481                     { sync: true, duration: 0.43 * options.duration, 
    14801482                       scaleFromCenter: true, scaleX: false, 
     1483                       scaleMode: {originalHeight: s.getElementHeight(element), 
     1484                         originalWidth: s.getElementWidth(element)}, 
    14811485                       scaleContent: false, restoreAfterFinish: true })], 
    14821486        options); 
     
    15741578    d.removeEmptyTextNodes(element); 
    15751579    var oldInnerBottom = s.getStyle(element.firstChild, 'bottom') || 0; 
    1576     var elementDimensions = s.getElementDimensions(element); 
    15771580    var elemClip; 
    15781581    options = b.update({ 
     
    15801583        scaleX: false, 
    15811584        scaleFrom: 0, 
    1582         scaleMode: {originalHeight: elementDimensions.h
    1583                     originalWidth: elementDimensions.w}, 
     1585        scaleMode: {originalHeight: s.getElementHeight(element)
     1586            originalWidth: s.getElementWidth(element)}, 
    15841587        restoreAfterFinish: true, 
    15851588        afterSetupInternal: function (effect) { 
     
    15951598        afterUpdateInternal: function (effect) { 
    15961599            s.setStyle(effect.element.firstChild, 
    1597                {bottom: (effect.dims[0] - effect.element.clientHeight) + 'px'}); 
     1600               {bottom: (effect.dims[0] - s.getElementHeight(effect.element)) + 'px'}); 
    15981601        }, 
    15991602        afterFinishInternal: function (effect) { 
     
    16071610                d.undoPositioned(effect.element); 
    16081611            } 
    1609             s.setStyle(effect.element.firstChild, 
    1610                                   {bottom: oldInnerBottom}); 
     1612            s.setStyle(effect.element.firstChild, {bottom: oldInnerBottom}); 
    16111613        } 
    16121614    }, options); 
     
    16371639        scaleContent: false, 
    16381640        scaleX: false, 
    1639         scaleMode: 'box', 
     1641        scaleMode: {originalHeight: s.getElementHeight(element), 
     1642            originalWidth: s.getElementWidth(element)}, 
    16401643        scaleFrom: 100, 
    16411644        restoreAfterFinish: true, 
     
    16511654        afterUpdateInternal: function (effect) { 
    16521655            s.setStyle(effect.element.firstChild, 
    1653             {bottom: (effect.dims[0] - effect.element.clientHeight) + 'px'}); 
     1656            {bottom: (effect.dims[0] - s.getElementHeight(effect.element)) + 'px'}); 
    16541657        }, 
    16551658        afterFinishInternal: function (effect) { 
     
    16751678    var d = MochiKit.DOM; 
    16761679    var b = MochiKit.Base; 
     1680    var s = MochiKit.Style; 
    16771681    var elemClip; 
    16781682    options = b.update({ 
    16791683        restoreAfterFinish: true, 
     1684        scaleMode: {originalHeight: s.getElementHeight(element), 
     1685            originalWidth: s.getElementWidth(element)}, 
    16801686        beforeSetupInternal: function (effect) { 
    16811687            elemClip = d.makeClipping(effect.element); 
     
    17171723        opacity: s.getStyle(element, 'opacity') 
    17181724    }; 
    1719  
    1720     var dims = s.getElementDimensions(element)
     1725    var dims = {h: s.getElementHeight(element), 
     1726        w: s.getElementWidth(element)}
    17211727    var initialMoveX, initialMoveY; 
    17221728    var moveX, moveY; 
     
    17821788                 }), 
    17831789                 new v.Scale(effect.element, 100, { 
    1784                         scaleMode: {originalHeight: dims.h, 
    1785                                     originalWidth: dims.w}, 
     1790                        scaleMode: {originalHeight: dims.h, originalWidth: dims.w}, 
    17861791                        sync: true, 
    17871792                        scaleFrom: /Opera/.test(navigator.userAgent) ? 1 : 0, 
     
    18241829    }; 
    18251830 
    1826     var dims = s.getElementDimensions(element); 
     1831    var dims = {h: s.getElementHeight(element), 
     1832        w: s.getElementWidth(element)}; 
    18271833    var moveX, moveY; 
    18281834 
     
    18691875         }), 
    18701876         new v.Scale(element, /Opera/.test(navigator.userAgent) ? 1 : 0, { 
     1877             scaleMode: {originalHeight: dims.h, originalWidth: dims.w}, 
    18711878             sync: true, transition: options.scaleTransition, 
    18721879             scaleContent: options.scaleContent, 
     
    19271934        scaleContent: false, 
    19281935        scaleX: false, 
     1936        scaleMode: {originalHeight: s.getElementHeight(element), 
     1937            originalWidth: s.getElementWidth(element)}, 
    19291938        afterFinishInternal: function (effect) { 
    19301939            new v.Scale(element, 1, { 
    19311940                scaleContent: false, 
    19321941                scaleY: false, 
     1942                scaleMode: {originalHeight: s.getElementHeight(element), 
     1943                    originalWidth: s.getElementWidth(element)}, 
    19331944                afterFinishInternal: function (effect) { 
    19341945                    s.hideElement(effect.element); 
  • mochikit/trunk/examples/effects/effects_combi.css

    r535 r1383  
    99    width: 120px; 
    1010    height: 120px; 
    11     background-color: #AAAAAA; 
     11        border: 1px solid #669; 
     12    background-color: #ccf; 
    1213    text-align: center; 
    1314    padding: 1em 0.2em 0.2em 0.2em; 
     
    1617    clear: both; 
    1718} 
    18 #reset { 
    19     position: absolute; 
    20     top: 600px; 
    21     left: 600px; 
    22 } 
    23 #demo-all { 
    24     position: absolute; 
    25     top: 600px; 
    26     left: 400px; 
    27     font-size: 1.0em; 
    28     width: 120px; 
    29     height: 120px; 
    30     background-color: #AAAAAA; 
    31     text-align: center; 
    32     padding: 1em 0.2em 0.2em 0.2em; 
    33 } 
    34  
  • mochikit/trunk/examples/effects/index.html

    r1375 r1383  
    99    <script src="../../MochiKit/Position.js" type="text/javascript"></script> 
    1010    <script src="../../MochiKit/Visual.js" type="text/javascript"></script> 
     11    <script type="text/javascript"> 
     12    function showEffect() { 
     13      f = document.forms[0]; 
     14      v = f['effect'].value; 
     15      if (v.substring(0, 1) == '+') { 
     16        v = "MochiKit.Visual.toggle('demo-all','" + v.substring(1) + "'"; 
     17      } else { 
     18        v = "MochiKit.Visual." + v + "('demo-all'"; 
     19      } 
     20      if (f['slow'].checked) { 
     21        v += ',{duration:4}'; 
     22      } 
     23      v += ')'; 
     24      var v = eval(v); 
     25    } 
     26    function resetBox() { 
     27      e = MochiKit.DOM.getElement('demo-all'); 
     28      MochiKit.Visual.appear(e); 
     29      MochiKit.Style.setStyle(e, {}); 
     30    } 
     31    </script> 
     32 
    1133</head> 
    1234 
    1335<body> 
    1436        <h3>Here are demos of all combination effects:</h3> 
    15  <div class="demo"> 
     37<div class="demo"> 
    1638      <div class="example" id="demo-effect-appear" onclick="MochiKit.Visual.appear('demo-effect-fade')"> 
    1739        <span>Click for Visual.appear demo</span> 
     
    2446      </div> 
    2547      <div class="example" id="demo-effect-blinddown" onclick="MochiKit.Visual.blindDown(this)"> 
    26         <div style="height:120px;"> 
    27  
    28           <span>Click for Visual.blindDown demo</span> 
    29         </div> 
     48        <span>Click for Visual.blindDown demo</span> 
    3049      </div> 
    3150      <div class="example" id="demo-effect-blindup" onclick="MochiKit.Visual.blindUp(this)"> 
     
    3554        <span>Click for Visual.switchOff demo</span> 
    3655      </div> 
    37       <div class="example" id="demo-effect-slidedown" onclick="MochiKit.Visual.slideDown(this)"><div style="height:120px;"> 
     56      <div class="example" id="demo-effect-slidedown" onclick="MochiKit.Visual.slideDown(this)"> 
    3857        <span>Click for Visual.slideDown demo</span> 
    39       </div></div> 
    40       <div class="example" id="demo-effect-slideup" onclick="MochiKit.Visual.slideUp(this)"><div style="height:120px;"> 
     58      </div> 
     59      <div class="example" id="demo-effect-slideup" onclick="MochiKit.Visual.slideUp(this)"> 
    4160        <span>Click for Visual.slideUp demo</span> 
    42       </div></div> 
     61      </div> 
    4362      <div class="example" id="demo-effect-dropout" onclick="MochiKit.Visual.dropOut(this)"> 
    4463        <span>Click for Visual.dropOut demo</span> 
     
    6887 
    6988        <h3>Here are all demos on one single element:</h3> 
    70  <ul class="demo"> 
    71     <li><span onclick="MochiKit.Visual.appear('demo-all')">Click for Visual.appear demo</span> 
    72         <span onclick="MochiKit.Visual.appear('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    73     <li><span onclick="MochiKit.Visual.fade('demo-all')">Click for Visual.fade demo</span> 
    74         <span onclick="MochiKit.Visual.fade('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    75     <li><span onclick="MochiKit.Visual.puff('demo-all')">Click for Visual.puff demo</span> 
    76         <span onclick="MochiKit.Visual.puff('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    77     <li><span onclick="MochiKit.Visual.blindDown('demo-all')">Click for Visual.blindDown demo</span> 
    78         <span onclick="MochiKit.Visual.blindDown('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    79     <li><span onclick="MochiKit.Visual.blindUp('demo-all')">Click for Visual.blindUp demo</span> 
    80         <span onclick="MochiKit.Visual.blindUp('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    81     <li><span onclick="MochiKit.Visual.switchOff('demo-all')">Click for Visual.switchOff demo</span> 
    82         <span onclick="MochiKit.Visual.switchOff('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    83     <li><span onclick="MochiKit.Visual.slideDown('demo-all')">Click for Visual.slideDown demo</span> 
    84         <span onclick="MochiKit.Visual.slideDown('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    85     <li><span onclick="MochiKit.Visual.slideUp('demo-all')">Click for Visual.slideUp demo</span> 
    86         <span onclick="MochiKit.Visual.slideUp('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    87     <li><span onclick="MochiKit.Visual.dropOut('demo-all')">Click for Visual.dropOut demo</span> 
    88         <span onclick="MochiKit.Visual.dropOut('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    89     <li><span onclick="MochiKit.Visual.shake('demo-all')">Click for Visual.shake demo</span> 
    90         <span onclick="MochiKit.Visual.shake('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    91     <li><span onclick="MochiKit.Visual.pulsate('demo-all')">Click for Visual.pulsate demo</span> 
    92         <span onclick="MochiKit.Visual.pulsate('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    93     <li><span onclick="MochiKit.Visual.squish('demo-all')">Click for Visual.squish demo</span> 
    94         <span onclick="MochiKit.Visual.squish('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    95     <li><span onclick="MochiKit.Visual.fold('demo-all')">Click for Visual.fold demo</span> 
    96         <span onclick="MochiKit.Visual.fold('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    97     <li><span onclick="MochiKit.Visual.grow('demo-all')">Click for Visual.grow demo</span> 
    98         <span onclick="MochiKit.Visual.grow('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    99     <li><span onclick="MochiKit.Visual.shrink('demo-all')">Click for Visual.shrink demo</span> 
    100         <span onclick="MochiKit.Visual.shrink('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    101     <li><span onclick="new MochiKit.Visual.Highlight('demo-all')">Click for Visual.Highlight demo</span> 
    102         <span onclick="new MochiKit.Visual.Highlight('demo-all',{duration:4})">&ndash; slow-motion</span></li> 
    103     <li><span onclick="MochiKit.Visual.toggle('demo-all','blind')">Click for Visual.toggle demo (blind)</span> 
    104         <span onclick="MochiKit.Visual.toggle('demo-all','blind',{duration:4})">&ndash; slow-motion</span></li> 
    105     <li><span onclick="MochiKit.Visual.toggle('demo-all','slide')">Click for Visual.toggle demo (slide)</span> 
    106         <span onclick="MochiKit.Visual.toggle('demo-all','slide',{duration:4})">&ndash; slow-motion</span></li> 
    107     <li><span onclick="MochiKit.Visual.toggle('demo-all','appear')">Click for Visual.toggle demo (appear)</span> 
    108         <span onclick="MochiKit.Visual.toggle('demo-all','appear',{duration:4})">&ndash; slow-motion</span></li> 
    109     <li><span onclick="MochiKit.Visual.toggle('demo-all','size')">Click for Visual.toggle demo (size)</span> 
    110         <span onclick="MochiKit.Visual.toggle('demo-all','size',{duration:4})">&ndash; slow-motion</span></li> 
    111 </ul> 
    112       <div id="demo-all"> 
    113         <span>Click on one of the left to see the effect</span> 
    114       </div> 
    115 <span id="reset" onclick="new MochiKit.Visual.appear('demo-all')">Click here to reset box</span> 
     89  <div id="demo-all" class="example" onclick="showEffect()"> 
     90    <span>Click to see the selected effect</span> 
     91  </div> 
     92<form action="" style="margin-left:140px;height:150px;"> 
     93  <fieldset style="border:none;"> 
     94  <select name="effect" size="1"> 
     95    <optgroup label="Single effects"> 
     96      <option value="appear">appear</option> 
     97      <option value="fade">fade</option> 
     98      <option value="puff">puff</option> 
     99      <option value="blindDown">blindDown</option> 
     100      <option value="blindUp">blindUp</option> 
     101      <option value="slideDown">slideDown</option> 
     102      <option value="slideUp">slideUp</option> 
     103      <option value="switchOff">switchOff</option> 
     104      <option value="dropOut">dropOut</option> 
     105      <option value="shake">shake</option> 
     106      <option value="pulsate">pulsate</option> 
     107      <option value="squish">squish</option> 
     108      <option value="fold">fold</option> 
     109      <option value="grow">grow</option> 
     110      <option value="shrink">shrink</option> 
     111      <option value="Highlight">Highlight</option> 
     112    </optgroup> 
     113    <optgroup label="Toggle effects"> 
     114      <option value="+appear">appear</option> 
     115      <option value="+blind">blind</option> 
     116      <option value="+slide">slide</option> 
     117      <option value="+size">size</option> 
     118    </optgroup> 
     119  </select> 
     120  &nbsp; 
     121  <input type="checkbox" name="slow"/> in slow-motion 
     122  </fieldset> 
     123  <fieldset style="border:none;"> 
     124  <input type="button" name="show" value="Click to show effect" onclick="showEffect()"/> 
     125  <input type="button" name="show" value="Click to reset box" onclick="resetBox()"/> 
     126  </fieldset> 
     127</form> 
    116128 
    117     <div
    118     Links to other samples: 
    119     <ul
     129<div class="demo"
     130        <h3>Links to other samples:</h3> 
     131  <ul style="float:left;margin-top:0;"
    120132    <li><a href="effects_bigslide.html">Big slide effects</a></li> 
    121133    <li><a href="effects_slide.html">Slide effects</a></li> 
     
    123135    <li><a href="effects_blindslide.html">Blind/Slide effects</a></li> 
    124136    <li><a href="effects_fadeappear.html">Fade/Appear effects</a></li> 
     137  </ul> 
     138  <ul style="float:left;margin-top:0"> 
    125139    <li><a href="effects_onload.html">Onload effects</a></li> 
    126140    <li><a href="effects_scroll.html">Scroll effects</a></li> 
     
    128142    <li><a href="effects_queue.html">Queue effects</a></li> 
    129143    <li><a href="effects_queue_limit.html">Queue limit effects</a></li> 
    130     </ul> 
    131     </div> 
     144  </ul> 
     145</div> 
     146 
     147<div class="demo"/> 
     148 
    132149</body> 
    133150</html> 
  • mochikit/trunk/packed/MochiKit/MochiKit.js

    r1382 r1383  
    39253925} 
    39263926return _416=="auto"?null:_416; 
    3927 },setStyle:function(elem,_419){ 
     3927},getElementWidth:function(elem){ 
     3928var self=MochiKit.Style; 
     3929w=parseFloat(self.getStyle(elem,"width")); 
     3930if(/Opera/.test(navigator.userAgent)){ 
     3931w-=(parseFloat(self.getStyle(elem,"paddingLeft"))+parseFloat(self.getStyle(elem,"paddingRight"))+parseFloat(self.getStyle(elem,"borderLeft"))+parseFloat(self.getStyle(elem,"borderRight"))); 
     3932
     3933return w; 
     3934},getElementHeight:function(elem){ 
     3935var self=MochiKit.Style; 
     3936h=parseFloat(self.getStyle(elem,"height")); 
     3937if(/Opera/.test(navigator.userAgent)){ 
     3938h-=(parseFloat(self.getStyle(elem,"paddingTop"))+parseFloat(self.getStyle(elem,"paddingBottom"))+parseFloat(self.getStyle(elem,"borderTop"))+parseFloat(self.getStyle(elem,"borderBottom"))); 
     3939
     3940return h; 
     3941},setStyle:function(elem,_41d){ 
    39283942elem=MochiKit.DOM.getElement(elem); 
    3929 for(var name in _419){ 
     3943for(var name in _41d){ 
    39303944switch(name){ 
    39313945case "opacity": 
    3932 MochiKit.Style.setOpacity(elem,_419[name]); 
     3946MochiKit.Style.setOpacity(elem,_41d[name]); 
    39333947break; 
    39343948case "float": 
     
    39363950case "styleFloat": 
    39373951if(typeof (elem.style["float"])!="undefined"){ 
    3938 elem.style["float"]=_419[name]; 
     3952elem.style["float"]=_41d[name]; 
    39393953}else{ 
    39403954if(typeof (elem.style.cssFloat)!="undefined"){ 
    3941 elem.style.cssFloat=_419[name]; 
    3942 }else{ 
    3943 elem.style.styleFloat=_419[name]; 
     3955elem.style.cssFloat=_41d[name]; 
     3956}else{ 
     3957elem.style.styleFloat=_41d[name]; 
    39443958} 
    39453959} 
    39463960break; 
    39473961default: 
    3948 elem.style[MochiKit.Base.camelize(name)]=_419[name]; 
     3962elem.style[MochiKit.Base.camelize(name)]=_41d[name]; 
    39493963} 
    39503964} 
     
    39533967var self=MochiKit.Style; 
    39543968if(o==1){ 
    3955 var _41e=/Gecko/.test(navigator.userAgent)&&!(/Konqueror|AppleWebKit|KHTML/.test(navigator.userAgent)); 
    3956 elem.style["opacity"]=_41e?0.999999:1; 
     3969var _422=/Gecko/.test(navigator.userAgent)&&!(/Konqueror|AppleWebKit|KHTML/.test(navigator.userAgent)); 
     3970elem.style["opacity"]=_422?0.999999:1; 
    39573971if(/MSIE/.test(navigator.userAgent)){ 
    39583972elem.style["filter"]=self.getStyle(elem,"filter").replace(/alpha\([^\)]*\)/gi,""); 
     
    39673981} 
    39683982} 
    3969 },getElementPosition:function(elem,_420){ 
     3983},getElementPosition:function(elem,_424){ 
    39703984var self=MochiKit.Style; 
    39713985var dom=MochiKit.DOM; 
     
    39763990var c=new self.Coordinates(0,0); 
    39773991var box=null; 
    3978 var _425=null; 
     3992var _429=null; 
    39793993var d=MochiKit.DOM._document; 
    39803994var de=d.documentElement; 
     
    39924006c.x+=elem.offsetLeft; 
    39934007c.y+=elem.offsetTop; 
    3994 _425=elem.offsetParent; 
    3995 if(_425!=elem){ 
    3996 while(_425){ 
    3997 c.x+=_425.offsetLeft; 
    3998 c.y+=_425.offsetTop; 
    3999 _425=_425.offsetParent; 
     4008_429=elem.offsetParent; 
     4009if(_429!=elem){ 
     4010while(_429){ 
     4011c.x+=_429.offsetLeft; 
     4012c.y+=_429.offsetTop; 
     4013_429=_429.offsetParent; 
    40004014} 
    40014015} 
     
    40064020} 
    40074021if(elem.parentNode){ 
    4008 _425=elem.parentNode; 
    4009 }else{ 
    4010 _425=null; 
    4011 } 
    4012 while(_425){ 
    4013 var _42a=_425.tagName.toUpperCase(); 
    4014 if(_42a==="BODY"||_42a==="HTML"){ 
     4022_429=elem.parentNode; 
     4023}else{ 
     4024_429=null; 
     4025} 
     4026while(_429){ 
     4027var _42e=_429.tagName.toUpperCase(); 
     4028if(_42e==="BODY"||_42e==="HTML"){ 
    40154029break; 
    40164030} 
    4017 var disp=self.getStyle(_425,"display"); 
     4031var disp=self.getStyle(_429,"display"); 
    40184032if(disp.search(/^inline|table-row.*$/i)){ 
    4019 c.x-=_425.scrollLeft; 
    4020 c.y-=_425.scrollTop; 
    4021 } 
    4022 if(_425.parentNode){ 
    4023 _425=_425.parentNode; 
    4024 }else{ 
    4025 _425=null; 
    4026 } 
    4027 } 
    4028 } 
    4029 } 
    4030 } 
    4031 if(typeof (_420)!="undefined"){ 
    4032 _420=arguments.callee(_420); 
    4033 if(_420){ 
    4034 c.x-=(_420.x||0); 
    4035 c.y-=(_420.y||0); 
     4033c.x-=_429.scrollLeft; 
     4034c.y-=_429.scrollTop; 
     4035} 
     4036if(_429.parentNode){ 
     4037_429=_429.parentNode; 
     4038}else{ 
     4039_429=null; 
     4040} 
     4041} 
     4042} 
     4043} 
     4044} 
     4045if(typeof (_424)!="undefined"){ 
     4046_424=arguments.callee(_424); 
     4047if(_424){ 
     4048c.x-=(_424.x||0); 
     4049c.y-=(_424.y||0); 
    40364050} 
    40374051} 
    40384052return c; 
    4039 },setElementPosition:function(elem,_42d,_42e){ 
     4053},setElementPosition:function(elem,_431,_432){ 
    40404054elem=MochiKit.DOM.getElement(elem); 
    4041 if(typeof (_42e)=="undefined"){ 
    4042 _42e="px"; 
    4043 } 
    4044 var _42f={}; 
    4045 var _430=MochiKit.Base.isUndefinedOrNull; 
    4046 if(!_430(_42d.x)){ 
    4047 _42f["left"]=_42d.x+_42e
    4048 } 
    4049 if(!_430(_42d.y)){ 
    4050 _42f["top"]=_42d.y+_42e
    4051 } 
    4052 MochiKit.DOM.updateNodeAttributes(elem,{"style":_42f}); 
     4055if(typeof (_432)=="undefined"){ 
     4056_432="px"; 
     4057} 
     4058var _433={}; 
     4059var _434=MochiKit.Base.isUndefinedOrNull; 
     4060if(!_434(_431.x)){ 
     4061_433["left"]=_431.x+_432
     4062} 
     4063if(!_434(_431.y)){ 
     4064_433["top"]=_431.y+_432
     4065} 
     4066MochiKit.DOM.updateNodeAttributes(elem,{"style":_433}); 
    40534067},getElementDimensions:function(elem){ 
    40544068var self=MochiKit.Style; 
     
    40664080} 
    40674081var s=elem.style; 
    4068 var _436=s.visibility; 
    4069 var _437=s.position; 
    4070 var _438=s.display; 
     4082var _43a=s.visibility; 
     4083var _43b=s.position; 
     4084var _43c=s.display; 
    40714085s.visibility="hidden"; 
    40724086s.position="absolute"; 
    40734087s.display=""; 
    4074 var _439=elem.offsetWidth; 
    4075 var _43a=elem.offsetHeight; 
    4076 s.display=_438
    4077 s.position=_437
    4078 s.visibility=_436
    4079 return new self.Dimensions(_439,_43a); 
    4080 },setElementDimensions:function(elem,_43c,_43d){ 
     4088var _43d=elem.offsetWidth; 
     4089var _43e=elem.offsetHeight; 
     4090s.display=_43c
     4091s.position=_43b
     4092s.visibility=_43a
     4093return new self.Dimensions(_43d,_43e); 
     4094},setElementDimensions:function(elem,_440,_441){ 
    40814095elem=MochiKit.DOM.getElement(elem); 
    4082 if(typeof (_43d)=="undefined"){ 
    4083 _43d="px"; 
    4084 } 
    4085 var _43e={}; 
    4086 var _43f=MochiKit.Base.isUndefinedOrNull; 
    4087 if(!_43f(_43c.w)){ 
    4088 _43e["width"]=_43c.w+_43d
    4089 } 
    4090 if(!_43f(_43c.h)){ 
    4091 _43e["height"]=_43c.h+_43d
    4092 } 
    4093 MochiKit.DOM.updateNodeAttributes(elem,{"style":_43e}); 
    4094 },setDisplayForElement:function(_440,_441){ 
    4095 var _442=MochiKit.Base.extend(null,arguments,1); 
    4096 var _443=MochiKit.DOM.getElement; 
    4097 for(var i=0;i<_442.length;i++){ 
    4098 _441=_443(_442[i]); 
    4099 if(_441){ 
    4100 _441.style.display=_440
     4096if(typeof (_441)=="undefined"){ 
     4097_441="px"; 
     4098} 
     4099var _442={}; 
     4100var _443=MochiKit.Base.isUndefinedOrNull; 
     4101if(!_443(_440.w)){ 
     4102_442["width"]=_440.w+_441
     4103} 
     4104if(!_443(_440.h)){ 
     4105_442["height"]=_440.h+_441
     4106} 
     4107MochiKit.DOM.updateNodeAttributes(elem,{"style":_442}); 
     4108},setDisplayForElement:function(_444,_445){ 
     4109var _446=MochiKit.Base.extend(null,arguments,1); 
     4110var _447=MochiKit.DOM.getElement; 
     4111for(var i=0;i<_446.length;i++){ 
     4112_445=_447(_446[i]); 
     4113if(_445){ 
     4114_445.style.display=_444
    41014115} 
    41024116} 
     
    41554169return this.__repr__(); 
    41564170}; 
    4157 MochiKit.LoggingPane.createLoggingPane=function(_44d){ 
     4171MochiKit.LoggingPane.createLoggingPane=function(_451){ 
    41584172var m=MochiKit.LoggingPane; 
    4159 _44d=!(!_44d); 
    4160 if(m._loggingPane&&m._loggingPane.inline!=_44d){ 
     4173_451=!(!_451); 
     4174if(m._loggingPane&&m._loggingPane.inline!=_451){ 
    41614175m._loggingPane.closePane(); 
    41624176m._loggingPane=null; 
    41634177} 
    41644178if(!m._loggingPane||m._loggingPane.closed){ 
    4165 m._loggingPane=new m.LoggingPane(_44d,MochiKit.Logging.logger); 
     4179m._loggingPane=new m.LoggingPane(_451,MochiKit.Logging.logger); 
    41664180} 
    41674181return m._loggingPane; 
    41684182}; 
    4169 MochiKit.LoggingPane.LoggingPane=function(_44f,_450){ 
    4170 if(typeof (_450)=="undefined"||_450===null){ 
    4171 _450=MochiKit.Logging.logger; 
    4172 } 
    4173 this.logger=_450
    4174 var _451=MochiKit.Base.update; 
    4175 var _452=MochiKit.Base.updatetree; 
     4183MochiKit.LoggingPane.LoggingPane=function(_453,_454){ 
     4184if(typeof (_454)=="undefined"||_454===null){ 
     4185_454=MochiKit.Logging.logger; 
     4186} 
     4187this.logger=_454
     4188var _455=MochiKit.Base.update; 
     4189var _456=MochiKit.Base.updatetree; 
    41764190var bind=MochiKit.Base.bind; 
    4177 var _454=MochiKit.Base.clone; 
     4191var _458=MochiKit.Base.clone; 
    41784192var win=window; 
    41794193var uid="_MochiKit_LoggingPane"; 
     
    41814195win=MochiKit.DOM.currentWindow(); 
    41824196} 
    4183 if(!_44f){ 
     4197if(!_453){ 
    41844198var url=win.location.href.split("?")[0].replace(/[#:\/.><&%-]/g,"_"); 
    41854199var name=uid+"_"+url; 
     
    41964210var doc=win.document; 
    41974211this.doc=doc; 
    4198 var _45b=doc.getElementById(uid); 
    4199 var _45c=!!_45b
    4200 if(_45b&&typeof (_45b.loggingPane)!="undefined"){ 
    4201 _45b.loggingPane.logger=this.logger; 
    4202 _45b.loggingPane.buildAndApplyFilter(); 
    4203 return _45b.loggingPane; 
    4204 } 
    4205 if(_45c){ 
    4206 var _45d
    4207 while((_45d=_45b.firstChild)){ 
    4208 _45b.removeChild(_45d); 
    4209 } 
    4210 }else{ 
    4211 _45b=doc.createElement("div"); 
    4212 _45b.id=uid; 
    4213 } 
    4214 _45b.loggingPane=this; 
    4215 var _45e=doc.createElement("input"); 
    4216 var _45f=doc.createElement("input"); 
    4217 var _460=doc.createElement("button"); 
    4218 var _461=doc.createElement("button"); 
    4219 var _462=doc.createElement("button"); 
    4220 var _463=doc.createElement("button"); 
    4221 var _464=doc.createElement("div"); 
    4222 var _465=doc.createElement("div"); 
    4223 var _466=uid+"_Listener"; 
    4224 this.colorTable=_454(this.colorTable); 
    4225 var _467=[]; 
    4226 var _468=null; 
    4227 var _469=function(msg){ 
    4228 var _46b=msg.level; 
    4229 if(typeof (_46b)=="number"){ 
    4230 _46b=MochiKit.Logging.LogLevel[_46b]; 
    4231 } 
    4232 return _46b
    4233 }; 
    4234 var _46c=function(msg){ 
     4212var _45f=doc.getElementById(uid); 
     4213var _460=!!_45f
     4214if(_45f&&typeof (_45f.loggingPane)!="undefined"){ 
     4215_45f.loggingPane.logger=this.logger; 
     4216_45f.loggingPane.buildAndApplyFilter(); 
     4217return _45f.loggingPane; 
     4218} 
     4219if(_460){ 
     4220var _461
     4221while((_461=_45f.firstChild)){ 
     4222_45f.removeChild(_461); 
     4223} 
     4224}else{ 
     4225_45f=doc.createElement("div"); 
     4226_45f.id=uid; 
     4227} 
     4228_45f.loggingPane=this; 
     4229var _462=doc.createElement("input"); 
     4230var _463=doc.createElement("input"); 
     4231var _464=doc.createElement("button"); 
     4232var _465=doc.createElement("button"); 
     4233var _466=doc.createElement("button"); 
     4234var _467=doc.createElement("button"); 
     4235var _468=doc.createElement("div"); 
     4236var _469=doc.createElement("div"); 
     4237var _46a=uid+"_Listener"; 
     4238this.colorTable=_458(this.colorTable); 
     4239var _46b=[]; 
     4240var _46c=null; 
     4241var _46d=function(msg){ 
     4242var _46f=msg.level; 
     4243if(typeof (_46f)=="number"){ 
     4244_46f=MochiKit.Logging.LogLevel[_46f]; 
     4245} 
     4246return _46f
     4247}; 
     4248var _470=function(msg){ 
    42354249return msg.info.join(" "); 
    42364250}; 
    4237 var _46e=bind(function(msg){ 
    4238 var _470=_469(msg); 
    4239 var text=_46c(msg); 
    4240 var c=this.colorTable[_470]; 
     4251var _472=bind(function(msg){ 
     4252var _474=_46d(msg); 
     4253var text=_470(msg); 
     4254var c=this.colorTable[_474]; 
    42414255var p=doc.createElement("span"); 
    4242 p.className="MochiKit-LogMessage MochiKit-LogLevel-"+_470
     4256p.className="MochiKit-LogMessage MochiKit-LogLevel-"+_474
    42434257p.style.cssText="margin: 0px; white-space: -moz-pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; white-space: pre-line; word-wrap: break-word; wrap-option: emergency; color: "+c; 
    4244 p.appendChild(doc.createTextNode(_470+": "+text)); 
    4245 _465.appendChild(p); 
    4246 _465.appendChild(doc.createElement("br")); 
    4247 if(_464.offsetHeight>_464.scrollHeight){ 
    4248 _464.scrollTop=0; 
    4249 }else{ 
    4250 _464.scrollTop=_464.scrollHeight; 
     4258p.appendChild(doc.createTextNode(_474+": "+text)); 
     4259_469.appendChild(p); 
     4260_469.appendChild(doc.createElement("br")); 
     4261if(_468.offsetHeight>_468.scrollHeight){ 
     4262_468.scrollTop=0; 
     4263}else{ 
     4264_468.scrollTop=_468.scrollHeight; 
    42514265} 
    42524266},this); 
    4253 var _474=function(msg){ 
    4254 _467[_467.length]=msg; 
    4255 _46e(msg); 
    4256 }; 
    4257 var _476=function(){ 
    4258 var _477,_478
     4267var _478=function(msg){ 
     4268_46b[_46b.length]=msg; 
     4269_472(msg); 
     4270}; 
     4271var _47a=function(){ 
     4272var _47b,_47c
    42594273try{ 
    4260 _477=new RegExp(_45e.value); 
    4261 _478=new RegExp(_45f.value); 
     4274_47b=new RegExp(_462.value); 
     4275_47c=new RegExp(_463.value); 
    42624276} 
    42634277catch(e){ 
     
    42664280} 
    42674281return function(msg){ 
    4268 return (_477.test(_469(msg))&&_478.test(_46c(msg))); 
    4269 }; 
    4270 }; 
    4271 var _47a=function(){ 
    4272 while(_465.firstChild){ 
    4273 _465.removeChild(_465.firstChild); 
    4274 } 
    4275 }; 
    4276 var _47b=function(){ 
    4277 _467=[]; 
    4278 _47a(); 
    4279 }; 
    4280 var _47c=bind(function(){ 
     4282return (_47b.test(_46d(msg))&&_47c.test(_470(msg))); 
     4283}; 
     4284}; 
     4285var _47e=function(){ 
     4286while(_469.firstChild){ 
     4287_469.removeChild(_469.firstChild); 
     4288} 
     4289}; 
     4290var _47f=function(){ 
     4291_46b=[]; 
     4292_47e(); 
     4293}; 
     4294var _480=bind(function(){ 
    42814295if(this.closed){ 
    42824296return; 
     
    42864300MochiKit.LoggingPane._loggingPane=null; 
    42874301} 
    4288 this.logger.removeListener(_466); 
     4302this.logger.removeListener(_46a); 
    42894303try{ 
    42904304try{ 
    4291 _45b.loggingPane=null; 
     4305_45f.loggingPane=null; 
    42924306} 
    42934307catch(e){ 
    42944308logFatal("Bookmarklet was closed incorrectly."); 
    42954309} 
    4296 if(_44f){ 
    4297 _45b.parentNode.removeChild(_45b); 
     4310if(_453){ 
     4311_45f.parentNode.removeChild(_45f); 
    42984312}else{ 
    42994313this.win.close(); 
     
    43034317} 
    43044318},this); 
    4305 var _47d=function(){ 
    4306 _47a(); 
    4307 for(var i=0;i<_467.length;i++){ 
    4308 var msg=_467[i]; 
    4309 if(_468===null||_468(msg)){ 
    4310 _46e(msg); 
     4319var _481=function(){ 
     4320_47e(); 
     4321for(var i=0;i<_46b.length;i++){ 
     4322var msg=_46b[i]; 
     4323if(_46c===null||_46c(msg)){ 
     4324_472(msg); 
    43114325} 
    43124326} 
    43134327}; 
    43144328this.buildAndApplyFilter=function(){ 
    4315 _468=_476(); 
    4316 _47d(); 
    4317 this.logger.removeListener(_466); 
    4318 this.logger.addListener(_466,_468,_474); 
    4319 }; 
    4320 var _480=bind(function(){ 
    4321 _467=this.logger.getMessages(); 
    4322 _47d(); 
     4329_46c=_47a(); 
     4330_481(); 
     4331this.logger.removeListener(_46a); 
     4332this.logger.addListener(_46a,_46c,_478); 
     4333}; 
     4334var _484=bind(function(){ 
     4335_46b=this.logger.getMessages(); 
     4336_481(); 
    43234337},this); 
    4324 var _481=bind(function(_482){ 
    4325 _482=_482||window.event; 
    4326 key=_482.which||_482.keyCode; 
     4338var _485=bind(function(_486){ 
     4339_486=_486||window.event; 
     4340key=_486.which||_486.keyCode; 
    43274341if(key==13){ 
    43284342this.buildAndApplyFilter(); 
    43294343} 
    43304344},this); 
    4331 var _483="display: block; z-index: 1000; left: 0px; bottom: 0px; position: fixed; width: 100%; background-color: white; font: "+this.logFont; 
    4332 if(_44f){ 
    4333 _483+="; height: 10em; border-top: 2px solid black"; 
    4334 }else{ 
    4335 _483+="; height: 100%;"; 
    4336 } 
    4337 _45b.style.cssText=_483
    4338 if(!_45c){ 
    4339 doc.body.appendChild(_45b); 
    4340 } 
    4341 _483={"cssText":"width: 33%; display: inline; font: "+this.logFont}; 
    4342 _452(_45e,{"value":"FATAL|ERROR|WARNING|INFO|DEBUG","onkeypress":_481,"style":_483}); 
    4343 _45b.appendChild(_45e); 
    4344 _452(_45f,{"value":".*","onkeypress":_481,"style":_483}); 
    4345 _45b.appendChild(_45f); 
    4346 _483="width: 8%; display:inline; font: "+this.logFont; 
    4347 _460.appendChild(doc.createTextNode("Filter")); 
    4348 _460.onclick=bind("buildAndApplyFilter",this); 
    4349 _460.style.cssText=_483
    4350 _45b.appendChild(_460); 
    4351 _461.appendChild(doc.createTextNode("Load")); 
    4352 _461.onclick=_480
    4353 _461.style.cssText=_483
    4354 _45b.appendChild(_461); 
    4355 _462.appendChild(doc.createTextNode("Clear")); 
    4356 _462.onclick=_47b
    4357 _462.style.cssText=_483
    4358 _45b.appendChild(_462); 
    4359 _463.appendChild(doc.createTextNode("Close")); 
    4360 _463.onclick=_47c
    4361 _463.style.cssText=_483
    4362 _45b.appendChild(_463); 
    4363 _464.style.cssText="overflow: auto; width: 100%"; 
    4364 _465.style.cssText="width: 100%; height: "+(_44f?"8em":"100%"); 
    4365 _464.appendChild(_465); 
    4366 _45b.appendChild(_464); 
     4345var _487="display: block; z-index: 1000; left: 0px; bottom: 0px; position: fixed; width: 100%; background-color: white; font: "+this.logFont; 
     4346if(_453){ 
     4347_487+="; height: 10em; border-top: 2px solid black"; 
     4348}else{ 
     4349_487+="; height: 100%;"; 
     4350} 
     4351_45f.style.cssText=_487
     4352if(!_460){ 
     4353doc.body.appendChild(_45f); 
     4354} 
     4355_487={"cssText":"width: 33%; display: inline; font: "+this.logFont}; 
     4356_456(_462,{"value":"FATAL|ERROR|WARNING|INFO|DEBUG","onkeypress":_485,"style":_487}); 
     4357_45f.appendChild(_462); 
     4358_456(_463,{"value":".*","onkeypress":_485,"style":_487}); 
     4359_45f.appendChild(_463); 
     4360_487="width: 8%; display:inline; font: "+this.logFont; 
     4361_464.appendChild(doc.createTextNode("Filter")); 
     4362_464.onclick=bind("buildAndApplyFilter",this); 
     4363_464.style.cssText=_487
     4364_45f.appendChild(_464); 
     4365_465.appendChild(doc.createTextNode("Load")); 
     4366_465.onclick=_484
     4367_465.style.cssText=_487
     4368_45f.appendChild(_465); 
     4369_466.appendChild(doc.createTextNode("Clear")); 
     4370_466.onclick=_47f
     4371_466.style.cssText=_487
     4372_45f.appendChild(_466); 
     4373_467.appendChild(doc.createTextNode("Close")); 
     4374_467.onclick=_480
     4375_467.style.cssText=_487
     4376_45f.appendChild(_467); 
     4377_468.style.cssText="overflow: auto; width: 100%"; 
     4378_469.style.cssText="width: 100%; height: "+(_453?"8em":"100%"); 
     4379_468.appendChild(_469); 
     4380_45f.appendChild(_468); 
    43674381this.buildAndApplyFilter(); 
    4368 _480(); 
    4369 if(_44f){ 
     4382_484(); 
     4383if(_453){ 
    43704384this.win=undefined; 
    43714385}else{ 
    43724386this.win=win; 
    43734387} 
    4374 this.inline=_44f
    4375 this.closePane=_47c
     4388this.inline=_453
     4389this.closePane=_480
    43764390this.closed=false; 
    43774391return this; 
     
    43964410return this.__repr__(); 
    43974411}; 
    4398 MochiKit.Color.Color=function(red,_485,blue,_487){ 
    4399 if(typeof (_487)=="undefined"||_487===null){ 
    4400 _487=1; 
    4401 } 
    4402 this.rgb={r:red,g:_485,b:blue,a:_487}; 
    4403 }; 
    4404 MochiKit.Color.Color.prototype={__class__:MochiKit.Color.Color,colorWithAlpha:function(_488){ 
     4412MochiKit.Color.Color=function(red,_489,blue,_48b){ 
     4413if(typeof (_48b)=="undefined"||_48b===null){ 
     4414_48b=1; 
     4415} 
     4416this.rgb={r:red,g:_489,b:blue,a:_48b}; 
     4417}; 
     4418MochiKit.Color.Color.prototype={__class__:MochiKit.Color.Color,colorWithAlpha:function(_48c){ 
    44054419var rgb=this.rgb; 
    44064420var m=MochiKit.Color; 
    4407 return m.Color.fromRGB(rgb.r,rgb.g,rgb.b,_488); 
     4421return m.Color.fromRGB(rgb.r,rgb.g,rgb.b,_48c); 
    44084422},colorWithHue:function(hue){ 
    44094423var hsl=this.asHSL(); 
     
    44114425var m=MochiKit.Color; 
    44124426return m.Color.fromHSL(hsl); 
    4413 },colorWithSaturation:function(_48e){ 
     4427},colorWithSaturation:function(_492){ 
    44144428var hsl=this.asHSL(); 
    4415 hsl.s=_48e
     4429hsl.s=_492
    44164430var m=MochiKit.Color; 
    44174431return m.Color.fromHSL(hsl); 
    4418 },colorWithLightness:function(_491){ 
     4432},colorWithLightness:function(_495){ 
    44194433var hsl=this.asHSL(); 
    4420 hsl.l=_491
     4434hsl.l=_495
    44214435var m=MochiKit.Color; 
    44224436return m.Color.fromHSL(hsl); 
    4423 },darkerColorWithLevel:function(_494){ 
     4437},darkerColorWithLevel:function(_498){ 
    44244438var hsl=this.asHSL(); 
    4425 hsl.l=Math.max(hsl.l-_494,0); 
     4439hsl.l=Math.max(hsl.l-_498,0); 
    44264440var m=MochiKit.Color; 
    44274441return m.Color.fromHSL(hsl); 
    4428 },lighterColorWithLevel:function(_497){ 
     4442},lighterColorWithLevel:function(_49b){ 
    44294443var hsl=this.asHSL(); 
    4430 hsl.l=Math.min(hsl.l+_497,1); 
     4444hsl.l=Math.min(hsl.l+_49b,1); 
    44314445var m=MochiKit.Color; 
    44324446return m.Color.fromHSL(hsl); 
    4433 },blendedColor:function(_49a,_49b){ 
    4434 if(typeof (_49b)=="undefined"||_49b===null){ 
    4435 _49b=0.5; 
    4436 } 
    4437 var sf=1-_49b
     4447},blendedColor:function(_49e,_