Changeset 296

Show
Ignore:
Timestamp:
10/09/05 11:25:42 (3 years ago)
Author:
bob
Message:

truncToFixed and roundToFixed

Files:

Legend:

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

    r273 r296  
    9797}; 
    9898 
     99MochiKit.Format.truncToFixed = function (aNumber, precision) { 
     100    aNumber = Math.floor(aNumber * Math.pow(10, precision)); 
     101    var res = (aNumber * Math.pow(10, -precision)).toFixed(precision); 
     102    if (res.charAt(0) == ".") { 
     103        res = "0" + res; 
     104    } 
     105    return res; 
     106}; 
     107 
     108MochiKit.Format.roundToFixed = function (aNumber, precision) { 
     109    return MochiKit.Format.truncToFixed( 
     110        aNumber + 0.5 * Math.pow(10, -precision), 
     111        precision 
     112    ); 
     113}; 
     114 
    99115MochiKit.Format.percentFormat = function (someFloat) { 
    100116    /*** 
     
    107123 
    108124MochiKit.Format.EXPORT = [ 
     125    "truncToFixed", 
     126    "roundToFixed", 
    109127    "twoDigitAverage", 
    110128    "twoDigitFloat", 
  • mochikit/trunk/doc/html/MochiKit/Format.html

    r244 r296  
    1717<h1><a name="synopsis">Synopsis</a></h1> 
    1818<pre class="literal-block"> 
     19assert( truncToFixed(0.12345, 4) == &quot;0.1234&quot; ); 
     20assert( roundToFixed(0.12345, 4) == &quot;0.1235&quot; ); 
    1921assert( twoDigitAverage(1, 0) == &quot;0&quot; ); 
    2022assert( twoDigitFloat(1.2345) == &quot;1.23&quot; ); 
     
    3840<div class="section" id="functions"> 
    3941<h2><a name="functions">Functions</a></h2> 
     42<p><tt class="docutils literal"><span class="pre">truncToFixed(aNumber,</span> <span class="pre">precision)</span></tt>:</p> 
     43<blockquote> 
     44<p>Return a string representation of <tt class="docutils literal"><span class="pre">aNumber</span></tt>, truncated to <tt class="docutils literal"><span class="pre">precision</span></tt> 
     45digits with trailing zeros.  This is similar to 
     46<tt class="docutils literal"><span class="pre">aNumber.toFixed(precision)</span></tt>, but this truncates rather than rounds and 
     47has implementation consistent behavior for numbers less than 1. 
     48Specifically, <tt class="docutils literal"><span class="pre">truncToFixed(aNumber,</span> <span class="pre">precision)</span></tt> will always have a 
     49preceding <tt class="docutils literal"><span class="pre">0</span></tt> for numbers less than <tt class="docutils literal"><span class="pre">1</span></tt>.</p> 
     50<p>For example, <tt class="docutils literal"><span class="pre">toFixed(0.1357,</span> <span class="pre">2)</span></tt> returns <tt class="docutils literal"><span class="pre">0.13</span></tt>.</p> 
     51</blockquote> 
     52<p><tt class="docutils literal"><span class="pre">roundToFixed(aNumber,</span> <span class="pre">precision)</span></tt>:</p> 
     53<blockquote> 
     54<p>Return a string representation of <tt class="docutils literal"><span class="pre">aNumber</span></tt>, rounded to <tt class="docutils literal"><span class="pre">precision</span></tt> 
     55digits with trailing zeros.  This is similar to 
     56<tt class="docutils literal"><span class="pre">Number.toFixed(aNumber,</span> <span class="pre">precision)</span></tt>, but this has implementation 
     57consistent rounding behavior (some versions of Safari round 0.5 down!) 
     58and also includes preceding <tt class="docutils literal"><span class="pre">0</span></tt> for numbers less than <tt class="docutils literal"><span class="pre">1</span></tt> (Safari, 
     59again).</p> 
     60<p>For example, <tt class="docutils literal"><span class="pre">roundToFixed(0.1357,</span> <span class="pre">2)</span></tt> returns <tt class="docutils literal"><span class="pre">0.14</span></tt> on every 
     61supported platform, where some return <tt class="docutils literal"><span class="pre">.13</span></tt> for <tt class="docutils literal"><span class="pre">(0.1357).toFixed(2)</span></tt>.</p> 
     62</blockquote> 
    4063<p><tt class="docutils literal"><span class="pre">twoDigitAverage(numerator,</span> <span class="pre">denominator)</span></tt>:</p> 
    4164<blockquote> 
  • mochikit/trunk/doc/html/MochiKit/VersionHistory.html

    r294 r296  
    1010<body> 
    1111<div class="document"> 
     12<p>2005-XX-XX      v1.00</p> 
     13<ul class="simple"> 
     14<li>Added truncToFixed(aNumber, precision) and roundToFixed(aNumber, precision) 
     15to MochiKit.Format</li> 
     16</ul> 
    1217<p>2005-10-08      v0.90</p> 
    1318<ul class="simple"> 
  • mochikit/trunk/doc/html/MochiKit/index.html

    r294 r296  
    3737<div class="section" id="version-history"> 
    3838<h1><a name="version-history">Version History</a></h1> 
     39<p>2005-XX-XX      v1.00</p> 
     40<ul class="simple"> 
     41<li>Added truncToFixed(aNumber, precision) and roundToFixed(aNumber, precision) 
     42to MochiKit.Format</li> 
     43</ul> 
    3944<p>2005-10-08      v0.90</p> 
    4045<ul class="simple"> 
  • mochikit/trunk/doc/rst/MochiKit/Format.rst

    r244 r296  
    1212:: 
    1313 
     14   assert( truncToFixed(0.12345, 4) == "0.1234" ); 
     15   assert( roundToFixed(0.12345, 4) == "0.1235" ); 
    1416   assert( twoDigitAverage(1, 0) == "0" ); 
    1517   assert( twoDigitFloat(1.2345) == "1.23" ); 
     
    3941--------- 
    4042 
     43``truncToFixed(aNumber, precision)``: 
     44 
     45    Return a string representation of ``aNumber``, truncated to ``precision`` 
     46    digits with trailing zeros.  This is similar to 
     47    ``aNumber.toFixed(precision)``, but this truncates rather than rounds and 
     48    has implementation consistent behavior for numbers less than 1. 
     49    Specifically, ``truncToFixed(aNumber, precision)`` will always have a 
     50    preceding ``0`` for numbers less than ``1``. 
     51 
     52    For example, ``toFixed(0.1357, 2)`` returns ``0.13``. 
     53 
     54 
     55``roundToFixed(aNumber, precision)``: 
     56 
     57    Return a string representation of ``aNumber``, rounded to ``precision`` 
     58    digits with trailing zeros.  This is similar to 
     59    ``Number.toFixed(aNumber, precision)``, but this has implementation 
     60    consistent rounding behavior (some versions of Safari round 0.5 down!) 
     61    and also includes preceding ``0`` for numbers less than ``1`` (Safari, 
     62    again). 
     63 
     64    For example, ``roundToFixed(0.1357, 2)`` returns ``0.14`` on every 
     65    supported platform, where some return ``.13`` for ``(0.1357).toFixed(2)``. 
     66 
     67 
    4168``twoDigitAverage(numerator, denominator)``: 
    4269 
     
    6491    whitespace.  ``chars`` should be a string suitable for use in a ``RegExp`` 
    6592    ``[character set]``. 
     93 
    6694 
    6795``rstrip(str, chars="\s")``: 
  • mochikit/trunk/doc/rst/MochiKit/VersionHistory.rst

    r294 r296  
     12005-XX-XX      v1.00 
     2 
     3- Added truncToFixed(aNumber, precision) and roundToFixed(aNumber, precision) 
     4  to MochiKit.Format 
     5 
    162005-10-08      v0.90 
    27 
  • mochikit/trunk/packed/MochiKit/MochiKit.js

    r293 r296  
    16881688return self.rstrip(self.lstrip(str,_208),_208); 
    16891689}; 
    1690 MochiKit.Format.percentFormat=function(_209){ 
    1691 return MochiKit.Format.twoDigitFloat(100*_209)+"%"; 
    1692 }; 
    1693 MochiKit.Format.EXPORT=["twoDigitAverage","twoDigitFloat","percentFormat","lstrip","rstrip","strip"]; 
     1690MochiKit.Format.truncToFixed=function(_209,_210){ 
     1691_209=Math.floor(_209*Math.pow(10,_210)); 
     1692var res=(_209*Math.pow(10,-_210)).toFixed(_210); 
     1693if(res.charAt(0)=="."){ 
     1694res="0"+res; 
     1695
     1696return res; 
     1697}; 
     1698MochiKit.Format.roundToFixed=function(_211,_212){ 
     1699return MochiKit.Format.truncToFixed(_211+0.5*Math.pow(10,-_212),_212); 
     1700}; 
     1701MochiKit.Format.percentFormat=function(_213){ 
     1702return MochiKit.Format.twoDigitFloat(100*_213)+"%"; 
     1703}; 
     1704MochiKit.Format.EXPORT=["truncToFixed","roundToFixed","twoDigitAverage","twoDigitFloat","percentFormat","lstrip","rstrip","strip"]; 
    16941705MochiKit.Format.EXPORT_OK=[]; 
    16951706MochiKit.Format.EXPORT_TAGS={":all":MochiKit.Format.EXPORT,":common":MochiKit.Format.EXPORT}; 
     
    17421753return this.__repr__(); 
    17431754}; 
    1744 MochiKit.Async.AlreadyCalledError=function(_210){ 
    1745 this.deferred=_210
     1755MochiKit.Async.AlreadyCalledError=function(_214){ 
     1756this.deferred=_214
    17461757}; 
    17471758MochiKit.Async.AlreadyCalledError.prototype=new MochiKit.Base.NamedError("MochiKit.Async.AlreadyCalledError"); 
    1748 MochiKit.Async.CancelledError=function(_211){ 
    1749 this.deferred=_211
     1759MochiKit.Async.CancelledError=function(_215){ 
     1760this.deferred=_215
    17501761}; 
    17511762MochiKit.Async.CancelledError.prototype=new MochiKit.Base.NamedError("MochiKit.Async.CancelledError"); 
     
    17681779}; 
    17691780MochiKit.Async.XMLHttpRequestError.prototype=new MochiKit.Base.NamedError("MochiKit.Async.XMLHttpRequestError"); 
    1770 MochiKit.Async.Deferred=function(_213){ 
     1781MochiKit.Async.Deferred=function(_217){ 
    17711782this.chain=[]; 
    17721783this.id=this._nextId(); 
     
    17741785this.paused=0; 
    17751786this.results=[null,null]; 
    1776 this.canceller=_213
     1787this.canceller=_217
    17771788this.silentlyCancelled=false; 
    17781789}; 
    17791790MochiKit.Async.Deferred.prototype.repr=function(){ 
    1780 var _214
     1791var _218
    17811792if(this.fired==-1){ 
    1782 _214="unfired"; 
     1793_218="unfired"; 
    17831794}else{ 
    17841795if(this.fired==0){ 
    1785 _214="success"; 
    1786 }else{ 
    1787 _214="error"; 
    1788 } 
    1789 } 
    1790 return "Deferred("+this.id+", "+_214+")"; 
     1796_218="success"; 
     1797}else{ 
     1798_218="error"; 
     1799} 
     1800} 
     1801return "Deferred("+this.id+", "+_218+")"; 
    17911802}; 
    17921803MochiKit.Async.Deferred.prototype.toString=MochiKit.Base.forward("repr"); 
     
    18681879}; 
    18691880MochiKit.Async.Deferred.prototype._fire=function(){ 
    1870 var _217=this.chain; 
    1871 var _218=this.fired; 
    1872 var res=this.results[_218]; 
     1881var _221=this.chain; 
     1882var _222=this.fired; 
     1883var res=this.results[_222]; 
    18731884var self=this; 
    18741885var cb=null; 
    1875 while(_217.length>0&&this.paused==0){ 
    1876 var pair=_217.shift(); 
    1877 var f=pair[_218]; 
     1886while(_221.length>0&&this.paused==0){ 
     1887var pair=_221.shift(); 
     1888var f=pair[_222]; 
    18781889if(f==null){ 
    18791890continue; 
     
    18811892try{ 
    18821893res=f(res); 
    1883 _218=((res instanceof Error)?1:0); 
     1894_222=((res instanceof Error)?1:0); 
    18841895if(res instanceof MochiKit.Async.Deferred){ 
    18851896cb=function(res){ 
     
    18901901} 
    18911902catch(err){ 
    1892 _218=1; 
     1903_222=1; 
    18931904res=err; 
    18941905} 
    18951906} 
    1896 this.fired=_218
    1897 this.results[_218]=res; 
     1907this.fired=_222
     1908this.results[_222]=res; 
    18981909if(cb&&this.paused){ 
    18991910res.addBoth(cb); 
     
    19031914return eval("("+req.responseText+")"); 
    19041915}; 
    1905 MochiKit.Async.succeed=function(_220){ 
     1916MochiKit.Async.succeed=function(_224){ 
    19061917var d=new MochiKit.Async.Deferred(); 
    19071918d.callback.apply(d,arguments); 
    19081919return d; 
    19091920}; 
    1910 MochiKit.Async.fail=function(_221){ 
     1921MochiKit.Async.fail=function(_225){ 
    19111922var d=new MochiKit.Async.Deferred(); 
    19121923d.errback.apply(d,arguments); 
     
    19161927var self=arguments.callee; 
    19171928if(!self.XMLHttpRequest){ 
    1918 var _222=[function(){ 
     1929var _226=[function(){ 
    19191930return new XMLHttpRequest(); 
    19201931},function(){ 
     
    19271938throw new MochiKit.Async.BrowserComplianceError("Browser does not support XMLHttpRequest"); 
    19281939}]; 
    1929 for(var i=0;i<_222.length;i++){ 
    1930 var func=_222[i]; 
     1940for(var i=0;i<_226.length;i++){ 
     1941var func=_226[i]; 
    19311942try{ 
    19321943self.XMLHttpRequest=func; 
     
    19391950return self.XMLHttpRequest(); 
    19401951}; 
    1941 MochiKit.Async.sendXMLHttpRequest=function(req,_223){ 
    1942 if(typeof (_223)=="undefined"){ 
     1952MochiKit.Async.sendXMLHttpRequest=function(req,_227){ 
     1953if(typeof (_227)=="undefined"){ 
    19431954send=null; 
    19441955} 
    1945 var _224=function(){ 
     1956var _228=function(){ 
    19461957try{ 
    19471958req.onreadystatechange=null; 
     
    19571968req.abort(); 
    19581969}; 
    1959 var d=new MochiKit.Async.Deferred(_224); 
    1960 var _225=function(){ 
     1970var d=new MochiKit.Async.Deferred(_228); 
     1971var _229=function(){ 
    19611972if(req.readyState==4){ 
    19621973try{ 
     
    19711982} 
    19721983} 
    1973 var _226=null; 
     1984var _230=null; 
    19741985try{ 
    1975 _226=req.status; 
    1976 if(!_226&&MochiKit.Base.isNotEmpty(req.responseText)){ 
    1977 _226=304; 
     1986_230=req.status; 
     1987if(!_230&&MochiKit.Base.isNotEmpty(req.responseText)){ 
     1988_230=304; 
    19781989} 
    19791990} 
    19801991catch(e){ 
    19811992} 
    1982 if(_226==200||_226==304){ 
     1993if(_230==200||_230==304){ 
    19831994d.callback(req); 
    19841995}else{ 
     
    19922003}; 
    19932004try{ 
    1994 req.onreadystatechange=_225
    1995 req.send(_223); 
     2005req.onreadystatechange=_229
     2006req.send(_227); 
    19962007} 
    19972008catch(e){ 
     
    20152026return d; 
    20162027}; 
    2017 MochiKit.Async.wait=function(_229,_230){ 
     2028MochiKit.Async.wait=function(_233,_234){ 
    20182029var d=new MochiKit.Async.Deferred(); 
    20192030var bind=MochiKit.Base.bind; 
    2020 var _231=MochiKit.Base.partial; 
    2021 if(typeof (_230)!="undefined"){ 
     2031var _235=MochiKit.Base.partial; 
     2032if(typeof (_234)!="undefined"){ 
    20222033d.addCallback(function(){ 
    2023 return _230
     2034return _234
    20242035}); 
    20252036} 
    2026 var _232=setTimeout(bind(d.callback,d),Math.floor(_229*1000)); 
    2027 d.canceller=_231(clearTimeout,_232); 
     2037var _236=setTimeout(bind(d.callback,d),Math.floor(_233*1000)); 
     2038d.canceller=_235(clearTimeout,_236); 
    20282039return d; 
    20292040}; 
    2030 MochiKit.Async.callLater=function(_233,func){ 
     2041MochiKit.Async.callLater=function(_237,func){ 
    20312042var m=MochiKit.Base; 
    2032 var _234=m.partial.apply(null,m.extend(null,arguments,1)); 
    2033 return MochiKit.Async.wait(_233).addCallback(function(res){ 
    2034 return _234(); 
     2043var _238=m.partial.apply(null,m.extend(null,arguments,1)); 
     2044return MochiKit.Async.wait(_237).addCallback(function(res){ 
     2045return _238(); 
    20352046}); 
    20362047}; 
     
    20782089MochiKit.DOM.EXPORT=["registerDOMConverter","coerceToDOM","createDOM","createDOMFunc","updateNodeAttributes","appendChildNodes","replaceChildNodes","swapDOM","H1","H2","H3","BR","HR","LABEL","TEXTAREA","FORM","P","UL","OL","LI","TD","TR","THEAD","TBODY","TFOOT","TABLE","TH","INPUT","SPAN","A","DIV","IMG","getElement","$","getElementsByTagAndClassName","addToCallStack","addLoadEvent","focusOnLoad","setElementClass","toggleElementClass","addElementClass","removeElementClass","swapElementClass","hasElementClass","escapeHTML","toHTML","emitHTML","setDisplayForElement","hideElement","showElement","scrapeText"]; 
    20792090MochiKit.DOM.EXPORT_OK=["domConverters"]; 
    2080 MochiKit.DOM.registerDOMConverter=function(name,_235,wrap,_237){ 
    2081 MochiKit.DOM.domConverters.register(name,_235,wrap,_237); 
     2091MochiKit.DOM.registerDOMConverter=function(name,_239,wrap,_241){ 
     2092MochiKit.DOM.domConverters.register(name,_239,wrap,_241); 
    20822093}; 
    20832094MochiKit.DOM.coerceToDOM=function(node,ctx){ 
    20842095var iter=MochiKit.Iter.iter; 
    2085 var _240=MochiKit.Iter.repeat; 
     2096var _244=MochiKit.Iter.repeat; 
    20862097var imap=MochiKit.Iter.imap; 
    2087 var _242=MochiKit.DOM.domConverters; 
    2088 var _243=MochiKit.DOM.coerceToDOM; 
    2089 var _244=MochiKit.Base.NotFound; 
     2098var _246=MochiKit.DOM.domConverters; 
     2099var _247=MochiKit.DOM.coerceToDOM; 
     2100var _248=MochiKit.Base.NotFound; 
    20902101while(true){ 
    20912102if(typeof (node)=="undefined"||node==null){ 
     
    21092120continue; 
    21102121} 
    2111 var _245=null; 
     2122var _249=null; 
    21122123try{ 
    2113 _245=iter(node); 
     2124_249=iter(node); 
    21142125} 
    21152126catch(e){ 
    21162127} 
    2117 if(_245){ 
    2118 return imap(_243,_245,_240(ctx)); 
     2128if(_249){ 
     2129return imap(_247,_249,_244(ctx)); 
    21192130} 
    21202131try{ 
    2121 node=_242.match(node,ctx); 
     2132node=_246.match(node,ctx); 
    21222133continue; 
    21232134} 
    21242135catch(e){ 
    2125 if(e!=_244){ 
     2136if(e!=_248){ 
    21262137throw e; 
    21272138} 
     
    21312142return undefined; 
    21322143}; 
    2133 MochiKit.DOM.updateNodeAttributes=function(node,_246){ 
     2144MochiKit.DOM.updateNodeAttributes=function(node,_250){ 
    21342145var elem=node; 
    21352146if(typeof (node)=="string"){ 
    21362147elem=MochiKit.DOM.getElement(node); 
    21372148} 
    2138 if(_246){ 
     2149if(_250){ 
    21392150if(MochiKit.DOM.attributeArray.compliant){ 
    2140 for(var k in _246){ 
    2141 var v=_246[k]; 
     2151for(var k in _250){ 
     2152var v=_250[k]; 
    21422153if(k.substring(0,2)=="on"){ 
    21432154if(typeof (v)=="string"){ 
     
    21462157elem[k]=v; 
    21472158}else{ 
    2148 elem.setAttribute(k,_246[k]); 
    2149 } 
    2150 } 
    2151 }else{ 
    2152 var _247={"class":"className","checked":"defaultChecked"}; 
    2153 for(var k in _246){ 
    2154 var v=_246[k]; 
    2155 var _248=_247[k]; 
    2156 if(typeof (_248)=="string"){ 
    2157 elem[_248]=v; 
     2159elem.setAttribute(k,_250[k]); 
     2160} 
     2161} 
     2162}else{ 
     2163var _251={"class":"className","checked":"defaultChecked"}; 
     2164for(var k in _250){ 
     2165var v=_250[k]; 
     2166var _252=_251[k]; 
     2167if(typeof (_252)=="string"){ 
     2168elem[_252]=v; 
    21582169}else{ 
    21592170if(k.substring(0,2)=="on"){ 
     
    21762187elem=MochiKit.DOM.getElement(node); 
    21772188} 
    2178 var _249=[MochiKit.DOM.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)]; 
    2179 var _250=MochiKit.Iter.iextend; 
    2180 while(_249.length){ 
    2181 var n=_249.shift(); 
     2189var _253=[MochiKit.DOM.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)]; 
     2190var _254=MochiKit.Iter.iextend; 
     2191while(_253.length){ 
     2192var n=_253.shift(); 
    21822193if(typeof (n)=="undefined"||n==null){ 
    21832194}else{ 
     
    21852196elem.appendChild(n); 
    21862197}else{ 
    2187 _250(_249,n); 
     2198_254(_253,n); 
    21882199} 
    21892200} 
     
    21972208arguments[0]=elem; 
    21982209} 
    2199 var _251
    2200 while((_251=elem.firstChild)){ 
    2201 elem.removeChild(_251); 
     2210var _255
     2211while((_255=elem.firstChild)){ 
     2212elem.removeChild(_255); 
    22022213} 
    22032214if(arguments.length<2){ 
     
    22072218} 
    22082219}; 
    2209 MochiKit.DOM.createDOM=function(name,_252){ 
     2220MochiKit.DOM.createDOM=function(name,_256){ 
    22102221var elem; 
    22112222if(typeof (name)=="string"){ 
     
    22142225elem=name; 
    22152226} 
    2216 if(_252){ 
    2217 MochiKit.DOM.updateNodeAttributes(elem,_252); 
     2227if(_256){ 
     2228MochiKit.DOM.updateNodeAttributes(elem,_256); 
    22182229} 
    22192230if(arguments.length<=2){ 
     
    22292240MochiKit.DOM.swapDOM=function(dest,src){ 
    22302241dest=MochiKit.DOM.getElement(dest); 
    2231 var _256=dest.parentNode; 
     2242var _260=dest.parentNode; 
    22322243if(src){ 
    22332244src=MochiKit.DOM.getElement(src); 
    2234 _256.replaceChild(src,dest); 
    2235 }else{ 
    2236 _256.removeChild(dest); 
     2245_260.replaceChild(src,dest); 
     2246}else{ 
     2247_260.removeChild(dest); 
    22372248} 
    22382249return src; 
     
    22452256} 
    22462257}; 
    2247 MochiKit.DOM.getElementsByTagAndClassName=function(_258,_259,_260){ 
    2248 if(typeof (_258)=="undefined"||_258==null){ 
    2249 _258="*"; 
    2250 } 
    2251 if(typeof (_260)=="undefined"||_260==null){ 
    2252 _260=document; 
    2253 } 
    2254 _260=MochiKit.DOM.getElement(_260); 
    2255 var _261=_260.getElementsByTagName(_258)||document.all; 
    2256 if(typeof (_259)=="undefined"||_259==null){ 
    2257 return _261
    2258 } 
    2259 var _262=[]; 
    2260 for(var i=0;i<_261.length;i++){ 
    2261 var _263=_261[i]; 
    2262 var _264=_263.className.split(" "); 
    2263 for(var j=0;j<_264.length;j++){ 
    2264 if(_264[j]==_259){ 
    2265 _262.push(_263); 
     2258MochiKit.DOM.getElementsByTagAndClassName=function(_262,_263,_264){ 
     2259if(typeof (_262)=="undefined"||_262==null){ 
     2260_262="*"; 
     2261} 
     2262if(typeof (_264)=="undefined"||_264==null){ 
     2263_264=document; 
     2264} 
     2265_264=MochiKit.DOM.getElement(_264); 
     2266var _265=_264.getElementsByTagName(_262)||document.all; 
     2267if(typeof (_263)=="undefined"||_263==null){ 
     2268return _265
     2269} 
     2270var _266=[]; 
     2271for(var i=0;i<_265.length;i++){ 
     2272var _267=_265[i]; 
     2273var _268=_267.className.split(" "); 
     2274for(var j=0;j<_268.length;j++){ 
     2275if(_268[j]==_263){ 
     2276_266.push(_267); 
    22662277break; 
    22672278} 
    22682279} 
    22692280} 
    2270 return _262
    2271 }; 
    2272 MochiKit.DOM.addToCallStack=function(_265,path,func,once){ 
    2273 var _268=_265[path]; 
    2274 var _269=_268
    2275 if(!(typeof (_268)=="function"&&_268.callStack)){ 
    2276 var _269=function(){ 
    2277 var _270=_269.callStack; 
    2278 for(var i=0;i<_270.length;i++){ 
    2279 if(_270[i].apply(this,arguments)===false){ 
     2281return _266
     2282}; 
     2283MochiKit.DOM.addToCallStack=function(_269,path,func,once){ 
     2284var _272=_269[path]; 
     2285var _273=_272
     2286if(!(typeof (_272)=="function"&&_272.callStack)){ 
     2287var _273=function(){ 
     2288var _274=_273.callStack; 
     2289for(var i=0;i<_274.length;i++){ 
     2290if(_274[i].apply(this,arguments)===false){ 
    22802291break; 
    22812292} 
     
    22832294if(once){ 
    22842295try{ 
    2285 _265[path]=null; 
     2296_269[path]=null; 
    22862297} 
    22872298catch(e){ 
     
    22892300} 
    22902301}; 
    2291 _269.callStack=[]; 
    2292 if(typeof (_268)=="function"){ 
    2293 _269.callStack.push(_268); 
    2294 } 
    2295 _265[path]=_269
    2296 } 
    2297 _269.callStack.push(func); 
     2302_273.callStack=[]; 
     2303if(typeof (_272)=="function"){ 
     2304_273.callStack.push(_272); 
     2305} 
     2306_269[path]=_273
     2307} 
     2308_273.callStack.push(func); 
    22982309}; 
    22992310MochiKit.DOM.addLoadEvent=function(func){ 
    23002311MochiKit.DOM.addToCallStack(window,"onload",func,true); 
    23012312}; 
    2302 MochiKit.DOM.focusOnLoad=function(_271){ 
     2313MochiKit.DOM.focusOnLoad=function(_275){ 
    23032314MochiKit.DOM.addLoadEvent(function(){ 
    2304 _271=MochiKit.DOM.getElement(_271); 
    2305 if(_271){ 
    2306 _271.focus(); 
     2315_275=MochiKit.DOM.getElement(_275); 
     2316if(_275){ 
     2317_275.focus(); 
    23072318} 
    23082319}); 
    23092320}; 
    2310 MochiKit.DOM.setElementClass=function(_272,_273){ 
    2311 var obj=MochiKit.DOM.getElement(_272); 
     2321MochiKit.DOM.setElementClass=function(_276,_277){ 
     2322var obj=MochiKit.DOM.getElement(_276); 
    23122323if(MochiKit.DOM.attributeArray.compliant){ 
    2313 obj.setAttribute("class",_273); 
    2314 }else{ 
    2315 obj.setAttribute("className",_273); 
    2316 } 
    2317 }; 
    2318 MochiKit.DOM.toggleElementClass=function(_274){ 
    2319 var _275=MochiKit.DOM.getElement; 
    2320 var _276=MochiKit.DOM.addElementClass; 
    2321 var _277=MochiKit.DOM.removeElementClass; 
     2324obj.setAttribute("class",_277); 
     2325}else{ 
     2326obj.setAttribute("className",_277); 
     2327} 
     2328}; 
     2329MochiKit.DOM.toggleElementClass=function(_278){ 
     2330var _279=MochiKit.DOM.getElement; 
     2331var _280=MochiKit.DOM.addElementClass; 
     2332var _281=MochiKit.DOM.removeElementClass; 
    23222333for(var i=1;i<arguments.length;i++){ 
    2323 var obj=_275(arguments[i]); 
    2324 if(!_276(obj,_274)){ 
    2325 _277(obj,_274); 
    2326 
    2327 
    2328 }; 
    2329 MochiKit.DOM.addElementClass=function(_278,_279){ 
    2330 var obj=MochiKit.DOM.getElement(_278); 
    2331 var cls=obj.className; 
    2332 if(cls.length==0){ 
    2333 MochiKit.DOM.setElementClass(obj,_279); 
    2334 return true; 
    2335 
    2336 if(cls==_279){ 
    2337 return false; 
    2338 
    2339 var _281=obj.className.split(" "); 
    2340 for(var i=0;i<_281.length;i++){ 
    2341 if(_281[i]==_279){ 
    2342 return false; 
    2343 
    2344 
    2345 MochiKit.DOM.setElementClass(obj,cls+" "+_279); 
    2346 return true; 
    2347 }; 
    2348 MochiKit.DOM.removeElementClass=function(_282,_283){ 
     2334var obj=_279(arguments[i]); 
     2335if(!_280(obj,_278)){ 
     2336_281(obj,_278); 
     2337
     2338
     2339}; 
     2340MochiKit.DOM.addElementClass=function(_282,_283){ 
    23492341var obj=MochiKit.DOM.getElement(_282); 
    23502342var cls=obj.className; 
    23512343if(cls.length==0){ 
     2344MochiKit.DOM.setElementClass(obj,_283); 
     2345return true; 
     2346} 
     2347if(cls==_283){ 
    23522348return false; 
    23532349} 
    2354 if(cls==_283){ 
     2350var _285=obj.className.split(" "); 
     2351for(var i=0;i<_285.length;i++){ 
     2352if(_285[i]==_283){ 
     2353return false; 
     2354
     2355
     2356MochiKit.DOM.setElementClass(obj,cls+" "+_283); 
     2357return true; 
     2358}; 
     2359MochiKit.DOM.removeElementClass=function(_286,_287){ 
     2360var obj=MochiKit.DOM.getElement(_286); 
     2361var cls=obj.className; 
     2362if(cls.length==0){ 
     2363return false; 
     2364
     2365if(cls==_287){ 
    23552366MochiKit.DOM.setElementClass(obj,""); 
    23562367return true; 
    23572368} 
    2358 var _284=obj.className.split(" "); 
    2359 for(var i=0;i<_284.length;i++){ 
    2360 if(_284[i]==_283){ 
    2361 _284.splice(i,1); 
    2362 MochiKit.DOM.setElementClass(obj,_284.join(" ")); 
     2369var _288=obj.className.split(" "); 
     2370for(var i=0;i<_288.length;i++){ 
     2371if(_288[i]==_287){ 
     2372_288.splice(i,1); 
     2373MochiKit.DOM.setElementClass(obj,_288.join(" ")); 
    23632374return true; 
    23642375} 
     
    23662377return false; 
    23672378}; 
    2368 MochiKit.DOM.swapElementClass=function(_285,_286,_287){ 
    2369 var obj=MochiKit.DOM.getElement(_285); 
    2370 var res=MochiKit.DOM.removeElementClass(obj,_286); 
     2379MochiKit.DOM.swapElementClass=function(_289,_290,_291){ 
     2380var obj=MochiKit.DOM.getElement(_289); 
     2381var res=MochiKit.DOM.removeElementClass(obj,_290); 
    23712382if(res){ 
    2372 MochiKit.DOM.addElementClass(obj,_287); 
     2383MochiKit.DOM.addElementClass(obj,_291); 
    23732384} 
    23742385return res; 
    23752386}; 
    2376 MochiKit.DOM.hasElementClass=function(_288,_289){ 
    2377 var obj=MochiKit.DOM.getElement(_288); 
    2378 var _290=obj.className.split(" "); 
     2387MochiKit.DOM.hasElementClass=function(_292,_293){ 
     2388var obj=MochiKit.DOM.getElement(_292); 
     2389var _294=obj.className.split(" "); 
    23792390for(var i=1;i<arguments.length;i++){ 
    23802391var good=false; 
    2381 for(var j=0;j<_290.length;j++){ 
    2382 if(_290[j]==arguments[i]){ 
     2392for(var j=0;j<_294.length;j++){ 
     2393if(_294[j]==arguments[i]){ 
    23832394good=true; 
    23842395break; 
     
    23932404MochiKit.DOM.escapeHTML=function(s){ 
    23942405var buf=[]; 
    2395 var _293=MochiKit.DOM._TRANSTABLE; 
     2406var _297=MochiKit.DOM._TRANSTABLE; 
    23962407for(var i=0;i<s.length;i++){ 
    23972408var c=s.charAt(i); 
    2398 var o=_293[c]; 
     2409var o=_297[c]; 
    23992410if(o){ 
    24002411c=o; 
     
    24112422lst=[]; 
    24122423} 
    2413 var _296=[dom]; 
    2414 var _297=MochiKit.DOM.escapeHTML; 
    2415 var _298=MochiKit.DOM.attributeArray; 
    2416 while(_296.length){ 
    2417 dom=_296.pop(); 
     2424var _300=[dom]; 
     2425var _301=MochiKit.DOM.escapeHTML; 
     2426var _302=MochiKit.DOM.attributeArray; 
     2427while(_300.length){ 
     2428dom=_300.pop(); 
    24182429if(typeof (dom)=="string"){ 
    24192430lst.push(dom); 
     
    24212432if(dom.nodeType==1){ 
    24222433lst.push("<"+dom.nodeName.toLowerCase()); 
    2423 var _299=[]; 
    2424 var _300=_298(dom); 
    2425 for(var i=0;i<_300.length;i++){ 
    2426 var a=_300[i]; 
    2427 _299.push([" ",a.name,"=\"",_297(a.value),"\""]); 
    2428 } 
    2429 _299.sort(); 
    2430 for(var i=0;i<_299.length;i++){ 
    2431 var _301=_299[i]; 
    2432 for(var j=0;j<_301.length;j++){ 
    2433 lst.push(_301[j]); 
     2434var _303=[]; 
     2435var _304=_302(dom); 
     2436for(var i=0;i<_304.length;i++){ 
     2437var a=_304[i]; 
     2438_303.push([" ",a.name,"=\"",_301(a.value),"\""]); 
     2439} 
     2440_303.sort(); 
     2441for(var i=0;i<_303.length;i++){ 
     2442var _305=_303[i]; 
     2443for(var j=0;j<_305.length;j++){ 
     2444lst.push(_305[j]); 
    24342445} 
    24352446} 
    24362447if(dom.hasChildNodes()){ 
    24372448lst.push(">"); 
    2438 _296.push("</"+dom.nodeName.toLowerCase()+">"); 
    2439 var _302=dom.childNodes; 
    2440 for(var i=_302.length-1;i>=0;i--){ 
    2441 _296.push(_302[i]); 
     2449_300.push("</"+dom.nodeName.toLowerCase()+">"); 
     2450var _306=dom.childNodes; 
     2451for(var i=_306.length-1;i>=0;i--){ 
     2452_300.push(_306[i]); 
    24422453} 
    24432454}else{ 
     
    24462457}else{ 
    24472458if(dom.nodeType==3){ 
    2448 lst.push(_297(dom.nodeValue)); 
     2459lst.push(_301(dom.nodeValue)); 
    24492460} 
    24502461} 
     
    24532464return lst; 
    24542465}; 
    2455 MochiKit.DOM.setDisplayForElement=function(_303,_304){ 
    2456 var _305=MochiKit.Base.extend(null,arguments,1); 
    2457 MochiKit.Iter.forEach(MochiKit.Base.filter(null,MochiKit.Base.map(getElement,_305)),function(_304){ 
    2458 _304.style.display=_303
     2466MochiKit.DOM.setDisplayForElement=function(_307,_308){ 
     2467var _309=MochiKit.Base.extend(null,arguments,1); 
     2468MochiKit.Iter.forEach(MochiKit.Base.filter(null,MochiKit.Base.map(getElement,_309)),function(_308){ 
     2469_308.style.display=_307
    24592470}); 
    24602471}; 
    2461 MochiKit.DOM.scrapeText=function(node,_306){ 
     2472MochiKit.DOM.scrapeText=function(node,_310){ 
    24622473var rval=[]; 
    24632474MochiKit.Base.nodeWalk(node,function(node){ 
    2464 var _307=node.nodeValue; 
    2465 if(typeof (_307)=="string"){ 
    2466 rval.push(_307); 
     2475var _311=node.nodeValue; 
     2476if(typeof (_311)=="string"){ 
     2477rval.push(_311); 
    24672478} 
    24682479return node.childNodes; 
    24692480}); 
    2470 if(_306){ 
     2481if(_310){ 
    24712482return rval; 
    24722483}else{ 
     
    24762487MochiKit.DOM.__new__=function(){ 
    24772488this.domConverters=new MochiKit.Base.AdapterRegistry(); 
    2478 var _308=document.createElement("span"); 
    2479 var _309
    2480 if(_308.attributes.length>0){ 
    2481 var _310=MochiKit.Base.filter; 
    2482 _309=function(node){ 
    2483 return _310(_309.ignoreAttrFilter,node.attributes); 
    2484 }; 
    2485 _309.ignoreAttr={}; 
    2486 MochiKit.Iter.forEach(_308.attributes,function(a){ 
    2487 _309.ignoreAttr[a.name]=a.value; 
     2489var _312=document.createElement("span"); 
     2490var _313
     2491if(_312.attributes.length>0){ 
     2492var _314=MochiKit.Base.filter; 
     2493_313=function(node){ 
     2494return _314(_313.ignoreAttrFilter,node.attributes); 
     2495}; 
     2496_313.ignoreAttr={}; 
     2497MochiKit.Iter.forEach(_312.attributes,function(a){ 
     2498_313.ignoreAttr[a.name]=a.value; 
    24882499}); 
    2489 _309.ignoreAttrFilter=function(a){ 
    2490 return (_309.ignoreAttr[a.name]!=a.value); 
    2491 }; 
    2492 _309.compliant=false; 
    2493 }else{ 
    2494 _309=function(node){ 
     2500_313.ignoreAttrFilter=function(a){ 
     2501return (_313.ignoreAttr[a.name]!=a.value); 
     2502}; 
     2503_313.compliant=false; 
     2504}else{ 
     2505_313=function(node){ 
    24952506return node.attributes; 
    24962507}; 
    2497 _309.compliant=true; 
    2498 } 
    2499 this.attributeArray=_309
    2500 var _311=this.createDOMFunc; 
    2501 this.UL=_311("ul"); 
    2502 this.OL=_311("ol"); 
    2503 this.LI=_311("li"); 
    2504 this.TD=_311("td"); 
    2505 this.TR=_311("tr"); 
    2506 this.TBODY=_311("tbody"); 
    2507 this.THEAD=_311("thead"); 
    2508 this.TFOOT=_311("tfoot"); 
    2509 this.TABLE=_311("table"); 
    2510 this.TH=_311("th"); 
    2511 this.INPUT=_311("input"); 
    2512 this.SPAN=_311("span"); 
    2513 this.A=_311("a"); 
    2514 this.DIV=_311("div"); 
    2515 this.IMG=_311("img"); 
    2516 this.H1=_311("h1"); 
    2517 this.H2=_311("h2"); 
    2518 this.H3=_311("h3"); 
    2519 this.BR=_311("br"); 
    2520 this.HR=_311("hr"); 
    2521 this.LABEL=_311("label"); 
    2522 this.TEXTAREA=_311("textarea"); 
    2523 this.FORM=_311("form"); 
    2524 this.P=_311("p"); 
     2508_313.compliant=true; 
     2509} 
     2510this.attributeArray=_313
     2511var _315=this.createDOMFunc; 
     2512this.UL=_315("ul"); 
     2513this.OL=_315("ol"); 
     2514this.LI=_315("li"); 
     2515this.TD=_315("td"); 
     2516this.TR=_315("tr"); 
     2517this.TBODY=_315("tbody"); 
     2518this.THEAD=_315("thead"); 
     2519this.TFOOT=_315("tfoot"); 
     2520this.TABLE=_315("table"); 
     2521this.TH=_315("th"); 
     2522this.INPUT=_315("input"); 
     2523this.SPAN=_315("span"); 
     2524this.A=_315("a"); 
     2525this.DIV=_315("div"); 
     2526this.IMG=_315("img"); 
     2527this.H1=_315("h1"); 
     2528this.H2=_315("h2"); 
     2529this.H3=_315("h3"); 
     2530this.BR=_315("br"); 
     2531this.HR=_315("hr"); 
     2532this.LABEL=_315("label"); 
     2533this.TEXTAREA=_315("textarea"); 
     2534this.FORM=_315("form"); 
     2535this.P=_315("p"); 
    25252536this._TRANSTABLE={"<":"&lt;",">":"&gt;","&":"&amp;","'":"&apos;","\"":"&quot;"}; 
    2526 var _312=MochiKit.Base.partial; 
    2527 this.hideElement=_312(this.setDisplayForElement,"none"); 
    2528 this.showElement=_312(this.setDisplayForElement,"block"); 
     2537var _316=MochiKit.Base.partial; 
     2538this.hideElement=_316(this.setDisplayForElement,"none"); 
     2539this.showElement=_316(this.setDisplayForElement,"block"); 
    25292540this.$=this.getElement; 
    25302541this.EXPORT_TAGS={":common":this.EXPORT,":all":MochiKit.Base.concat(this.EXPORT,this.EXPORT_OK)}; 
     
    25682579return this.__repr__(); 
    25692580}; 
    2570 MochiKit.Visual.clampColorComponent=function(v,_313){ 
    2571 v*=_313
     2581MochiKit.Visual.clampColorComponent=function(v,_317){ 
     2582v*=_317
    25722583if(v<0){ 
    25732584return 0; 
    25742585}else{ 
    2575 if(v>_313){ 
    2576 return _313
     2586if(v>_317){ 
     2587return _317
    25772588}else{ 
    25782589return v; 
     
    25802591} 
    25812592}; 
    2582 MochiKit.Visual.Color=function(red,_315,blue,_317){ 
    2583 if(typeof (_317)=="undefined"||_317==null){ 
    2584 _317=1; 
    2585 } 
    2586 this.rgb={"r":red,"g":_315,"b":blue,"a":_317}; 
    2587 }; 
    2588 MochiKit.Visual.Color.prototype={"__class__":MochiKit.Visual.Color,"colorWithAlpha":function(_318){ 
     2593MochiKit.Visual.Color=function(red,_319,blue,_321){ 
     2594if(typeof (_321)=="undefined"||_321==null){ 
     2595_321=1; 
     2596} 
     2597this.rgb={"r":red,"g":_319,"b":blue,"a":_321}; 
     2598}; 
     2599MochiKit.Visual.Color.prototype={"__class__":MochiKit.Visual.Color,"colorWithAlpha":function(_322){ 
    25892600var rgb=this.rgb; 
    25902601var m=MochiKit.Visual; 
    2591 return m.Color.fromRGB(rgb.r,rgb.g,rgb.b,_318); 
     2602return m.Color.fromRGB(rgb.r,rgb.g,rgb.b,_322); 
    25922603},"colorWithHue":function(hue){ 
    25932604var hsl=this.asHSL(); 
     
    25952606var m=MochiKit.Visual; 
    25962607return m.Color.fromHSL(hsl); 
    2597 },"colorWithSaturation":function(_322){ 
     2608},"colorWithSaturation":function(_326){ 
    25982609var hsl=this.asHSL(); 
    2599 hsl.s=_322
     2610hsl.s=_326
    26002611var m=MochiKit.Visual; 
    26012612return m.Color.fromHSL(hsl); 
    2602 },"colorWithLightness":function(_323){ 
     2613},"colorWithLightness":function(_327){ 
    26032614var hsl=this.asHSL(); 
    2604 hsl.l=_323
     2615hsl.l=_327
    26052616var m=MochiKit.Visual; 
    26062617return m.Color.fromHSL(hsl); 
    2607 },"darkerColorWithLevel":function(_324){ 
     2618},"darkerColorWithLevel":function(_328){ 
    26082619var hsl=this.asHSL(); 
    2609 hsl.l=Math.max(hsl.l-_324,0); 
     2620hsl.l=Math.max(hsl.l-_328,0); 
    26102621var m=MochiKit.Visual; 
    26112622return m.Color.fromHSL(hsl); 
    2612 },"lighterColorWithLevel":function(_325){ 
     2623},"lighterColorWithLevel":function(_329){ 
    26132624var hsl=this.asHSL(); 
    2614 Math.min(hsl.l+_325,1); 
     2625Math.min(hsl.l+_329,1); 
    26152626var m=MochiKit.Visual; 
    26162627return m.Color.fromHSL(hsl); 
    2617 },"blendedColor":function(_326,_327){ 
    2618 if(typeof (_327)=="undefined"||_327==null){ 
    2619 _327=0.5; 
    2620 } 
    2621 var sf=1-_327
     2628},"blendedColor":function(_330,_331){ 
     2629if(typeof (_331)=="undefined"||_331==null){ 
     2630_331=0.5; 
     2631} 
     2632var sf=1-_331
    26222633var s=this.rgb; 
    2623 var d=_326.rgb; 
    2624 var df=_327
     2634var d=_330.rgb; 
     2635var df=_331
    26252636return MochiKit.Visual.Color.fromRGB((s.r*sf)+(d.r*df),(s.g*sf)+(d.g*df),(s.b*sf)+(d.b*df),(s.a*sf)+(d.a*df)); 
    2626 },"compareRGB":function(_330){ 
     2637},"compareRGB":function(_334){ 
    26272638var a=this.asRGB(); 
    2628 var b=_330.asRGB(); 
     2639var b=_334.asRGB(); 
    26292640return MochiKit.Base.compare([a.r,a.g,a.b,a.a],[b.r,b.g,b.b,b.a]); 
    26302641},"isLight":function(){ 
     
    27002711return this.__class__.NAME+"("+col.join(", ")+")"; 
    27012712}}; 
    2702 MochiKit.Visual.Color.fromRGB=function(red,_335,blue,_336){ 
    2703 var _337=MochiKit.Visual.Color; 
     2713MochiKit.Visual.Color.fromRGB=function(red,_339,blue,_340){ 
     2714var _341=MochiKit.Visual.Color; 
    27042715if(arguments.length==1){ 
    27052716var rgb=red; 
    27062717red=rgb.r; 
    2707 _335=rgb.g; 
     2718_339=rgb.g; 
    27082719blue=rgb.b; 
    27092720if(typeof (rgb.a)=="undefined"){ 
    2710 _336=undefined; 
    2711 }else{ 
    2712 _336=rgb.a; 
    2713 } 
    2714 } 
    2715 return new _337(red,_335,blue,_336); 
    2716 }; 
    2717 MochiKit.Visual.Color.fromHSL=function(hue,_338,_339,_340){ 
     2721_340=undefined; 
     2722}else{ 
     2723_340=rgb.a; 
     2724} 
     2725} 
     2726return new _341(red,_339,blue,_340); 
     2727}; 
     2728MochiKit.Visual.Color.fromHSL=function(hue,_342,_343,_344){ 
    27182729var m=MochiKit.Visual; 
    27192730return m.Color.fromRGB(m.hslToRGB.apply(m,arguments)); 
    27202731}; 
    2721 MochiKit.Visual.Color.fromHSV=function(hue,_341,_342,_343){ 
     2732MochiKit.Visual.Color.fromHSV=function(hue,_345,_346,_347){ 
    27222733var m=MochiKit.Visual; 
    27232734return m.Color.fromRGB(m.hsvToRGB.apply(m,arguments)); 
    27242735}; 
    27252736MochiKit.Visual.Color.fromName=function(name){ 
    2726 var _344=MochiKit.Visual.Color; 
    2727 var _345=_344._namedColors[name.toLowerCase()]; 
    2728 if(typeof (_345)=="string"){ 
    2729 return _344.fromHexString(_345); 
     2737var _348=MochiKit.Visual.Color; 
     2738var _349=_348._namedColors[name.toLowerCase()]; 
     2739if(typeof (_349)=="string"){ 
     2740return _348.fromHexString(_349); 
    27302741}else{ 
    27312742if(name=="transparent"){ 
    2732 return _344.transparentColor(); 
     2743return _348.transparentColor();