<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1205077887140158201</id><updated>2011-11-27T16:24:40.672-08:00</updated><category term='DWR'/><category term='AJAX'/><category term='multithreading'/><category term='Spring'/><category term='JavaScript'/><category term='java'/><category term='MochiKit'/><category term='web'/><category term='RMI'/><category term='registry'/><title type='text'>dev it Right</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rightdev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rightdev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Frog007</name><uri>http://www.blogger.com/profile/08565079497668665230</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1205077887140158201.post-5853630418262761964</id><published>2007-10-15T06:14:00.000-07:00</published><updated>2007-10-26T06:12:12.529-07:00</updated><title type='text'>JavaScript Date Formatter</title><content type='html'>We offten need to display date in accordance with some pattern. There is my implementaion of this task for javascript:

&lt;pre&gt;&lt;code&gt;
SimpleDateFormatter = function() {};

SimpleDateFormatter.zeroize = function (value, length) {
    if (!length) length = 2;
    value = String(value);
    for (var i = 0, zeros = '';
         i &lt; (length - value.length); i++) {
        zeros += '0';
    }
    return zeros + value;
};
SimpleDateFormatter.getTimezome = function (date) {
    if (!date)
        return "";
    var dateStr = date + "";
    var timezoneIndex = dateStr.indexOf("GMT");
    if (timezoneIndex == -1)
        timezoneIndex = dateStr.indexOf("UTC");
    if (timezoneIndex &gt; 0) {
        return dateStr.substring(timezoneIndex, dateStr.length);
    }
    return "";
}
SimpleDateFormatter.getFromCache = function (pattern){
    if (SimpleDateFormatter.cache &amp;&amp; SimpleDateFormatter.cache[pattern])
        return SimpleDateFormatter.cache[pattern];
    return null;
}
SimpleDateFormatter.putToCache = function (pattern, func) {
    if (SimpleDateFormatter.cache)
        SimpleDateFormatter.cache[pattern] = func;
}
SimpleDateFormatter.formatter = function(pattern)
{
    //remove quortes to avoid function compilation problems
    pattern = pattern.replace(/'/g, "");
    pattern = pattern.replace(/\n/g,"\\n");
    var cached = SimpleDateFormatter.getFromCache(pattern);
    if (cached)
        return cached;

    pattern = "'"+pattern+"'";
    var funcSrc = pattern.replace(/(yyyy|MMMM|MMM|MM|M|EEEE|EEE|dd|d|hh|h|kk|k|mm|m|ss|s|S|z)/g,
        function($1)
        {
            switch ($1)
            {
            case 'yyyy': return "'+date.getFullYear()+'";
            case 'MMMM': return "'+SimpleDateFormatter.monthNames[date.getMonth()]+'";
            case 'MMM':  return "'+SimpleDateFormatter.monthNames[date.getMonth()].substr(0, 3)+'";
            case 'MM':   return "'+SimpleDateFormatter.zeroize(date.getMonth() + 1)+'";
            case 'M':   return "'+(date.getMonth() + 1)+'";
            case 'EEEE': return "'+SimpleDateFormatter.dayNames[date.getDay()]+'";
            case 'EEE':  return "'+SimpleDateFormatter.dayNames[date.getDay()].substr(0, 3)+'";
            case 'dd':   return "'+SimpleDateFormatter.zeroize(date.getDate())+'";
            case 'd':   return "'+date.getDate()+'";
            case 'h':   return "'+date.getHours()+'";
            case 'hh':   return "'+SimpleDateFormatter.zeroize(date.getHours())+'";
            case 'k':   return "'+((h = date.getHours() % 12) ? h : '12')+(date.getHours() &lt; 12 ? 'am' : 'pm')+'";
            case 'kk':   return "'+SimpleDateFormatter.zeroize((h = date.getHours() % 12) ? h : '12')+(date.getHours() &lt; 12 ? 'am' : 'pm')+'";
            case 'mm':   return "'+SimpleDateFormatter.zeroize(date.getMinutes())+'";
            case 'm':   return "'+date.getMinutes()+'";
            case 'ss':   return "'+SimpleDateFormatter.zeroize(date.getSeconds())+'";
            case 's':   return "'+date.getSeconds()+'";
            case 'S':   return "'+date.getMilliseconds()+'";
            case 'z':   return "'+SimpleDateFormatter.getTimezome(date)+'";
            }
        }
        );

    funcSrc = "return "+funcSrc;
    var func = new Function("date", funcSrc);
    SimpleDateFormatter.putToCache(pattern, func);
    return func;
}

// a global month names array
SimpleDateFormatter.monthNames = new Array(
        'January',
        'February',
        'March',
        'April',
        'May',
        'June',
        'July',
        'August',
        'September',
        'October',
        'November',
        'December'
        );

// a global day names array
SimpleDateFormatter.dayNames = new Array(
        'Sunday',
        'Monday',
        'Tuesday',
        'Wednesday',
        'Thursday',
        'Friday',
        'Saturday'
        );

//cache: pattern-&gt;format function
SimpleDateFormatter.cache = {};
&lt;/code&gt;&lt;/pre&gt;
&lt;b&gt;Pattern letters&lt;/b&gt;&lt;br/&gt;
y  Year  1996; 96 &lt;br/&gt;
M  Month in year  July; Jul; 07  &lt;br/&gt;
d  Day in month  10 &lt;br/&gt;
E  Day in week  Tuesday; Tue &lt;br/&gt;
H  Hour in day (0-23)  0  &lt;br/&gt;
K  Hour in am/pm (0-11)  0 &lt;br/&gt;
m  Minute in hour (0-59) 30 &lt;br/&gt;
s  Second in minute  (0-59) 55 &lt;br/&gt;
S  Millisecond  (0-999) 978 &lt;br/&gt;
z  Time zone  GMT+04:00 &lt;br/&gt;
&lt;br/&gt;
&lt;b&gt;Usage&lt;/b&gt;
Now you may use it:&lt;br/&gt;
&lt;pre&gt;&lt;code&gt;
var formatter = SimpleDateFormatter.formatter("yyyy/MMM/EEE");//formatter is a function
alert(formatter(new Date()));
&lt;/pre&gt;
We also use cache of formatter, so you could use &lt;code&gt;SimpleDateFormatter.formatter("yyyy/MMM/EEE")(date)&lt;/code&gt; everywhere, and formatter function will be created only single time.

&lt;script type="text/javascript"&gt;
SimpleDateFormatter = function() {};

SimpleDateFormatter.zeroize = function (value, length) {
    if (!length) length = 2;
    value = String(value);
    for (var i = 0, zeros = '';
         i &lt; (length - value.length); i++) {
        zeros += '0';
    }
    return zeros + value;
};
SimpleDateFormatter.getTimezome = function (date) {
    if (!date)
        return "";
    var dateStr = date + "";
    var timezoneIndex = dateStr.indexOf("GMT");
    if (timezoneIndex == -1)
        timezoneIndex = dateStr.indexOf("UTC");
    if (timezoneIndex &gt; 0) {
        return dateStr.substring(timezoneIndex, dateStr.length);
    }
    return "";
}
SimpleDateFormatter.getFromCache = function (pattern){
    if (SimpleDateFormatter.cache &amp;&amp; SimpleDateFormatter.cache[pattern])
        return SimpleDateFormatter.cache[pattern];
    return null;
}
SimpleDateFormatter.putToCache = function (pattern, func) {
    if (SimpleDateFormatter.cache)
        SimpleDateFormatter.cache[pattern] = func;
}
SimpleDateFormatter.formatter = function(pattern)
    {
        //remove quortes to avoid function compilation problems
        pattern = pattern.replace(/'/g, "");
        pattern = pattern.replace(/\n/g,"\\n");
        var cached = SimpleDateFormatter.getFromCache(pattern);
        if (cached)
            return cached;

        pattern = "'"+pattern+"'";
        var funcSrc = pattern.replace(/(yyyy|MMMM|MMM|MM|M|EEEE|EEE|dd|d|hh|h|kk|k|mm|m|ss|s|S|z)/g,
                function($1)
                {
                    switch ($1)
                            {
                        case 'yyyy': return "'+date.getFullYear()+'";
                        case 'MMMM': return "'+SimpleDateFormatter.monthNames[date.getMonth()]+'";
                        case 'MMM':  return "'+SimpleDateFormatter.monthNames[date.getMonth()].substr(0, 3)+'";
                        case 'MM':   return "'+SimpleDateFormatter.zeroize(date.getMonth() + 1)+'";
                        case 'M':   return "'+(date.getMonth() + 1)+'";
                        case 'EEEE': return "'+SimpleDateFormatter.dayNames[date.getDay()]+'";
                        case 'EEE':  return "'+SimpleDateFormatter.dayNames[date.getDay()].substr(0, 3)+'";
                        case 'dd':   return "'+SimpleDateFormatter.zeroize(date.getDate())+'";
                        case 'd':   return "'+date.getDate()+'";
                        case 'h':   return "'+date.getHours()+'";
                        case 'hh':   return "'+SimpleDateFormatter.zeroize(date.getHours())+'";
                        case 'k':   return "'+((h = date.getHours() % 12) ? h : '12')+(date.getHours() &lt; 12 ? 'am' : 'pm')+'";
                        case 'kk':   return "'+SimpleDateFormatter.zeroize((h = date.getHours() % 12) ? h : '12')+(date.getHours() &lt; 12 ? 'am' : 'pm')+'";
                        case 'mm':   return "'+SimpleDateFormatter.zeroize(date.getMinutes())+'";
                        case 'm':   return "'+date.getMinutes()+'";
                        case 'ss':   return "'+SimpleDateFormatter.zeroize(date.getSeconds())+'";
                        case 's':   return "'+date.getSeconds()+'";
                        case 'S':   return "'+date.getMilliseconds()+'";
                        case 'z':   return "'+SimpleDateFormatter.getTimezome(date)+'";
                    }
                }
                );

        funcSrc = "return "+funcSrc;
        var func = new Function("date", funcSrc);
        SimpleDateFormatter.putToCache(pattern, func);
        return func;
    }
// a global month names array
SimpleDateFormatter.monthNames = new Array(
        'January',
        'February',
        'March',
        'April',
        'May',
        'June',
        'July',
        'August',
        'September',
        'October',
        'November',
        'December'
        );

// a global day names array
SimpleDateFormatter.dayNames = new Array(
        'Sunday',
        'Monday',
        'Tuesday',
        'Wednesday',
        'Thursday',
        'Friday',
        'Saturday'
        );

//cache: pattern-&gt;format function
SimpleDateFormatter.cache = {};

    function convertCurrentDate(){
        var elem = document.getElementById("pattern");
        var pattern = elem.value;
        if (pattern){
            output(SimpleDateFormatter.formatter(pattern)(new Date()));
        } else {
            output("pattern is empty");
        }
    }
    function convertDate(){
        try {
            var year = document.getElementById("year");
            var month = document.getElementById("month");
            var day = document.getElementById("day");
            var minute = document.getElementById("minute");
            var hour = document.getElementById("hour");
            var second = document.getElementById("second");
            var millisecond = document.getElementById("millisecond");
            var date = new Date(year.value, month.value-1, day.value, hour.value, minute.value, second.value, millisecond.value);
            var patternElem = document.getElementById("pattern");
            var pattern = patternElem.value;
            if (pattern){
                output(SimpleDateFormatter.formatter(pattern)(date));
            } else {
                output("pattern is empty");
            }
        } catch (e){
            output(e);
        }
    }
    function output(string1, string2){
        var elem = document.getElementById("outputField");
        while (elem.firstChild) {
            elem.removeChild(elem.firstChild);
        }
        var node = document.createTextNode(string1);
        elem.appendChild(node);
    }
&lt;/script&gt;
&lt;table style="width:auto"&gt;
    &lt;tr&gt;&lt;td&gt;Year(yyyy)&lt;/td&gt;&lt;td&gt;Month(M)&lt;/td&gt;&lt;td&gt;Day(d)&lt;/td&gt;&lt;td&gt;Hour(h)&lt;/td&gt;&lt;td&gt;Minutes(m)&lt;/td&gt;&lt;td&gt;Seconds(s)&lt;/td&gt;&lt;td&gt;Milliseconds(S)&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;input id="year" type="text" style="width:70px"&gt;&lt;/td&gt;&lt;td&gt;&lt;input id="month" type="text" style="width:70px"&gt;&lt;/td&gt;
        &lt;td&gt;&lt;input id="day" type="text" style="width:70px"&gt;&lt;/td&gt;&lt;td&gt;&lt;input id="hour" type="text" style="width:70px"&gt;&lt;/td&gt;
        &lt;td&gt;&lt;input id="minute" type="text" style="width:70px"&gt;&lt;/td&gt;&lt;td&gt;&lt;input id="second" type="text" style="width:70px"&gt;&lt;/td&gt;
        &lt;td&gt;&lt;input id="millisecond" type="text" style="width:70px"&gt;&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td colspan="7"&gt;Pattern&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td colspan="7"&gt;&lt;input id="pattern" type="text" style="width:200px"&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;input type="button" value="Convert" onclick="convertDate();"&gt;
&lt;input type="button" value="Convert current date" onclick="convertCurrentDate();"&gt;
&lt;div id="outputField" style="margin-top:5px;border:solid 1px darkblue"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1205077887140158201-5853630418262761964?l=rightdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rightdev.blogspot.com/feeds/5853630418262761964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1205077887140158201&amp;postID=5853630418262761964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/5853630418262761964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/5853630418262761964'/><link rel='alternate' type='text/html' href='http://rightdev.blogspot.com/2007/10/javascript-date-formatter.html' title='JavaScript Date Formatter'/><author><name>Frog007</name><uri>http://www.blogger.com/profile/08565079497668665230</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1205077887140158201.post-6697703163799448257</id><published>2007-08-31T03:39:00.000-07:00</published><updated>2007-09-02T04:36:06.479-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='MochiKit'/><title type='text'>How get HTML element real position</title><content type='html'>I have spent a lot of time trying get the real position of DIV element. And I have done it, but only at Firefox. It is a complex issue to find real top and left of the element, because of IE and FF returns different &lt;em&gt;offsetLeft&lt;/em&gt; and &lt;em&gt;offsetTop&lt;/em&gt; and this result is depends on &lt;em&gt;style.position&lt;/em&gt; value of element.&lt;br/&gt;

&lt;a href="http://www.mochikit.com/"&gt;MochiKit&lt;/a&gt; helped me. There is an undocumented function &lt;code&gt;MochiKit.Position.positionedOffset(element)&lt;/code&gt; that returns what I need. This function is not documented yet, because development still working. But as they says:"If it is denied but very, very need, than it is aloowed" :)
&lt;br/&gt;
How I use it:&lt;pre&gt;&lt;code&gt;divForEntries.style.left =
    MochiKit.Position.positionedOffset(this.htmlView).x +
    this.htmlView.offsetWidth -5;
divForEntries.style.top = 
    MochiKit.Position.positionedOffset(this.htmlView).y;
&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1205077887140158201-6697703163799448257?l=rightdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rightdev.blogspot.com/feeds/6697703163799448257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1205077887140158201&amp;postID=6697703163799448257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/6697703163799448257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/6697703163799448257'/><link rel='alternate' type='text/html' href='http://rightdev.blogspot.com/2007/08/how-get-html-element-real-position.html' title='How get HTML element real position'/><author><name>Frog007</name><uri>http://www.blogger.com/profile/08565079497668665230</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1205077887140158201.post-4553747824105878950</id><published>2007-08-30T04:52:00.000-07:00</published><updated>2008-10-14T09:00:50.965-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='MochiKit'/><title type='text'>MochiKit - powerfull JavaScript framework</title><content type='html'>&lt;script&gt;
/***

    MochiKit.MochiKit 1.4 : PACKED VERSION

    THIS FILE IS AUTOMATICALLY GENERATED.  If creating patches, please
    diff against the source tree, not this file.

    See &lt;http://mochikit.com/&gt; for documentation, downloads, license, etc.

    (c) 2005 Bob Ippolito.  All rights Reserved.

***/

if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Base");
}
if(typeof (MochiKit)=="undefined"){
MochiKit={};
}
if(typeof (MochiKit.Base)=="undefined"){
MochiKit.Base={};
}
if(typeof (MochiKit.__export__)=="undefined"){
MochiKit.__export__=(MochiKit.__compat__||(typeof (JSAN)=="undefined"&amp;&amp;typeof (dojo)=="undefined"));
}
MochiKit.Base.VERSION="1.4";
MochiKit.Base.NAME="MochiKit.Base";
MochiKit.Base.update=function(_1,_2){
if(_1===null){
_1={};
}
for(var i=1;i&lt;arguments.length;i++){
var o=arguments[i];
if(typeof (o)!="undefined"&amp;&amp;o!==null){
for(var k in o){
_1[k]=o[k];
}
}
}
return _1;
};
MochiKit.Base.update(MochiKit.Base,{__repr__:function(){
return "["+this.NAME+" "+this.VERSION+"]";
},toString:function(){
return this.__repr__();
},camelize:function(_6){
var _7=_6.split("-");
var cc=_7[0];
for(var i=1;i&lt;_7.length;i++){
cc+=_7[i].charAt(0).toUpperCase()+_7[i].substring(1);
}
return cc;
},counter:function(n){
if(arguments.length===0){
n=1;
}
return function(){
return n++;
};
},clone:function(_b){
var me=arguments.callee;
if(arguments.length==1){
me.prototype=_b;
return new me();
}
},_flattenArray:function(_d,_e){
for(var i=0;i&lt;_e.length;i++){
var o=_e[i];
if(o instanceof Array){
arguments.callee(_d,o);
}else{
_d.push(o);
}
}
return _d;
},flattenArray:function(lst){
return MochiKit.Base._flattenArray([],lst);
},flattenArguments:function(lst){
var res=[];
var m=MochiKit.Base;
var _15=m.extend(null,arguments);
while(_15.length){
var o=_15.shift();
if(o&amp;&amp;typeof (o)=="object"&amp;&amp;typeof (o.length)=="number"){
for(var i=o.length-1;i&gt;=0;i--){
_15.unshift(o[i]);
}
}else{
res.push(o);
}
}
return res;
},extend:function(_18,obj,_1a){
if(!_1a){
_1a=0;
}
if(obj){
var l=obj.length;
if(typeof (l)!="number"){
if(typeof (MochiKit.Iter)!="undefined"){
obj=MochiKit.Iter.list(obj);
l=obj.length;
}else{
throw new TypeError("Argument not an array-like and MochiKit.Iter not present");
}
}
if(!_18){
_18=[];
}
for(var i=_1a;i&lt;l;i++){
_18.push(obj[i]);
}
}
return _18;
},updatetree:function(_1d,obj){
if(_1d===null){
_1d={};
}
for(var i=1;i&lt;arguments.length;i++){
var o=arguments[i];
if(typeof (o)!="undefined"&amp;&amp;o!==null){
for(var k in o){
var v=o[k];
if(typeof (_1d[k])=="object"&amp;&amp;typeof (v)=="object"){
arguments.callee(_1d[k],v);
}else{
_1d[k]=v;
}
}
}
}
return _1d;
},setdefault:function(_23,obj){
if(_23===null){
_23={};
}
for(var i=1;i&lt;arguments.length;i++){
var o=arguments[i];
for(var k in o){
if(!(k in _23)){
_23[k]=o[k];
}
}
}
return _23;
},keys:function(obj){
var _29=[];
for(var _2a in obj){
_29.push(_2a);
}
return _29;
},values:function(obj){
var _2c=[];
for(var _2d in obj){
_2c.push(obj[_2d]);
}
return _2c;
},items:function(obj){
var _2f=[];
var e;
for(var _31 in obj){
var v;
try{
v=obj[_31];
}
catch(e){
continue;
}
_2f.push([_31,v]);
}
return _2f;
},_newNamedError:function(_33,_34,_35){
_35.prototype=new MochiKit.Base.NamedError(_33.NAME+"."+_34);
_33[_34]=_35;
},operator:{truth:function(a){
return !!a;
},lognot:function(a){
return !a;
},identity:function(a){
return a;
},not:function(a){
return ~a;
},neg:function(a){
return -a;
},add:function(a,b){
return a+b;
},sub:function(a,b){
return a-b;
},div:function(a,b){
return a/b;
},mod:function(a,b){
return a%b;
},mul:function(a,b){
return a*b;
},and:function(a,b){
return a&amp;b;
},or:function(a,b){
return a|b;
},xor:function(a,b){
return a^b;
},lshift:function(a,b){
return a&lt;&lt;b;
},rshift:function(a,b){
return a&gt;&gt;b;
},zrshift:function(a,b){
return a&gt;&gt;&gt;b;
},eq:function(a,b){
return a==b;
},ne:function(a,b){
return a!=b;
},gt:function(a,b){
return a&gt;b;
},ge:function(a,b){
return a&gt;=b;
},lt:function(a,b){
return a&lt;b;
},le:function(a,b){
return a&lt;=b;
},seq:function(a,b){
return a===b;
},sne:function(a,b){
return a!==b;
},ceq:function(a,b){
return MochiKit.Base.compare(a,b)===0;
},cne:function(a,b){
return MochiKit.Base.compare(a,b)!==0;
},cgt:function(a,b){
return MochiKit.Base.compare(a,b)==1;
},cge:function(a,b){
return MochiKit.Base.compare(a,b)!=-1;
},clt:function(a,b){
return MochiKit.Base.compare(a,b)==-1;
},cle:function(a,b){
return MochiKit.Base.compare(a,b)!=1;
},logand:function(a,b){
return a&amp;&amp;b;
},logor:function(a,b){
return a||b;
},contains:function(a,b){
return b in a;
}},forwardCall:function(_73){
return function(){
return this[_73].apply(this,arguments);
};
},itemgetter:function(_74){
return function(arg){
return arg[_74];
};
},typeMatcher:function(){
var _76={};
for(var i=0;i&lt;arguments.length;i++){
var typ=arguments[i];
_76[typ]=typ;
}
return function(){
for(var i=0;i&lt;arguments.length;i++){
if(!(typeof (arguments[i]) in _76)){
return false;
}
}
return true;
};
},isNull:function(){
for(var i=0;i&lt;arguments.length;i++){
if(arguments[i]!==null){
return false;
}
}
return true;
},isUndefinedOrNull:function(){
for(var i=0;i&lt;arguments.length;i++){
var o=arguments[i];
if(!(typeof (o)=="undefined"||o===null)){
return false;
}
}
return true;
},isEmpty:function(obj){
return !MochiKit.Base.isNotEmpty.apply(this,arguments);
},isNotEmpty:function(obj){
for(var i=0;i&lt;arguments.length;i++){
var o=arguments[i];
if(!(o&amp;&amp;o.length)){
return false;
}
}
return true;
},isArrayLike:function(){
for(var i=0;i&lt;arguments.length;i++){
var o=arguments[i];
var typ=typeof (o);
if((typ!="object"&amp;&amp;!(typ=="function"&amp;&amp;typeof (o.item)=="function"))||o===null||typeof (o.length)!="number"||o.nodeType===3){
return false;
}
}
return true;
},isDateLike:function(){
for(var i=0;i&lt;arguments.length;i++){
var o=arguments[i];
if(typeof (o)!="object"||o===null||typeof (o.getTime)!="function"){
return false;
}
}
return true;
},xmap:function(fn){
if(fn===null){
return MochiKit.Base.extend(null,arguments,1);
}
var _87=[];
for(var i=1;i&lt;arguments.length;i++){
_87.push(fn(arguments[i]));
}
return _87;
},map:function(fn,lst){
var m=MochiKit.Base;
var itr=MochiKit.Iter;
var _8d=m.isArrayLike;
if(arguments.length&lt;=2){
if(!_8d(lst)){
if(itr){
lst=itr.list(lst);
if(fn===null){
return lst;
}
}else{
throw new TypeError("Argument not an array-like and MochiKit.Iter not present");
}
}
if(fn===null){
return m.extend(null,lst);
}
var _8e=[];
for(var i=0;i&lt;lst.length;i++){
_8e.push(fn(lst[i]));
}
return _8e;
}else{
if(fn===null){
fn=Array;
}
var _90=null;
for(i=1;i&lt;arguments.length;i++){
if(!_8d(arguments[i])){
if(itr){
return itr.list(itr.imap.apply(null,arguments));
}else{
throw new TypeError("Argument not an array-like and MochiKit.Iter not present");
}
}
var l=arguments[i].length;
if(_90===null||_90&gt;l){
_90=l;
}
}
_8e=[];
for(i=0;i&lt;_90;i++){
var _92=[];
for(var j=1;j&lt;arguments.length;j++){
_92.push(arguments[j][i]);
}
_8e.push(fn.apply(this,_92));
}
return _8e;
}
},xfilter:function(fn){
var _95=[];
if(fn===null){
fn=MochiKit.Base.operator.truth;
}
for(var i=1;i&lt;arguments.length;i++){
var o=arguments[i];
if(fn(o)){
_95.push(o);
}
}
return _95;
},filter:function(fn,lst,_9a){
var _9b=[];
var m=MochiKit.Base;
if(!m.isArrayLike(lst)){
if(MochiKit.Iter){
lst=MochiKit.Iter.list(lst);
}else{
throw new TypeError("Argument not an array-like and MochiKit.Iter not present");
}
}
if(fn===null){
fn=m.operator.truth;
}
if(typeof (Array.prototype.filter)=="function"){
return Array.prototype.filter.call(lst,fn,_9a);
}else{
if(typeof (_9a)=="undefined"||_9a===null){
for(var i=0;i&lt;lst.length;i++){
var o=lst[i];
if(fn(o)){
_9b.push(o);
}
}
}else{
for(i=0;i&lt;lst.length;i++){
o=lst[i];
if(fn.call(_9a,o)){
_9b.push(o);
}
}
}
}
return _9b;
},_wrapDumbFunction:function(_9f){
return function(){
switch(arguments.length){
case 0:
return _9f();
case 1:
return _9f(arguments[0]);
case 2:
return _9f(arguments[0],arguments[1]);
case 3:
return _9f(arguments[0],arguments[1],arguments[2]);
}
var _a0=[];
for(var i=0;i&lt;arguments.length;i++){
_a0.push("arguments["+i+"]");
}
return eval("(func("+_a0.join(",")+"))");
};
},methodcaller:function(_a2){
var _a3=MochiKit.Base.extend(null,arguments,1);
if(typeof (_a2)=="function"){
return function(obj){
return _a2.apply(obj,_a3);
};
}else{
return function(obj){
return obj[_a2].apply(obj,_a3);
};
}
},method:function(_a6,_a7){
var m=MochiKit.Base;
return m.bind.apply(this,m.extend([_a7,_a6],arguments,2));
},compose:function(f1,f2){
var _ab=[];
var m=MochiKit.Base;
if(arguments.length===0){
throw new TypeError("compose() requires at least one argument");
}
for(var i=0;i&lt;arguments.length;i++){
var fn=arguments[i];
if(typeof (fn)!="function"){
throw new TypeError(m.repr(fn)+" is not a function");
}
_ab.push(fn);
}
return function(){
var _af=arguments;
for(var i=_ab.length-1;i&gt;=0;i--){
_af=[_ab[i].apply(this,_af)];
}
return _af[0];
};
},bind:function(_b1,_b2){
if(typeof (_b1)=="string"){
_b1=_b2[_b1];
}
var _b3=_b1.im_func;
var _b4=_b1.im_preargs;
var _b5=_b1.im_self;
var m=MochiKit.Base;
if(typeof (_b1)=="function"&amp;&amp;typeof (_b1.apply)=="undefined"){
_b1=m._wrapDumbFunction(_b1);
}
if(typeof (_b3)!="function"){
_b3=_b1;
}
if(typeof (_b2)!="undefined"){
_b5=_b2;
}
if(typeof (_b4)=="undefined"){
_b4=[];
}else{
_b4=_b4.slice();
}
m.extend(_b4,arguments,2);
var _b7=function(){
var _b8=arguments;
var me=arguments.callee;
if(me.im_preargs.length&gt;0){
_b8=m.concat(me.im_preargs,_b8);
}
var _ba=me.im_self;
if(!_ba){
_ba=this;
}
return me.im_func.apply(_ba,_b8);
};
_b7.im_self=_b5;
_b7.im_func=_b3;
_b7.im_preargs=_b4;
return _b7;
},bindMethods:function(_bb){
var _bc=MochiKit.Base.bind;
for(var k in _bb){
var _be=_bb[k];
if(typeof (_be)=="function"){
_bb[k]=_bc(_be,_bb);
}
}
},registerComparator:function(_bf,_c0,_c1,_c2){
MochiKit.Base.comparatorRegistry.register(_bf,_c0,_c1,_c2);
},_primitives:{"boolean":true,"string":true,"number":true},compare:function(a,b){
if(a==b){
return 0;
}
var _c5=(typeof (a)=="undefined"||a===null);
var _c6=(typeof (b)=="undefined"||b===null);
if(_c5&amp;&amp;_c6){
return 0;
}else{
if(_c5){
return -1;
}else{
if(_c6){
return 1;
}
}
}
var m=MochiKit.Base;
var _c8=m._primitives;
if(!(typeof (a) in _c8&amp;&amp;typeof (b) in _c8)){
try{
return m.comparatorRegistry.match(a,b);
}
catch(e){
if(e!=m.NotFound){
throw e;
}
}
}
if(a&lt;b){
return -1;
}else{
if(a&gt;b){
return 1;
}
}
var _c9=m.repr;
throw new TypeError(_c9(a)+" and "+_c9(b)+" can not be compared");
},compareDateLike:function(a,b){
return MochiKit.Base.compare(a.getTime(),b.getTime());
},compareArrayLike:function(a,b){
var _ce=MochiKit.Base.compare;
var _cf=a.length;
var _d0=0;
if(_cf&gt;b.length){
_d0=1;
_cf=b.length;
}else{
if(_cf&lt;b.length){
_d0=-1;
}
}
for(var i=0;i&lt;_cf;i++){
var cmp=_ce(a[i],b[i]);
if(cmp){
return cmp;
}
}
return _d0;
},registerRepr:function(_d3,_d4,_d5,_d6){
MochiKit.Base.reprRegistry.register(_d3,_d4,_d5,_d6);
},repr:function(o){
if(typeof (o)=="undefined"){
return "undefined";
}else{
if(o===null){
return "null";
}
}
try{
if(typeof (o.__repr__)=="function"){
return o.__repr__();
}else{
if(typeof (o.repr)=="function"&amp;&amp;o.repr!=arguments.callee){
return o.repr();
}
}
return MochiKit.Base.reprRegistry.match(o);
}
catch(e){
if(typeof (o.NAME)=="string"&amp;&amp;(o.toString==Function.prototype.toString||o.toString==Object.prototype.toString)){
return o.NAME;
}
}
try{
var _d8=(o+"");
}
catch(e){
return "["+typeof (o)+"]";
}
if(typeof (o)=="function"){
o=_d8.replace(/^\s+/,"");
var idx=o.indexOf("{");
if(idx!=-1){
o=o.substr(0,idx)+"{...}";
}
}
return _d8;
},reprArrayLike:function(o){
var m=MochiKit.Base;
return "["+m.map(m.repr,o).join(", ")+"]";
},reprString:function(o){
return ("\""+o.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");
},reprNumber:function(o){
return o+"";
},registerJSON:function(_de,_df,_e0,_e1){
MochiKit.Base.jsonRegistry.register(_de,_df,_e0,_e1);
},evalJSON:function(){
return eval("("+arguments[0]+")");
},serializeJSON:function(o){
var _e3=typeof (o);
if(_e3=="number"||_e3=="boolean"){
return o+"";
}else{
if(o===null){
return "null";
}
}
var m=MochiKit.Base;
var _e5=m.reprString;
if(_e3=="string"){
return _e5(o);
}
var me=arguments.callee;
var _e7;
if(typeof (o.__json__)=="function"){
_e7=o.__json__();
if(o!==_e7){
return me(_e7);
}
}
if(typeof (o.json)=="function"){
_e7=o.json();
if(o!==_e7){
return me(_e7);
}
}
if(_e3!="function"&amp;&amp;typeof (o.length)=="number"){
var res=[];
for(var i=0;i&lt;o.length;i++){
var val=me(o[i]);
if(typeof (val)!="string"){
val="undefined";
}
res.push(val);
}
return "["+res.join(", ")+"]";
}
try{
_e7=m.jsonRegistry.match(o);
if(o!==_e7){
return me(_e7);
}
}
catch(e){
if(e!=m.NotFound){
throw e;
}
}
if(_e3=="undefined"){
throw new TypeError("undefined can not be serialized as JSON");
}
if(_e3=="function"){
return null;
}
res=[];
for(var k in o){
var _ec;
if(typeof (k)=="number"){
_ec="\""+k+"\"";
}else{
if(typeof (k)=="string"){
_ec=_e5(k);
}else{
continue;
}
}
val=me(o[k]);
if(typeof (val)!="string"){
continue;
}
res.push(_ec+":"+val);
}
return "{"+res.join(", ")+"}";
},objEqual:function(a,b){
return (MochiKit.Base.compare(a,b)===0);
},arrayEqual:function(_ef,arr){
if(_ef.length!=arr.length){
return false;
}
return (MochiKit.Base.compare(_ef,arr)===0);
},concat:function(){
var _f1=[];
var _f2=MochiKit.Base.extend;
for(var i=0;i&lt;arguments.length;i++){
_f2(_f1,arguments[i]);
}
return _f1;
},keyComparator:function(key){
var m=MochiKit.Base;
var _f6=m.compare;
if(arguments.length==1){
return function(a,b){
return _f6(a[key],b[key]);
};
}
var _f9=m.extend(null,arguments);
return function(a,b){
var _fc=0;
for(var i=0;(_fc===0)&amp;&amp;(i&lt;_f9.length);i++){
var key=_f9[i];
_fc=_f6(a[key],b[key]);
}
return _fc;
};
},reverseKeyComparator:function(key){
var _100=MochiKit.Base.keyComparator.apply(this,arguments);
return function(a,b){
return _100(b,a);
};
},partial:function(func){
var m=MochiKit.Base;
return m.bind.apply(this,m.extend([func,undefined],arguments,1));
},listMinMax:function(_105,lst){
if(lst.length===0){
return null;
}
var cur=lst[0];
var _108=MochiKit.Base.compare;
for(var i=1;i&lt;lst.length;i++){
var o=lst[i];
if(_108(o,cur)==_105){
cur=o;
}
}
return cur;
},objMax:function(){
return MochiKit.Base.listMinMax(1,arguments);
},objMin:function(){
return MochiKit.Base.listMinMax(-1,arguments);
},findIdentical:function(lst,_10c,_10d,end){
if(typeof (end)=="undefined"||end===null){
end=lst.length;
}
if(typeof (_10d)=="undefined"||_10d===null){
_10d=0;
}
for(var i=_10d;i&lt;end;i++){
if(lst[i]===_10c){
return i;
}
}
return -1;
},mean:function(){
var sum=0;
var m=MochiKit.Base;
var args=m.extend(null,arguments);
var _113=args.length;
while(args.length){
var o=args.shift();
if(o&amp;&amp;typeof (o)=="object"&amp;&amp;typeof (o.length)=="number"){
_113+=o.length-1;
for(var i=o.length-1;i&gt;=0;i--){
sum+=o[i];
}
}else{
sum+=o;
}
}
if(_113&lt;=0){
throw new TypeError("mean() requires at least one argument");
}
return sum/_113;
},median:function(){
var data=MochiKit.Base.flattenArguments(arguments);
if(data.length===0){
throw new TypeError("median() requires at least one argument");
}
data.sort(compare);
if(data.length%2==0){
var _117=data.length/2;
return (data[_117]+data[_117-1])/2;
}else{
return data[(data.length-1)/2];
}
},findValue:function(lst,_119,_11a,end){
if(typeof (end)=="undefined"||end===null){
end=lst.length;
}
if(typeof (_11a)=="undefined"||_11a===null){
_11a=0;
}
var cmp=MochiKit.Base.compare;
for(var i=_11a;i&lt;end;i++){
if(cmp(lst[i],_119)===0){
return i;
}
}
return -1;
},nodeWalk:function(node,_11f){
var _120=[node];
var _121=MochiKit.Base.extend;
while(_120.length){
var res=_11f(_120.shift());
if(res){
_121(_120,res);
}
}
},nameFunctions:function(_123){
var base=_123.NAME;
if(typeof (base)=="undefined"){
base="";
}else{
base=base+".";
}
for(var name in _123){
var o=_123[name];
if(typeof (o)=="function"&amp;&amp;typeof (o.NAME)=="undefined"){
try{
o.NAME=base+name;
}
catch(e){
}
}
}
},queryString:function(_127,_128){
if(typeof (MochiKit.DOM)!="undefined"&amp;&amp;arguments.length==1&amp;&amp;(typeof (_127)=="string"||(typeof (_127.nodeType)!="undefined"&amp;&amp;_127.nodeType&gt;0))){
var kv=MochiKit.DOM.formContents(_127);
_127=kv[0];
_128=kv[1];
}else{
if(arguments.length==1){
if(typeof (_127.length)=="number"&amp;&amp;_127.length==2){
return arguments.callee(_127[0],_127[1]);
}
var o=_127;
_127=[];
_128=[];
for(var k in o){
var v=o[k];
if(typeof (v)=="function"){
continue;
}else{
if(typeof (v)!="string"&amp;&amp;typeof (v.length)=="number"){
for(var i=0;i&lt;v.length;i++){
_127.push(k);
_128.push(v[i]);
}
}else{
_127.push(k);
_128.push(v);
}
}
}
}
}
var rval=[];
var len=Math.min(_127.length,_128.length);
var _130=MochiKit.Base.urlEncode;
for(var i=0;i&lt;len;i++){
v=_128[i];
if(typeof (v)!="undefined"&amp;&amp;v!==null){
rval.push(_130(_127[i])+"="+_130(v));
}
}
return rval.join("&amp;");
},parseQueryString:function(_131,_132){
var qstr=(_131.charAt(0)=="?")?_131.substring(1):_131;
var _134=qstr.replace(/\+/g,"%20").split(/(\&amp;amp\;|\&amp;\#38\;|\&amp;#x26;|\&amp;)/);
var o={};
var _136;
if(typeof (decodeURIComponent)!="undefined"){
_136=decodeURIComponent;
}else{
_136=unescape;
}
if(_132){
for(var i=0;i&lt;_134.length;i++){
var pair=_134[i].split("=");
var name=_136(pair.shift());
if(!name){
continue;
}
var arr=o[name];
if(!(arr instanceof Array)){
arr=[];
o[name]=arr;
}
arr.push(_136(pair.join("=")));
}
}else{
for(i=0;i&lt;_134.length;i++){
pair=_134[i].split("=");
var name=pair.shift();
if(!name){
continue;
}
o[_136(name)]=_136(pair.join("="));
}
}
return o;
}});
MochiKit.Base.AdapterRegistry=function(){
this.pairs=[];
};
MochiKit.Base.AdapterRegistry.prototype={register:function(name,_13c,wrap,_13e){
if(_13e){
this.pairs.unshift([name,_13c,wrap]);
}else{
this.pairs.push([name,_13c,wrap]);
}
},match:function(){
for(var i=0;i&lt;this.pairs.length;i++){
var pair=this.pairs[i];
if(pair[1].apply(this,arguments)){
return pair[2].apply(this,arguments);
}
}
throw MochiKit.Base.NotFound;
},unregister:function(name){
for(var i=0;i&lt;this.pairs.length;i++){
var pair=this.pairs[i];
if(pair[0]==name){
this.pairs.splice(i,1);
return true;
}
}
return false;
}};
MochiKit.Base.EXPORT=["flattenArray","noop","camelize","counter","clone","extend","update","updatetree","setdefault","keys","values","items","NamedError","operator","forwardCall","itemgetter","typeMatcher","isCallable","isUndefined","isUndefinedOrNull","isNull","isEmpty","isNotEmpty","isArrayLike","isDateLike","xmap","map","xfilter","filter","methodcaller","compose","bind","bindMethods","NotFound","AdapterRegistry","registerComparator","compare","registerRepr","repr","objEqual","arrayEqual","concat","keyComparator","reverseKeyComparator","partial","merge","listMinMax","listMax","listMin","objMax","objMin","nodeWalk","zip","urlEncode","queryString","serializeJSON","registerJSON","evalJSON","parseQueryString","findValue","findIdentical","flattenArguments","method","average","mean","median"];
MochiKit.Base.EXPORT_OK=["nameFunctions","comparatorRegistry","reprRegistry","jsonRegistry","compareDateLike","compareArrayLike","reprArrayLike","reprString","reprNumber"];
MochiKit.Base._exportSymbols=function(_144,_145){
if(!MochiKit.__export__){
return;
}
var all=_145.EXPORT_TAGS[":all"];
for(var i=0;i&lt;all.length;i++){
_144[all[i]]=_145[all[i]];
}
};
MochiKit.Base.__new__=function(){
var m=this;
m.noop=m.operator.identity;
m.forward=m.forwardCall;
m.find=m.findValue;
if(typeof (encodeURIComponent)!="undefined"){
m.urlEncode=function(_149){
return encodeURIComponent(_149).replace(/\'/g,"%27");
};
}else{
m.urlEncode=function(_14a){
return escape(_14a).replace(/\+/g,"%2B").replace(/\"/g,"%22").rval.replace(/\'/g,"%27");
};
}
m.NamedError=function(name){
this.message=name;
this.name=name;
};
m.NamedError.prototype=new Error();
m.update(m.NamedError.prototype,{repr:function(){
if(this.message&amp;&amp;this.message!=this.name){
return this.name+"("+m.repr(this.message)+")";
}else{
return this.name+"()";
}
},toString:m.forwardCall("repr")});
m.NotFound=new m.NamedError("MochiKit.Base.NotFound");
m.listMax=m.partial(m.listMinMax,1);
m.listMin=m.partial(m.listMinMax,-1);
m.isCallable=m.typeMatcher("function");
m.isUndefined=m.typeMatcher("undefined");
m.merge=m.partial(m.update,null);
m.zip=m.partial(m.map,null);
m.average=m.mean;
m.comparatorRegistry=new m.AdapterRegistry();
m.registerComparator("dateLike",m.isDateLike,m.compareDateLike);
m.registerComparator("arrayLike",m.isArrayLike,m.compareArrayLike);
m.reprRegistry=new m.AdapterRegistry();
m.registerRepr("arrayLike",m.isArrayLike,m.reprArrayLike);
m.registerRepr("string",m.typeMatcher("string"),m.reprString);
m.registerRepr("numbers",m.typeMatcher("number","boolean"),m.reprNumber);
m.jsonRegistry=new m.AdapterRegistry();
var all=m.concat(m.EXPORT,m.EXPORT_OK);
m.EXPORT_TAGS={":common":m.concat(m.EXPORT_OK),":all":all};
m.nameFunctions(this);
};
MochiKit.Base.__new__();
if(MochiKit.__export__){
compare=MochiKit.Base.compare;
compose=MochiKit.Base.compose;
serializeJSON=MochiKit.Base.serializeJSON;
}
MochiKit.Base._exportSymbols(this,MochiKit.Base);
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Iter");
dojo.require("MochiKit.Base");
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit.Base",[]);
}
try{
if(typeof (MochiKit.Base)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Iter depends on MochiKit.Base!";
}
if(typeof (MochiKit.Iter)=="undefined"){
MochiKit.Iter={};
}
MochiKit.Iter.NAME="MochiKit.Iter";
MochiKit.Iter.VERSION="1.4";
MochiKit.Base.update(MochiKit.Iter,{__repr__:function(){
return "["+this.NAME+" "+this.VERSION+"]";
},toString:function(){
return this.__repr__();
},registerIteratorFactory:function(name,_14e,_14f,_150){
MochiKit.Iter.iteratorRegistry.register(name,_14e,_14f,_150);
},iter:function(_151,_152){
var self=MochiKit.Iter;
if(arguments.length==2){
return self.takewhile(function(a){
return a!=_152;
},_151);
}
if(typeof (_151.next)=="function"){
return _151;
}else{
if(typeof (_151.iter)=="function"){
return _151.iter();
}
}
try{
return self.iteratorRegistry.match(_151);
}
catch(e){
var m=MochiKit.Base;
if(e==m.NotFound){
e=new TypeError(typeof (_151)+": "+m.repr(_151)+" is not iterable");
}
throw e;
}
},count:function(n){
if(!n){
n=0;
}
var m=MochiKit.Base;
return {repr:function(){
return "count("+n+")";
},toString:m.forwardCall("repr"),next:m.counter(n)};
},cycle:function(p){
var self=MochiKit.Iter;
var m=MochiKit.Base;
var lst=[];
var _15c=self.iter(p);
return {repr:function(){
return "cycle(...)";
},toString:m.forwardCall("repr"),next:function(){
try{
var rval=_15c.next();
lst.push(rval);
return rval;
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
if(lst.length===0){
this.next=function(){
throw self.StopIteration;
};
}else{
var i=-1;
this.next=function(){
i=(i+1)%lst.length;
return lst[i];
};
}
return this.next();
}
}};
},repeat:function(elem,n){
var m=MochiKit.Base;
if(typeof (n)=="undefined"){
return {repr:function(){
return "repeat("+m.repr(elem)+")";
},toString:m.forwardCall("repr"),next:function(){
return elem;
}};
}
return {repr:function(){
return "repeat("+m.repr(elem)+", "+n+")";
},toString:m.forwardCall("repr"),next:function(){
if(n&lt;=0){
throw MochiKit.Iter.StopIteration;
}
n-=1;
return elem;
}};
},next:function(_162){
return _162.next();
},izip:function(p,q){
var m=MochiKit.Base;
var self=MochiKit.Iter;
var next=self.next;
var _168=m.map(self.iter,arguments);
return {repr:function(){
return "izip(...)";
},toString:m.forwardCall("repr"),next:function(){
return m.map(next,_168);
}};
},ifilter:function(pred,seq){
var m=MochiKit.Base;
seq=MochiKit.Iter.iter(seq);
if(pred===null){
pred=m.operator.truth;
}
return {repr:function(){
return "ifilter(...)";
},toString:m.forwardCall("repr"),next:function(){
while(true){
var rval=seq.next();
if(pred(rval)){
return rval;
}
}
return undefined;
}};
},ifilterfalse:function(pred,seq){
var m=MochiKit.Base;
seq=MochiKit.Iter.iter(seq);
if(pred===null){
pred=m.operator.truth;
}
return {repr:function(){
return "ifilterfalse(...)";
},toString:m.forwardCall("repr"),next:function(){
while(true){
var rval=seq.next();
if(!pred(rval)){
return rval;
}
}
return undefined;
}};
},islice:function(seq){
var self=MochiKit.Iter;
var m=MochiKit.Base;
seq=self.iter(seq);
var _174=0;
var stop=0;
var step=1;
var i=-1;
if(arguments.length==2){
stop=arguments[1];
}else{
if(arguments.length==3){
_174=arguments[1];
stop=arguments[2];
}else{
_174=arguments[1];
stop=arguments[2];
step=arguments[3];
}
}
return {repr:function(){
return "islice("+["...",_174,stop,step].join(", ")+")";
},toString:m.forwardCall("repr"),next:function(){
var rval;
while(i&lt;_174){
rval=seq.next();
i++;
}
if(_174&gt;=stop){
throw self.StopIteration;
}
_174+=step;
return rval;
}};
},imap:function(fun,p,q){
var m=MochiKit.Base;
var self=MochiKit.Iter;
var _17e=m.map(self.iter,m.extend(null,arguments,1));
var map=m.map;
var next=self.next;
return {repr:function(){
return "imap(...)";
},toString:m.forwardCall("repr"),next:function(){
return fun.apply(this,map(next,_17e));
}};
},applymap:function(fun,seq,self){
seq=MochiKit.Iter.iter(seq);
var m=MochiKit.Base;
return {repr:function(){
return "applymap(...)";
},toString:m.forwardCall("repr"),next:function(){
return fun.apply(self,seq.next());
}};
},chain:function(p,q){
var self=MochiKit.Iter;
var m=MochiKit.Base;
if(arguments.length==1){
return self.iter(arguments[0]);
}
var _189=m.map(self.iter,arguments);
return {repr:function(){
return "chain(...)";
},toString:m.forwardCall("repr"),next:function(){
while(_189.length&gt;1){
try{
return _189[0].next();
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
_189.shift();
}
}
if(_189.length==1){
var arg=_189.shift();
this.next=m.bind("next",arg);
return this.next();
}
throw self.StopIteration;
}};
},takewhile:function(pred,seq){
var self=MochiKit.Iter;
seq=self.iter(seq);
return {repr:function(){
return "takewhile(...)";
},toString:MochiKit.Base.forwardCall("repr"),next:function(){
var rval=seq.next();
if(!pred(rval)){
this.next=function(){
throw self.StopIteration;
};
this.next();
}
return rval;
}};
},dropwhile:function(pred,seq){
seq=MochiKit.Iter.iter(seq);
var m=MochiKit.Base;
var bind=m.bind;
return {"repr":function(){
return "dropwhile(...)";
},"toString":m.forwardCall("repr"),"next":function(){
while(true){
var rval=seq.next();
if(!pred(rval)){
break;
}
}
this.next=bind("next",seq);
return rval;
}};
},_tee:function(_194,sync,_196){
sync.pos[_194]=-1;
var m=MochiKit.Base;
var _198=m.listMin;
return {repr:function(){
return "tee("+_194+", ...)";
},toString:m.forwardCall("repr"),next:function(){
var rval;
var i=sync.pos[_194];
if(i==sync.max){
rval=_196.next();
sync.deque.push(rval);
sync.max+=1;
sync.pos[_194]+=1;
}else{
rval=sync.deque[i-sync.min];
sync.pos[_194]+=1;
if(i==sync.min&amp;&amp;_198(sync.pos)!=sync.min){
sync.min+=1;
sync.deque.shift();
}
}
return rval;
}};
},tee:function(_19b,n){
var rval=[];
var sync={"pos":[],"deque":[],"max":-1,"min":-1};
if(arguments.length==1||typeof (n)=="undefined"||n===null){
n=2;
}
var self=MochiKit.Iter;
_19b=self.iter(_19b);
var _tee=self._tee;
for(var i=0;i&lt;n;i++){
rval.push(_tee(i,sync,_19b));
}
return rval;
},list:function(_1a2){
var rval;
if(_1a2 instanceof Array){
return _1a2.slice();
}
if(typeof (_1a2)=="function"&amp;&amp;!(_1a2 instanceof Function)&amp;&amp;typeof (_1a2.length)=="number"){
rval=[];
for(var i=0;i&lt;_1a2.length;i++){
rval.push(_1a2[i]);
}
return rval;
}
var self=MochiKit.Iter;
_1a2=self.iter(_1a2);
var rval=[];
try{
while(true){
rval.push(_1a2.next());
}
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
return rval;
}
return undefined;
},reduce:function(fn,_1a7,_1a8){
var i=0;
var x=_1a8;
var self=MochiKit.Iter;
_1a7=self.iter(_1a7);
if(arguments.length&lt;3){
try{
x=_1a7.next();
}
catch(e){
if(e==self.StopIteration){
e=new TypeError("reduce() of empty sequence with no initial value");
}
throw e;
}
i++;
}
try{
while(true){
x=fn(x,_1a7.next());
}
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
}
return x;
},range:function(){
var _1ac=0;
var stop=0;
var step=1;
if(arguments.length==1){
stop=arguments[0];
}else{
if(arguments.length==2){
_1ac=arguments[0];
stop=arguments[1];
}else{
if(arguments.length==3){
_1ac=arguments[0];
stop=arguments[1];
step=arguments[2];
}else{
throw new TypeError("range() takes 1, 2, or 3 arguments!");
}
}
}
if(step===0){
throw new TypeError("range() step must not be 0");
}
return {next:function(){
if((step&gt;0&amp;&amp;_1ac&gt;=stop)||(step&lt;0&amp;&amp;_1ac&lt;=stop)){
throw MochiKit.Iter.StopIteration;
}
var rval=_1ac;
_1ac+=step;
return rval;
},repr:function(){
return "range("+[_1ac,stop,step].join(", ")+")";
},toString:MochiKit.Base.forwardCall("repr")};
},sum:function(_1b0,_1b1){
if(typeof (_1b1)=="undefined"||_1b1===null){
_1b1=0;
}
var x=_1b1;
var self=MochiKit.Iter;
_1b0=self.iter(_1b0);
try{
while(true){
x+=_1b0.next();
}
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
}
return x;
},exhaust:function(_1b4){
var self=MochiKit.Iter;
_1b4=self.iter(_1b4);
try{
while(true){
_1b4.next();
}
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
}
},forEach:function(_1b6,func,self){
var m=MochiKit.Base;
if(arguments.length&gt;2){
func=m.bind(func,self);
}
if(m.isArrayLike(_1b6)){
try{
for(var i=0;i&lt;_1b6.length;i++){
func(_1b6[i]);
}
}
catch(e){
if(e!=MochiKit.Iter.StopIteration){
throw e;
}
}
}else{
self=MochiKit.Iter;
self.exhaust(self.imap(func,_1b6));
}
},every:function(_1bb,func){
var self=MochiKit.Iter;
try{
self.ifilterfalse(func,_1bb).next();
return false;
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
return true;
}
},sorted:function(_1be,cmp){
var rval=MochiKit.Iter.list(_1be);
if(arguments.length==1){
cmp=MochiKit.Base.compare;
}
rval.sort(cmp);
return rval;
},reversed:function(_1c1){
var rval=MochiKit.Iter.list(_1c1);
rval.reverse();
return rval;
},some:function(_1c3,func){
var self=MochiKit.Iter;
try{
self.ifilter(func,_1c3).next();
return true;
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
return false;
}
},iextend:function(lst,_1c7){
if(MochiKit.Base.isArrayLike(_1c7)){
for(var i=0;i&lt;_1c7.length;i++){
lst.push(_1c7[i]);
}
}else{
var self=MochiKit.Iter;
_1c7=self.iter(_1c7);
try{
while(true){
lst.push(_1c7.next());
}
}
catch(e){
if(e!=self.StopIteration){
throw e;
}
}
}
return lst;
},groupby:function(_1ca,_1cb){
var m=MochiKit.Base;
var self=MochiKit.Iter;
if(arguments.length&lt;2){
_1cb=m.operator.identity;
}
_1ca=self.iter(_1ca);
var pk=undefined;
var k=undefined;
var v;
function fetch(){
v=_1ca.next();
k=_1cb(v);
}
function eat(){
var ret=v;
v=undefined;
return ret;
}
var _1d2=true;
var _1d3=m.compare;
return {repr:function(){
return "groupby(...)";
},next:function(){
while(_1d3(k,pk)===0){
fetch();
if(_1d2){
_1d2=false;
break;
}
}
pk=k;
return [k,{next:function(){
if(v==undefined){
fetch();
}
if(_1d3(k,pk)!==0){
throw self.StopIteration;
}
return eat();
}}];
}};
},groupby_as_array:function(_1d4,_1d5){
var m=MochiKit.Base;
var self=MochiKit.Iter;
if(arguments.length&lt;2){
_1d5=m.operator.identity;
}
_1d4=self.iter(_1d4);
var _1d8=[];
var _1d9=true;
var _1da;
var _1db=m.compare;
while(true){
try{
var _1dc=_1d4.next();
var key=_1d5(_1dc);
}
catch(e){
if(e==self.StopIteration){
break;
}
throw e;
}
if(_1d9||_1db(key,_1da)!==0){
var _1de=[];
_1d8.push([key,_1de]);
}
_1de.push(_1dc);
_1d9=false;
_1da=key;
}
return _1d8;
},arrayLikeIter:function(_1df){
var i=0;
return {repr:function(){
return "arrayLikeIter(...)";
},toString:MochiKit.Base.forwardCall("repr"),next:function(){
if(i&gt;=_1df.length){
throw MochiKit.Iter.StopIteration;
}
return _1df[i++];
}};
},hasIterateNext:function(_1e1){
return (_1e1&amp;&amp;typeof (_1e1.iterateNext)=="function");
},iterateNextIter:function(_1e2){
return {repr:function(){
return "iterateNextIter(...)";
},toString:MochiKit.Base.forwardCall("repr"),next:function(){
var rval=_1e2.iterateNext();
if(rval===null||rval===undefined){
throw MochiKit.Iter.StopIteration;
}
return rval;
}};
}});
MochiKit.Iter.EXPORT_OK=["iteratorRegistry","arrayLikeIter","hasIterateNext","iterateNextIter",];
MochiKit.Iter.EXPORT=["StopIteration","registerIteratorFactory","iter","count","cycle","repeat","next","izip","ifilter","ifilterfalse","islice","imap","applymap","chain","takewhile","dropwhile","tee","list","reduce","range","sum","exhaust","forEach","every","sorted","reversed","some","iextend","groupby","groupby_as_array"];
MochiKit.Iter.__new__=function(){
var m=MochiKit.Base;
if(typeof (StopIteration)!="undefined"){
this.StopIteration=StopIteration;
}else{
this.StopIteration=new m.NamedError("StopIteration");
}
this.iteratorRegistry=new m.AdapterRegistry();
this.registerIteratorFactory("arrayLike",m.isArrayLike,this.arrayLikeIter);
this.registerIteratorFactory("iterateNext",this.hasIterateNext,this.iterateNextIter);
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
m.nameFunctions(this);
};
MochiKit.Iter.__new__();
if(MochiKit.__export__){
reduce=MochiKit.Iter.reduce;
}
MochiKit.Base._exportSymbols(this,MochiKit.Iter);
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Logging");
dojo.require("MochiKit.Base");
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit.Base",[]);
}
try{
if(typeof (MochiKit.Base)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Logging depends on MochiKit.Base!";
}
if(typeof (MochiKit.Logging)=="undefined"){
MochiKit.Logging={};
}
MochiKit.Logging.NAME="MochiKit.Logging";
MochiKit.Logging.VERSION="1.4";
MochiKit.Logging.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.Logging.toString=function(){
return this.__repr__();
};
MochiKit.Logging.EXPORT=["LogLevel","LogMessage","Logger","alertListener","logger","log","logError","logDebug","logFatal","logWarning"];
MochiKit.Logging.EXPORT_OK=["logLevelAtLeast","isLogMessage","compareLogMessage"];
MochiKit.Logging.LogMessage=function(num,_1e6,info){
this.num=num;
this.level=_1e6;
this.info=info;
this.timestamp=new Date();
};
MochiKit.Logging.LogMessage.prototype={repr:function(){
var m=MochiKit.Base;
return "LogMessage("+m.map(m.repr,[this.num,this.level,this.info]).join(", ")+")";
},toString:MochiKit.Base.forwardCall("repr")};
MochiKit.Base.update(MochiKit.Logging,{logLevelAtLeast:function(_1e9){
var self=MochiKit.Logging;
if(typeof (_1e9)=="string"){
_1e9=self.LogLevel[_1e9];
}
return function(msg){
var _1ec=msg.level;
if(typeof (_1ec)=="string"){
_1ec=self.LogLevel[_1ec];
}
return _1ec&gt;=_1e9;
};
},isLogMessage:function(){
var _1ed=MochiKit.Logging.LogMessage;
for(var i=0;i&lt;arguments.length;i++){
if(!(arguments[i] instanceof _1ed)){
return false;
}
}
return true;
},compareLogMessage:function(a,b){
return MochiKit.Base.compare([a.level,a.info],[b.level,b.info]);
},alertListener:function(msg){
alert("num: "+msg.num+"\nlevel: "+msg.level+"\ninfo: "+msg.info.join(" "));
}});
MochiKit.Logging.Logger=function(_1f2){
this.counter=0;
if(typeof (_1f2)=="undefined"||_1f2===null){
_1f2=-1;
}
this.maxSize=_1f2;
this._messages=[];
this.listeners={};
this.useNativeConsole=false;
};
MochiKit.Logging.Logger.prototype={clear:function(){
this._messages.splice(0,this._messages.length);
},logToConsole:function(msg){
if(typeof (window)!="undefined"&amp;&amp;window.console&amp;&amp;window.console.log){
window.console.log(msg.replace(/%/g,"\uff05"));
}else{
if(typeof (opera)!="undefined"&amp;&amp;opera.postError){
opera.postError(msg);
}else{
if(typeof (printfire)=="function"){
printfire(msg);
}else{
if(typeof (Debug)!="undefined"&amp;&amp;Debug.writeln){
Debug.writeln(msg);
}else{
if(typeof (debug)!="undefined"&amp;&amp;debug.trace){
debug.trace(msg);
}
}
}
}
}
},dispatchListeners:function(msg){
for(var k in this.listeners){
var pair=this.listeners[k];
if(pair.ident!=k||(pair[0]&amp;&amp;!pair[0](msg))){
continue;
}
pair[1](msg);
}
},addListener:function(_1f7,_1f8,_1f9){
if(typeof (_1f8)=="string"){
_1f8=MochiKit.Logging.logLevelAtLeast(_1f8);
}
var _1fa=[_1f8,_1f9];
_1fa.ident=_1f7;
this.listeners[_1f7]=_1fa;
},removeListener:function(_1fb){
delete this.listeners[_1fb];
},baseLog:function(_1fc,_1fd){
var msg=new MochiKit.Logging.LogMessage(this.counter,_1fc,MochiKit.Base.extend(null,arguments,1));
this._messages.push(msg);
this.dispatchListeners(msg);
if(this.useNativeConsole){
this.logToConsole(msg.level+": "+msg.info.join(" "));
}
this.counter+=1;
while(this.maxSize&gt;=0&amp;&amp;this._messages.length&gt;this.maxSize){
this._messages.shift();
}
},getMessages:function(_1ff){
var _200=0;
if(!(typeof (_1ff)=="undefined"||_1ff===null)){
_200=Math.max(0,this._messages.length-_1ff);
}
return this._messages.slice(_200);
},getMessageText:function(_201){
if(typeof (_201)=="undefined"||_201===null){
_201=30;
}
var _202=this.getMessages(_201);
if(_202.length){
var lst=map(function(m){
return "\n  ["+m.num+"] "+m.level+": "+m.info.join(" ");
},_202);
lst.unshift("LAST "+_202.length+" MESSAGES:");
return lst.join("");
}
return "";
},debuggingBookmarklet:function(_205){
if(typeof (MochiKit.LoggingPane)=="undefined"){
alert(this.getMessageText());
}else{
MochiKit.LoggingPane.createLoggingPane(_205||false);
}
}};
MochiKit.Logging.__new__=function(){
this.LogLevel={ERROR:40,FATAL:50,WARNING:30,INFO:20,DEBUG:10};
var m=MochiKit.Base;
m.registerComparator("LogMessage",this.isLogMessage,this.compareLogMessage);
var _207=m.partial;
var _208=this.Logger;
var _209=_208.prototype.baseLog;
m.update(this.Logger.prototype,{debug:_207(_209,"DEBUG"),log:_207(_209,"INFO"),error:_207(_209,"ERROR"),fatal:_207(_209,"FATAL"),warning:_207(_209,"WARNING")});
var self=this;
var _20b=function(name){
return function(){
self.logger[name].apply(self.logger,arguments);
};
};
this.log=_20b("log");
this.logError=_20b("error");
this.logDebug=_20b("debug");
this.logFatal=_20b("fatal");
this.logWarning=_20b("warning");
this.logger=new _208();
this.logger.useNativeConsole=true;
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
m.nameFunctions(this);
};
if(typeof (printfire)=="undefined"&amp;&amp;typeof (document)!="undefined"&amp;&amp;document.createEvent&amp;&amp;typeof (dispatchEvent)!="undefined"){
printfire=function(){
printfire.args=arguments;
var ev=document.createEvent("Events");
ev.initEvent("printfire",false,true);
dispatchEvent(ev);
};
}
MochiKit.Logging.__new__();
MochiKit.Base._exportSymbols(this,MochiKit.Logging);
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.DateTime");
}
if(typeof (MochiKit)=="undefined"){
MochiKit={};
}
if(typeof (MochiKit.DateTime)=="undefined"){
MochiKit.DateTime={};
}
MochiKit.DateTime.NAME="MochiKit.DateTime";
MochiKit.DateTime.VERSION="1.4";
MochiKit.DateTime.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.DateTime.toString=function(){
return this.__repr__();
};
MochiKit.DateTime.isoDate=function(str){
str=str+"";
if(typeof (str)!="string"||str.length===0){
return null;
}
var iso=str.split("-");
if(iso.length===0){
return null;
}
return new Date(iso[0],iso[1]-1,iso[2]);
};
MochiKit.DateTime._isoRegexp=/(\d{4,})(?:-(\d{1,2})(?:-(\d{1,2})(?:[T ](\d{1,2}):(\d{1,2})(?::(\d{1,2})(?:\.(\d+))?)?(?:(Z)|([+-])(\d{1,2})(?::(\d{1,2}))?)?)?)?)?/;
MochiKit.DateTime.isoTimestamp=function(str){
str=str+"";
if(typeof (str)!="string"||str.length===0){
return null;
}
var res=str.match(MochiKit.DateTime._isoRegexp);
if(typeof (res)=="undefined"||res===null){
return null;
}
var year,_213,day,hour,min,sec,msec;
year=parseInt(res[1],10);
if(typeof (res[2])=="undefined"||res[2]===""){
return new Date(year);
}
_213=parseInt(res[2],10)-1;
day=parseInt(res[3],10);
if(typeof (res[4])=="undefined"||res[4]===""){
return new Date(year,_213,day);
}
hour=parseInt(res[4],10);
min=parseInt(res[5],10);
sec=(typeof (res[6])!="undefined"&amp;&amp;res[6]!=="")?parseInt(res[6],10):0;
if(typeof (res[7])!="undefined"&amp;&amp;res[7]!==""){
msec=Math.round(1000*parseFloat("0."+res[7]));
}else{
msec=0;
}
if((typeof (res[8])=="undefined"||res[8]==="")&amp;&amp;(typeof (res[9])=="undefined"||res[9]==="")){
return new Date(year,_213,day,hour,min,sec,msec);
}
var ofs;
if(typeof (res[9])!="undefined"&amp;&amp;res[9]!==""){
ofs=parseInt(res[10],10)*3600000;
if(typeof (res[11])!="undefined"&amp;&amp;res[11]!==""){
ofs+=parseInt(res[11],10)*60000;
}
if(res[9]=="-"){
ofs=-ofs;
}
}else{
ofs=0;
}
return new Date(Date.UTC(year,_213,day,hour,min,sec,msec)-ofs);
};
MochiKit.DateTime.toISOTime=function(date,_21b){
if(typeof (date)=="undefined"||date===null){
return null;
}
var hh=date.getHours();
var mm=date.getMinutes();
var ss=date.getSeconds();
var lst=[((_21b&amp;&amp;(hh&lt;10))?"0"+hh:hh),((mm&lt;10)?"0"+mm:mm),((ss&lt;10)?"0"+ss:ss)];
return lst.join(":");
};
MochiKit.DateTime.toISOTimestamp=function(date,_221){
if(typeof (date)=="undefined"||date===null){
return null;
}
var sep=_221?"T":" ";
var foot=_221?"Z":"";
if(_221){
date=new Date(date.getTime()+(date.getTimezoneOffset()*60000));
}
return MochiKit.DateTime.toISODate(date)+sep+MochiKit.DateTime.toISOTime(date,_221)+foot;
};
MochiKit.DateTime.toISODate=function(date){
if(typeof (date)=="undefined"||date===null){
return null;
}
var _225=MochiKit.DateTime._padTwo;
return [date.getFullYear(),_225(date.getMonth()+1),_225(date.getDate())].join("-");
};
MochiKit.DateTime.americanDate=function(d){
d=d+"";
if(typeof (d)!="string"||d.length===0){
return null;
}
var a=d.split("/");
return new Date(a[2],a[0]-1,a[1]);
};
MochiKit.DateTime._padTwo=function(n){
return (n&gt;9)?n:"0"+n;
};
MochiKit.DateTime.toPaddedAmericanDate=function(d){
if(typeof (d)=="undefined"||d===null){
return null;
}
var _22a=MochiKit.DateTime._padTwo;
return [_22a(d.getMonth()+1),_22a(d.getDate()),d.getFullYear()].join("/");
};
MochiKit.DateTime.toAmericanDate=function(d){
if(typeof (d)=="undefined"||d===null){
return null;
}
return [d.getMonth()+1,d.getDate(),d.getFullYear()].join("/");
};
MochiKit.DateTime.EXPORT=["isoDate","isoTimestamp","toISOTime","toISOTimestamp","toISODate","americanDate","toPaddedAmericanDate","toAmericanDate"];
MochiKit.DateTime.EXPORT_OK=[];
MochiKit.DateTime.EXPORT_TAGS={":common":MochiKit.DateTime.EXPORT,":all":MochiKit.DateTime.EXPORT};
MochiKit.DateTime.__new__=function(){
var base=this.NAME+".";
for(var k in this){
var o=this[k];
if(typeof (o)=="function"&amp;&amp;typeof (o.NAME)=="undefined"){
try{
o.NAME=base+k;
}
catch(e){
}
}
}
};
MochiKit.DateTime.__new__();
if(typeof (MochiKit.Base)!="undefined"){
MochiKit.Base._exportSymbols(this,MochiKit.DateTime);
}else{
(function(_22f,_230){
if((typeof (JSAN)=="undefined"&amp;&amp;typeof (dojo)=="undefined")||(MochiKit.__export__===false)){
var all=_230.EXPORT_TAGS[":all"];
for(var i=0;i&lt;all.length;i++){
_22f[all[i]]=_230[all[i]];
}
}
})(this,MochiKit.DateTime);
}
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Format");
}
if(typeof (MochiKit)=="undefined"){
MochiKit={};
}
if(typeof (MochiKit.Format)=="undefined"){
MochiKit.Format={};
}
MochiKit.Format.NAME="MochiKit.Format";
MochiKit.Format.VERSION="1.4";
MochiKit.Format.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.Format.toString=function(){
return this.__repr__();
};
MochiKit.Format._numberFormatter=function(_233,_234,_235,_236,_237,_238,_239,_23a,_23b){
return function(num){
num=parseFloat(num);
if(typeof (num)=="undefined"||num===null||isNaN(num)){
return _233;
}
var _23d=_234;
var _23e=_235;
if(num&lt;0){
num=-num;
}else{
_23d=_23d.replace(/-/,"");
}
var me=arguments.callee;
var fmt=MochiKit.Format.formatLocale(_236);
if(_237){
num=num*100;
_23e=fmt.percent+_23e;
}
num=MochiKit.Format.roundToFixed(num,_238);
var _241=num.split(/\./);
var _242=_241[0];
var frac=(_241.length==1)?"":_241[1];
var res="";
while(_242.length&lt;_239){
_242="0"+_242;
}
if(_23a){
while(_242.length&gt;_23a){
var i=_242.length-_23a;
res=fmt.separator+_242.substring(i,_242.length)+res;
_242=_242.substring(0,i);
}
}
res=_242+res;
if(_238&gt;0){
while(frac.length&lt;_23b){
frac=frac+"0";
}
res=res+fmt.decimal+frac;
}
return _23d+res+_23e;
};
};
MochiKit.Format.numberFormatter=function(_246,_247,_248){
if(typeof (_247)=="undefined"){
_247="";
}
var _249=_246.match(/((?:[0#]+,)?[0#]+)(?:\.([0#]+))?(%)?/);
if(!_249){
throw TypeError("Invalid pattern");
}
var _24a=_246.substr(0,_249.index);
var _24b=_246.substr(_249.index+_249[0].length);
if(_24a.search(/-/)==-1){
_24a=_24a+"-";
}
var _24c=_249[1];
var frac=(typeof (_249[2])=="string"&amp;&amp;_249[2]!="")?_249[2]:"";
var _24e=(typeof (_249[3])=="string"&amp;&amp;_249[3]!="");
var tmp=_24c.split(/,/);
var _250;
if(typeof (_248)=="undefined"){
_248="default";
}
if(tmp.length==1){
_250=null;
}else{
_250=tmp[1].length;
}
var _251=_24c.length-_24c.replace(/0/g,"").length;
var _252=frac.length-frac.replace(/0/g,"").length;
var _253=frac.length;
var rval=MochiKit.Format._numberFormatter(_247,_24a,_24b,_248,_24e,_253,_251,_250,_252);
var m=MochiKit.Base;
if(m){
var fn=arguments.callee;
var args=m.concat(arguments);
rval.repr=function(){
return [self.NAME,"(",map(m.repr,args).join(", "),")"].join("");
};
}
return rval;
};
MochiKit.Format.formatLocale=function(_258){
if(typeof (_258)=="undefined"||_258===null){
_258="default";
}
if(typeof (_258)=="string"){
var rval=MochiKit.Format.LOCALE[_258];
if(typeof (rval)=="string"){
rval=arguments.callee(rval);
MochiKit.Format.LOCALE[_258]=rval;
}
return rval;
}else{
return _258;
}
};
MochiKit.Format.twoDigitAverage=function(_25a,_25b){
if(_25b){
var res=_25a/_25b;
if(!isNaN(res)){
return MochiKit.Format.twoDigitFloat(_25a/_25b);
}
}
return "0";
};
MochiKit.Format.twoDigitFloat=function(_25d){
var sign=(_25d&lt;0?"-":"");
var s=Math.floor(Math.abs(_25d)*100).toString();
if(s=="0"){
return s;
}
if(s.length&lt;3){
while(s.charAt(s.length-1)=="0"){
s=s.substring(0,s.length-1);
}
return sign+"0."+s;
}
var head=sign+s.substring(0,s.length-2);
var tail=s.substring(s.length-2,s.length);
if(tail=="00"){
return head;
}else{
if(tail.charAt(1)=="0"){
return head+"."+tail.charAt(0);
}else{
return head+"."+tail;
}
}
};
MochiKit.Format.lstrip=function(str,_263){
str=str+"";
if(typeof (str)!="string"){
return null;
}
if(!_263){
return str.replace(/^\s+/,"");
}else{
return str.replace(new RegExp("^["+_263+"]+"),"");
}
};
MochiKit.Format.rstrip=function(str,_265){
str=str+"";
if(typeof (str)!="string"){
return null;
}
if(!_265){
return str.replace(/\s+$/,"");
}else{
return str.replace(new RegExp("["+_265+"]+$"),"");
}
};
MochiKit.Format.strip=function(str,_267){
var self=MochiKit.Format;
return self.rstrip(self.lstrip(str,_267),_267);
};
MochiKit.Format.truncToFixed=function(_269,_26a){
_269=Math.floor(_269*Math.pow(10,_26a));
var res=(_269*Math.pow(10,-_26a)).toFixed(_26a);
if(res.charAt(0)=="."){
res="0"+res;
}
return res;
};
MochiKit.Format.roundToFixed=function(_26c,_26d){
return MochiKit.Format.truncToFixed(_26c+0.5*Math.pow(10,-_26d),_26d);
};
MochiKit.Format.percentFormat=function(_26e){
return MochiKit.Format.twoDigitFloat(100*_26e)+"%";
};
MochiKit.Format.EXPORT=["truncToFixed","roundToFixed","numberFormatter","formatLocale","twoDigitAverage","twoDigitFloat","percentFormat","lstrip","rstrip","strip"];
MochiKit.Format.LOCALE={en_US:{separator:",",decimal:".",percent:"%"},de_DE:{separator:".",decimal:",",percent:"%"},fr_FR:{separator:" ",decimal:",",percent:"%"},"default":"en_US"};
MochiKit.Format.EXPORT_OK=[];
MochiKit.Format.EXPORT_TAGS={":all":MochiKit.Format.EXPORT,":common":MochiKit.Format.EXPORT};
MochiKit.Format.__new__=function(){
var base=this.NAME+".";
var k,v,o;
for(k in this.LOCALE){
o=this.LOCALE[k];
if(typeof (o)=="object"){
o.repr=function(){
return this.NAME;
};
o.NAME=base+"LOCALE."+k;
}
}
for(k in this){
o=this[k];
if(typeof (o)=="function"&amp;&amp;typeof (o.NAME)=="undefined"){
try{
o.NAME=base+k;
}
catch(e){
}
}
}
};
MochiKit.Format.__new__();
if(typeof (MochiKit.Base)!="undefined"){
MochiKit.Base._exportSymbols(this,MochiKit.Format);
}else{
(function(_273,_274){
if((typeof (JSAN)=="undefined"&amp;&amp;typeof (dojo)=="undefined")||(MochiKit.__export__===false)){
var all=_274.EXPORT_TAGS[":all"];
for(var i=0;i&lt;all.length;i++){
_273[all[i]]=_274[all[i]];
}
}
})(this,MochiKit.Format);
}
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Async");
dojo.require("MochiKit.Base");
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit.Base",[]);
}
try{
if(typeof (MochiKit.Base)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Async depends on MochiKit.Base!";
}
if(typeof (MochiKit.Async)=="undefined"){
MochiKit.Async={};
}
MochiKit.Async.NAME="MochiKit.Async";
MochiKit.Async.VERSION="1.4";
MochiKit.Async.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.Async.toString=function(){
return this.__repr__();
};
MochiKit.Async.Deferred=function(_277){
this.chain=[];
this.id=this._nextId();
this.fired=-1;
this.paused=0;
this.results=[null,null];
this.canceller=_277;
this.silentlyCancelled=false;
this.chained=false;
};
MochiKit.Async.Deferred.prototype={repr:function(){
var _278;
if(this.fired==-1){
_278="unfired";
}else{
if(this.fired===0){
_278="success";
}else{
_278="error";
}
}
return "Deferred("+this.id+", "+_278+")";
},toString:MochiKit.Base.forwardCall("repr"),_nextId:MochiKit.Base.counter(),cancel:function(){
var self=MochiKit.Async;
if(this.fired==-1){
if(this.canceller){
this.canceller(this);
}else{
this.silentlyCancelled=true;
}
if(this.fired==-1){
this.errback(new self.CancelledError(this));
}
}else{
if((this.fired===0)&amp;&amp;(this.results[0] instanceof self.Deferred)){
this.results[0].cancel();
}
}
},_resback:function(res){
this.fired=((res instanceof Error)?1:0);
this.results[this.fired]=res;
this._fire();
},_check:function(){
if(this.fired!=-1){
if(!this.silentlyCancelled){
throw new MochiKit.Async.AlreadyCalledError(this);
}
this.silentlyCancelled=false;
return;
}
},callback:function(res){
this._check();
if(res instanceof MochiKit.Async.Deferred){
throw new Error("Deferred instances can only be chained if they are the result of a callback");
}
this._resback(res);
},errback:function(res){
this._check();
var self=MochiKit.Async;
if(res instanceof self.Deferred){
throw new Error("Deferred instances can only be chained if they are the result of a callback");
}
if(!(res instanceof Error)){
res=new self.GenericError(res);
}
this._resback(res);
},addBoth:function(fn){
if(arguments.length&gt;1){
fn=MochiKit.Base.partial.apply(null,arguments);
}
return this.addCallbacks(fn,fn);
},addCallback:function(fn){
if(arguments.length&gt;1){
fn=MochiKit.Base.partial.apply(null,arguments);
}
return this.addCallbacks(fn,null);
},addErrback:function(fn){
if(arguments.length&gt;1){
fn=MochiKit.Base.partial.apply(null,arguments);
}
return this.addCallbacks(null,fn);
},addCallbacks:function(cb,eb){
if(this.chained){
throw new Error("Chained Deferreds can not be re-used");
}
this.chain.push([cb,eb]);
if(this.fired&gt;=0){
this._fire();
}
return this;
},_fire:function(){
var _283=this.chain;
var _284=this.fired;
var res=this.results[_284];
var self=this;
var cb=null;
while(_283.length&gt;0&amp;&amp;this.paused===0){
var pair=_283.shift();
var f=pair[_284];
if(f===null){
continue;
}
try{
res=f(res);
_284=((res instanceof Error)?1:0);
if(res instanceof MochiKit.Async.Deferred){
cb=function(res){
self._resback(res);
self.paused--;
if((self.paused===0)&amp;&amp;(self.fired&gt;=0)){
self._fire();
}
};
this.paused++;
}
}
catch(err){
_284=1;
if(!(err instanceof Error)){
err=new MochiKit.Async.GenericError(err);
}
res=err;
}
}
this.fired=_284;
this.results[_284]=res;
if(cb&amp;&amp;this.paused){
res.addBoth(cb);
res.chained=true;
}
}};
MochiKit.Base.update(MochiKit.Async,{evalJSONRequest:function(){
return eval("("+arguments[0].responseText+")");
},succeed:function(_28b){
var d=new MochiKit.Async.Deferred();
d.callback.apply(d,arguments);
return d;
},fail:function(_28d){
var d=new MochiKit.Async.Deferred();
d.errback.apply(d,arguments);
return d;
},getXMLHttpRequest:function(){
var self=arguments.callee;
if(!self.XMLHttpRequest){
var _290=[function(){
return new XMLHttpRequest();
},function(){
return new ActiveXObject("Msxml2.XMLHTTP");
},function(){
return new ActiveXObject("Microsoft.XMLHTTP");
},function(){
return new ActiveXObject("Msxml2.XMLHTTP.4.0");
},function(){
throw new MochiKit.Async.BrowserComplianceError("Browser does not support XMLHttpRequest");
}];
for(var i=0;i&lt;_290.length;i++){
var func=_290[i];
try{
self.XMLHttpRequest=func;
return func();
}
catch(e){
}
}
}
return self.XMLHttpRequest();
},_xhr_onreadystatechange:function(d){
var m=MochiKit.Base;
if(this.readyState==4){
try{
this.onreadystatechange=null;
}
catch(e){
try{
this.onreadystatechange=m.noop;
}
catch(e){
}
}
var _295=null;
try{
_295=this.status;
if(!_295&amp;&amp;m.isNotEmpty(this.responseText)){
_295=304;
}
}
catch(e){
}
if(_295==200||_295==201||_295==204||_295==304||_295==1223){
d.callback(this);
}else{
var err=new MochiKit.Async.XMLHttpRequestError(this,"Request failed");
if(err.number){
d.errback(err);
}else{
d.errback(err);
}
}
}
},_xhr_canceller:function(req){
try{
req.onreadystatechange=null;
}
catch(e){
try{
req.onreadystatechange=MochiKit.Base.noop;
}
catch(e){
}
}
req.abort();
},sendXMLHttpRequest:function(req,_299){
if(typeof (_299)=="undefined"||_299===null){
_299="";
}
var m=MochiKit.Base;
var self=MochiKit.Async;
var d=new self.Deferred(m.partial(self._xhr_canceller,req));
try{
req.onreadystatechange=m.bind(self._xhr_onreadystatechange,req,d);
req.send(_299);
}
catch(e){
try{
req.onreadystatechange=null;
}
catch(ignore){
}
d.errback(e);
}
return d;
},doXHR:function(url,opts){
var m=MochiKit.Base;
opts=m.update({method:"GET",sendContent:""},opts);
var self=MochiKit.Async;
var req=self.getXMLHttpRequest();
if(opts.queryString){
var qs=m.queryString(opts.queryString);
if(qs){
url+="?"+qs;
}
}
if("username" in opts){
req.open(opts.method,url,true,opts.username,opts.password);
}else{
req.open(opts.method,url,true);
}
if(req.overrideMimeType&amp;&amp;opts.mimeType){
req.overrideMimeType(opts.mimeType);
}
if(opts.headers){
var _2a3=opts.headers;
if(!m.isArrayLike(_2a3)){
_2a3=m.items(_2a3);
}
for(var i=0;i&lt;_2a3.length;i++){
var _2a5=_2a3[i];
var name=_2a5[0];
var _2a7=_2a5[1];
req.setRequestHeader(name,_2a7);
}
}
return self.sendXMLHttpRequest(req,opts.sendContent);
},_buildURL:function(url){
if(arguments.length&gt;1){
var m=MochiKit.Base;
var qs=m.queryString.apply(null,m.extend(null,arguments,1));
if(qs){
return url+"?"+qs;
}
}
return url;
},doSimpleXMLHttpRequest:function(url){
var self=MochiKit.Async;
url=self._buildURL.apply(self,arguments);
return self.doXHR(url);
},loadJSONDoc:function(url){
var self=MochiKit.Async;
url=self._buildURL.apply(self,arguments);
var d=self.doXHR(url,{"mimeType":"text/plain","headers":[["Accept","application/json"]]});
d=d.addCallback(self.evalJSONRequest);
return d;
},wait:function(_2b0,_2b1){
var d=new MochiKit.Async.Deferred();
var m=MochiKit.Base;
if(typeof (_2b1)!="undefined"){
d.addCallback(function(){
return _2b1;
});
}
var _2b4=setTimeout(m.bind("callback",d),Math.floor(_2b0*1000));
d.canceller=function(){
try{
clearTimeout(_2b4);
}
catch(e){
}
};
return d;
},callLater:function(_2b5,func){
var m=MochiKit.Base;
var _2b8=m.partial.apply(m,m.extend(null,arguments,1));
return MochiKit.Async.wait(_2b5).addCallback(function(res){
return _2b8();
});
}});
MochiKit.Async.DeferredLock=function(){
this.waiting=[];
this.locked=false;
this.id=this._nextId();
};
MochiKit.Async.DeferredLock.prototype={__class__:MochiKit.Async.DeferredLock,acquire:function(){
var d=new MochiKit.Async.Deferred();
if(this.locked){
this.waiting.push(d);
}else{
this.locked=true;
d.callback(this);
}
return d;
},release:function(){
if(!this.locked){
throw TypeError("Tried to release an unlocked DeferredLock");
}
this.locked=false;
if(this.waiting.length&gt;0){
this.locked=true;
this.waiting.shift().callback(this);
}
},_nextId:MochiKit.Base.counter(),repr:function(){
var _2bb;
if(this.locked){
_2bb="locked, "+this.waiting.length+" waiting";
}else{
_2bb="unlocked";
}
return "DeferredLock("+this.id+", "+_2bb+")";
},toString:MochiKit.Base.forwardCall("repr")};
MochiKit.Async.DeferredList=function(list,_2bd,_2be,_2bf,_2c0){
MochiKit.Async.Deferred.apply(this,[_2c0]);
this.list=list;
var _2c1=[];
this.resultList=_2c1;
this.finishedCount=0;
this.fireOnOneCallback=_2bd;
this.fireOnOneErrback=_2be;
this.consumeErrors=_2bf;
var cb=MochiKit.Base.bind(this._cbDeferred,this);
for(var i=0;i&lt;list.length;i++){
var d=list[i];
_2c1.push(undefined);
d.addCallback(cb,i,true);
d.addErrback(cb,i,false);
}
if(list.length===0&amp;&amp;!_2bd){
this.callback(this.resultList);
}
};
MochiKit.Async.DeferredList.prototype=new MochiKit.Async.Deferred();
MochiKit.Async.DeferredList.prototype._cbDeferred=function(_2c5,_2c6,_2c7){
this.resultList[_2c5]=[_2c6,_2c7];
this.finishedCount+=1;
if(this.fired==-1){
if(_2c6&amp;&amp;this.fireOnOneCallback){
this.callback([_2c5,_2c7]);
}else{
if(!_2c6&amp;&amp;this.fireOnOneErrback){
this.errback(_2c7);
}else{
if(this.finishedCount==this.list.length){
this.callback(this.resultList);
}
}
}
}
if(!_2c6&amp;&amp;this.consumeErrors){
_2c7=null;
}
return _2c7;
};
MochiKit.Async.gatherResults=function(_2c8){
var d=new MochiKit.Async.DeferredList(_2c8,false,true,false);
d.addCallback(function(_2ca){
var ret=[];
for(var i=0;i&lt;_2ca.length;i++){
ret.push(_2ca[i][1]);
}
return ret;
});
return d;
};
MochiKit.Async.maybeDeferred=function(func){
var self=MochiKit.Async;
var _2cf;
try{
var r=func.apply(null,MochiKit.Base.extend([],arguments,1));
if(r instanceof self.Deferred){
_2cf=r;
}else{
if(r instanceof Error){
_2cf=self.fail(r);
}else{
_2cf=self.succeed(r);
}
}
}
catch(e){
_2cf=self.fail(e);
}
return _2cf;
};
MochiKit.Async.EXPORT=["AlreadyCalledError","CancelledError","BrowserComplianceError","GenericError","XMLHttpRequestError","Deferred","succeed","fail","getXMLHttpRequest","doSimpleXMLHttpRequest","loadJSONDoc","wait","callLater","sendXMLHttpRequest","DeferredLock","DeferredList","gatherResults","maybeDeferred","doXHR"];
MochiKit.Async.EXPORT_OK=["evalJSONRequest"];
MochiKit.Async.__new__=function(){
var m=MochiKit.Base;
var ne=m.partial(m._newNamedError,this);
ne("AlreadyCalledError",function(_2d3){
this.deferred=_2d3;
});
ne("CancelledError",function(_2d4){
this.deferred=_2d4;
});
ne("BrowserComplianceError",function(msg){
this.message=msg;
});
ne("GenericError",function(msg){
this.message=msg;
});
ne("XMLHttpRequestError",function(req,msg){
this.req=req;
this.message=msg;
try{
this.number=req.status;
}
catch(e){
}
});
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
m.nameFunctions(this);
};
MochiKit.Async.__new__();
MochiKit.Base._exportSymbols(this,MochiKit.Async);
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.DOM");
dojo.require("MochiKit.Base");
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit.Base",[]);
}
try{
if(typeof (MochiKit.Base)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.DOM depends on MochiKit.Base!";
}
if(typeof (MochiKit.DOM)=="undefined"){
MochiKit.DOM={};
}
MochiKit.DOM.NAME="MochiKit.DOM";
MochiKit.DOM.VERSION="1.4";
MochiKit.DOM.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.DOM.toString=function(){
return this.__repr__();
};
MochiKit.DOM.EXPORT=["removeEmptyTextNodes","formContents","currentWindow","currentDocument","withWindow","withDocument","registerDOMConverter","coerceToDOM","createDOM","createDOMFunc","isChildNode","getNodeAttribute","removeNodeAttribute","setNodeAttribute","updateNodeAttributes","appendChildNodes","insertSiblingNodesAfter","insertSiblingNodesBefore","replaceChildNodes","removeElement","swapDOM","BUTTON","TT","PRE","H1","H2","H3","BR","CANVAS","HR","LABEL","TEXTAREA","FORM","STRONG","SELECT","OPTION","OPTGROUP","LEGEND","FIELDSET","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","scrapeText","isParent","getFirstParentByTagAndClassName","makeClipping","undoClipping","makePositioned","undoPositioned","getFirstElementByTagAndClassName"];
MochiKit.DOM.EXPORT_OK=["domConverters"];
MochiKit.DOM.DEPRECATED=[["computedStyle","MochiKit.Style.getStyle","1.4"],["elementDimensions","MochiKit.Style.getElementDimensions","1.4"],["elementPosition","MochiKit.Style.getElementPosition","1.4"],["hideElement","MochiKit.Style.hideElement","1.4"],["setElementDimensions","MochiKit.Style.setElementDimensions","1.4"],["setElementPosition","MochiKit.Style.setElementPosition","1.4"],["setDisplayForElement","MochiKit.Style.setDisplayForElement","1.4"],["setOpacity","MochiKit.Style.setOpacity","1.4"],["showElement","MochiKit.Style.showElement","1.4"],["Coordinates","MochiKit.Style.Coordinates","1.4"],["Dimensions","MochiKit.Style.Dimensions","1.4"]];
MochiKit.DOM.getViewportDimensions=new Function(""+"if (!MochiKit[\"Style\"]) {"+"    throw new Error(\"This function has been deprecated and depends on MochiKit.Style.\");"+"}"+"return MochiKit.Style.getViewportDimensions.apply(this, arguments);");
MochiKit.Base.update(MochiKit.DOM,{currentWindow:function(){
return MochiKit.DOM._window;
},currentDocument:function(){
return MochiKit.DOM._document;
},withWindow:function(win,func){
var self=MochiKit.DOM;
var _2dc=self._document;
var _2dd=self._window;
var rval;
try{
self._window=win;
self._document=win.document;
rval=func();
}
catch(e){
self._window=_2dd;
self._document=_2dc;
throw e;
}
self._window=_2dd;
self._document=_2dc;
return rval;
},formContents:function(elem){
var _2e0=[];
var _2e1=[];
var m=MochiKit.Base;
var self=MochiKit.DOM;
if(typeof (elem)=="undefined"||elem===null){
elem=self._document.body;
}else{
elem=self.getElement(elem);
}
m.nodeWalk(elem,function(elem){
var name=elem.name;
if(m.isNotEmpty(name)){
var _2e6=elem.tagName.toUpperCase();
if(_2e6==="INPUT"&amp;&amp;(elem.type=="radio"||elem.type=="checkbox")&amp;&amp;!elem.checked){
return null;
}
if(_2e6==="SELECT"){
if(elem.type=="select-one"){
if(elem.selectedIndex&gt;=0){
var opt=elem.options[elem.selectedIndex];
var v=opt.value;
if(!v){
var h=opt.outerHTML;
if(h&amp;&amp;!h.match(/^[^&gt;]+\svalue\s*=/i)){
v=opt.text;
}
}
_2e0.push(name);
_2e1.push(v);
return null;
}
_2e0.push(name);
_2e1.push("");
return null;
}else{
var opts=elem.options;
if(!opts.length){
_2e0.push(name);
_2e1.push("");
return null;
}
for(var i=0;i&lt;opts.length;i++){
var opt=opts[i];
if(!opt.selected){
continue;
}
var v=opt.value;
if(!v){
var h=opt.outerHTML;
if(h&amp;&amp;!h.match(/^[^&gt;]+\svalue\s*=/i)){
v=opt.text;
}
}
_2e0.push(name);
_2e1.push(v);
}
return null;
}
}
if(_2e6==="FORM"||_2e6==="P"||_2e6==="SPAN"||_2e6==="DIV"){
return elem.childNodes;
}
_2e0.push(name);
_2e1.push(elem.value||"");
return null;
}
return elem.childNodes;
});
return [_2e0,_2e1];
},withDocument:function(doc,func){
var self=MochiKit.DOM;
var _2ef=self._document;
var rval;
try{
self._document=doc;
rval=func();
}
catch(e){
self._document=_2ef;
throw e;
}
self._document=_2ef;
return rval;
},registerDOMConverter:function(name,_2f2,wrap,_2f4){
MochiKit.DOM.domConverters.register(name,_2f2,wrap,_2f4);
},coerceToDOM:function(node,ctx){
var m=MochiKit.Base;
var im=MochiKit.Iter;
var self=MochiKit.DOM;
if(im){
var iter=im.iter;
var _2fb=im.repeat;
var map=m.map;
}
var _2fd=self.domConverters;
var _2fe=arguments.callee;
var _2ff=m.NotFound;
while(true){
if(typeof (node)=="undefined"||node===null){
return null;
}
if(typeof (node)=="function"&amp;&amp;typeof (node.length)=="number"&amp;&amp;!(node instanceof Function)){
node=im.list(node);
}
if(typeof (node.nodeType)!="undefined"&amp;&amp;node.nodeType&gt;0){
return node;
}
if(typeof (node)=="number"||typeof (node)=="boolean"){
node=node.toString();
}
if(typeof (node)=="string"){
return self._document.createTextNode(node);
}
if(typeof (node.__dom__)=="function"){
node=node.__dom__(ctx);
continue;
}
if(typeof (node.dom)=="function"){
node=node.dom(ctx);
continue;
}
if(typeof (node)=="function"){
node=node.apply(ctx,[ctx]);
continue;
}
if(im){
var _300=null;
try{
_300=iter(node);
}
catch(e){
}
if(_300){
return map(_2fe,_300,_2fb(ctx));
}
}
try{
node=_2fd.match(node,ctx);
continue;
}
catch(e){
if(e!=_2ff){
throw e;
}
}
return self._document.createTextNode(node.toString());
}
return undefined;
},isChildNode:function(node,_302){
var self=MochiKit.DOM;
if(typeof (node)=="string"){
node=self.getElement(node);
}
if(typeof (_302)=="string"){
_302=self.getElement(_302);
}
if(node===_302){
return true;
}
while(node&amp;&amp;node.tagName.toUpperCase()!="BODY"){
node=node.parentNode;
if(node===_302){
return true;
}
}
return false;
},setNodeAttribute:function(node,attr,_306){
var o={};
o[attr]=_306;
try{
return MochiKit.DOM.updateNodeAttributes(node,o);
}
catch(e){
}
return null;
},getNodeAttribute:function(node,attr){
var self=MochiKit.DOM;
var _30b=self.attributeArray.renames[attr];
node=self.getElement(node);
try{
if(_30b){
return node[_30b];
}
return node.getAttribute(attr);
}
catch(e){
}
return null;
},removeNodeAttribute:function(node,attr){
var self=MochiKit.DOM;
var _30f=self.attributeArray.renames[attr];
node=self.getElement(node);
try{
if(_30f){
return node[_30f];
}
return node.removeAttribute(attr);
}
catch(e){
}
return null;
},updateNodeAttributes:function(node,_311){
var elem=node;
var self=MochiKit.DOM;
if(typeof (node)=="string"){
elem=self.getElement(node);
}
if(_311){
var _314=MochiKit.Base.updatetree;
if(self.attributeArray.compliant){
for(var k in _311){
var v=_311[k];
if(typeof (v)=="object"&amp;&amp;typeof (elem[k])=="object"){
if(k=="style"&amp;&amp;MochiKit.Style){
MochiKit.Style.setStyle(elem,v);
}else{
_314(elem[k],v);
}
}else{
if(k.substring(0,2)=="on"){
if(typeof (v)=="string"){
v=new Function(v);
}
elem[k]=v;
}else{
elem.setAttribute(k,v);
}
}
}
}else{
var _317=self.attributeArray.renames;
for(var k in _311){
v=_311[k];
var _318=_317[k];
if(k=="style"&amp;&amp;typeof (v)=="string"){
elem.style.cssText=v;
}else{
if(typeof (_318)=="string"){
elem[_318]=v;
}else{
if(typeof (elem[k])=="object"&amp;&amp;typeof (v)=="object"){
if(k=="style"&amp;&amp;MochiKit.Style){
MochiKit.Style.setStyle(elem,v);
}else{
_314(elem[k],v);
}
}else{
if(k.substring(0,2)=="on"){
if(typeof (v)=="string"){
v=new Function(v);
}
elem[k]=v;
}else{
elem.setAttribute(k,v);
}
}
}
}
}
}
}
return elem;
},appendChildNodes:function(node){
var elem=node;
var self=MochiKit.DOM;
if(typeof (node)=="string"){
elem=self.getElement(node);
}
var _31c=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];
var _31d=MochiKit.Base.concat;
while(_31c.length){
var n=_31c.shift();
if(typeof (n)=="undefined"||n===null){
}else{
if(typeof (n.nodeType)=="number"){
elem.appendChild(n);
}else{
_31c=_31d(n,_31c);
}
}
}
return elem;
},insertSiblingNodesBefore:function(node){
var elem=node;
var self=MochiKit.DOM;
if(typeof (node)=="string"){
elem=self.getElement(node);
}
var _322=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];
var _323=elem.parentNode;
var _324=MochiKit.Base.concat;
while(_322.length){
var n=_322.shift();
if(typeof (n)=="undefined"||n===null){
}else{
if(typeof (n.nodeType)=="number"){
_323.insertBefore(n,elem);
}else{
_322=_324(n,_322);
}
}
}
return _323;
},insertSiblingNodesAfter:function(node){
var elem=node;
var self=MochiKit.DOM;
if(typeof (node)=="string"){
elem=self.getElement(node);
}
var _329=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];
if(elem.nextSibling){
return self.insertSiblingNodesBefore(elem.nextSibling,_329);
}else{
return self.appendChildNodes(elem.parentNode,_329);
}
},replaceChildNodes:function(node){
var elem=node;
var self=MochiKit.DOM;
if(typeof (node)=="string"){
elem=self.getElement(node);
arguments[0]=elem;
}
var _32d;
while((_32d=elem.firstChild)){
elem.removeChild(_32d);
}
if(arguments.length&lt;2){
return elem;
}else{
return self.appendChildNodes.apply(this,arguments);
}
},createDOM:function(name,_32f){
var elem;
var self=MochiKit.DOM;
var m=MochiKit.Base;
if(typeof (_32f)=="string"||typeof (_32f)=="number"){
var args=m.extend([name,null],arguments,1);
return arguments.callee.apply(this,args);
}
if(typeof (name)=="string"){
var _334=self._xhtml;
if(_32f&amp;&amp;!self.attributeArray.compliant){
var _335="";
if("name" in _32f){
_335+=" name=\""+self.escapeHTML(_32f.name)+"\"";
}
if(name=="input"&amp;&amp;"type" in _32f){
_335+=" type=\""+self.escapeHTML(_32f.type)+"\"";
}
if(_335){
name="&lt;"+name+_335+"&gt;";
_334=false;
}
}
var d=self._document;
if(_334&amp;&amp;d===document){
elem=d.createElementNS("http://www.w3.org/1999/xhtml",name);
}else{
elem=d.createElement(name);
}
}else{
elem=name;
}
if(_32f){
self.updateNodeAttributes(elem,_32f);
}
if(arguments.length&lt;=2){
return elem;
}else{
var args=m.extend([elem],arguments,2);
return self.appendChildNodes.apply(this,args);
}
},createDOMFunc:function(){
var m=MochiKit.Base;
return m.partial.apply(this,m.extend([MochiKit.DOM.createDOM],arguments));
},removeElement:function(elem){
var e=MochiKit.DOM.getElement(elem);
e.parentNode.removeChild(e);
return e;
},swapDOM:function(dest,src){
var self=MochiKit.DOM;
dest=self.getElement(dest);
var _33d=dest.parentNode;
if(src){
src=self.getElement(src);
_33d.replaceChild(src,dest);
}else{
_33d.removeChild(dest);
}
return src;
},getElement:function(id){
var self=MochiKit.DOM;
if(arguments.length==1){
return ((typeof (id)=="string")?self._document.getElementById(id):id);
}else{
return MochiKit.Base.map(self.getElement,arguments);
}
},getElementsByTagAndClassName:function(_340,_341,_342){
var self=MochiKit.DOM;
if(typeof (_340)=="undefined"||_340===null){
_340="*";
}
if(typeof (_342)=="undefined"||_342===null){
_342=self._document;
}
_342=self.getElement(_342);
var _344=(_342.getElementsByTagName(_340)||self._document.all);
if(typeof (_341)=="undefined"||_341===null){
return MochiKit.Base.extend(null,_344);
}
var _345=[];
for(var i=0;i&lt;_344.length;i++){
var _347=_344[i];
var cls=_347.className;
if(!cls){
continue;
}
var _349=cls.split(" ");
for(var j=0;j&lt;_349.length;j++){
if(_349[j]==_341){
_345.push(_347);
break;
}
}
}
return _345;
},_newCallStack:function(path,once){
var rval=function(){
var _34e=arguments.callee.callStack;
for(var i=0;i&lt;_34e.length;i++){
if(_34e[i].apply(this,arguments)===false){
break;
}
}
if(once){
try{
this[path]=null;
}
catch(e){
}
}
};
rval.callStack=[];
return rval;
},addToCallStack:function(_350,path,func,once){
var self=MochiKit.DOM;
var _355=_350[path];
var _356=_355;
if(!(typeof (_355)=="function"&amp;&amp;typeof (_355.callStack)=="object"&amp;&amp;_355.callStack!==null)){
_356=self._newCallStack(path,once);
if(typeof (_355)=="function"){
_356.callStack.push(_355);
}
_350[path]=_356;
}
_356.callStack.push(func);
},addLoadEvent:function(func){
var self=MochiKit.DOM;
self.addToCallStack(self._window,"onload",func,true);
},focusOnLoad:function(_359){
var self=MochiKit.DOM;
self.addLoadEvent(function(){
_359=self.getElement(_359);
if(_359){
_359.focus();
}
});
},setElementClass:function(_35b,_35c){
var self=MochiKit.DOM;
var obj=self.getElement(_35b);
if(self.attributeArray.compliant){
obj.setAttribute("class",_35c);
}else{
obj.setAttribute("className",_35c);
}
},toggleElementClass:function(_35f){
var self=MochiKit.DOM;
for(var i=1;i&lt;arguments.length;i++){
var obj=self.getElement(arguments[i]);
if(!self.addElementClass(obj,_35f)){
self.removeElementClass(obj,_35f);
}
}
},addElementClass:function(_363,_364){
var self=MochiKit.DOM;
var obj=self.getElement(_363);
var cls=obj.className;
if(cls==undefined||cls.length===0){
self.setElementClass(obj,_364);
return true;
}
if(cls==_364){
return false;
}
var _368=cls.split(" ");
for(var i=0;i&lt;_368.length;i++){
if(_368[i]==_364){
return false;
}
}
self.setElementClass(obj,cls+" "+_364);
return true;
},removeElementClass:function(_36a,_36b){
var self=MochiKit.DOM;
var obj=self.getElement(_36a);
var cls=obj.className;
if(cls==undefined||cls.length===0){
return false;
}
if(cls==_36b){
self.setElementClass(obj,"");
return true;
}
var _36f=cls.split(" ");
for(var i=0;i&lt;_36f.length;i++){
if(_36f[i]==_36b){
_36f.splice(i,1);
self.setElementClass(obj,_36f.join(" "));
return true;
}
}
return false;
},swapElementClass:function(_371,_372,_373){
var obj=MochiKit.DOM.getElement(_371);
var res=MochiKit.DOM.removeElementClass(obj,_372);
if(res){
MochiKit.DOM.addElementClass(obj,_373);
}
return res;
},hasElementClass:function(_376,_377){
var obj=MochiKit.DOM.getElement(_376);
var cls=obj.className;
if(!cls){
return false;
}
var _37a=cls.split(" ");
for(var i=1;i&lt;arguments.length;i++){
var good=false;
for(var j=0;j&lt;_37a.length;j++){
if(_37a[j]==arguments[i]){
good=true;
break;
}
}
if(!good){
return false;
}
}
return true;
},escapeHTML:function(s){
return s.replace(/&amp;/g,"&amp;amp;").replace(/"/g,"&amp;quot;").replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;");
},toHTML:function(dom){
return MochiKit.DOM.emitHTML(dom).join("");
},emitHTML:function(dom,lst){
if(typeof (lst)=="undefined"||lst===null){
lst=[];
}
var _382=[dom];
var self=MochiKit.DOM;
var _384=self.escapeHTML;
var _385=self.attributeArray;
while(_382.length){
dom=_382.pop();
if(typeof (dom)=="string"){
lst.push(dom);
}else{
if(dom.nodeType==1){
lst.push("&lt;"+dom.tagName.toLowerCase());
var _386=[];
var _387=_385(dom);
for(var i=0;i&lt;_387.length;i++){
var a=_387[i];
_386.push([" ",a.name,"=\"",_384(a.value),"\""]);
}
_386.sort();
for(i=0;i&lt;_386.length;i++){
var _38a=_386[i];
for(var j=0;j&lt;_38a.length;j++){
lst.push(_38a[j]);
}
}
if(dom.hasChildNodes()){
lst.push("&gt;");
_382.push("&lt;/"+dom.tagName.toLowerCase()+"&gt;");
var _38c=dom.childNodes;
for(i=_38c.length-1;i&gt;=0;i--){
_382.push(_38c[i]);
}
}else{
lst.push("/&gt;");
}
}else{
if(dom.nodeType==3){
lst.push(_384(dom.nodeValue));
}
}
}
}
return lst;
},scrapeText:function(node,_38e){
var rval=[];
(function(node){
var cn=node.childNodes;
if(cn){
for(var i=0;i&lt;cn.length;i++){
arguments.callee.call(this,cn[i]);
}
}
var _393=node.nodeValue;
if(typeof (_393)=="string"){
rval.push(_393);
}
})(MochiKit.DOM.getElement(node));
if(_38e){
return rval;
}else{
return rval.join("");
}
},removeEmptyTextNodes:function(_394){
_394=MochiKit.DOM.getElement(_394);
for(var i=0;i&lt;_394.childNodes.length;i++){
var node=_394.childNodes[i];
if(node.nodeType==3&amp;&amp;!/\S/.test(node.nodeValue)){
node.parentNode.removeChild(node);
}
}
},makeClipping:function(_397){
_397=MochiKit.DOM.getElement(_397);
var _398=_397.style.overflow;
if((MochiKit.Style.getStyle(_397,"overflow")||"visible")!="hidden"){
_397.style.overflow="hidden";
}
return _398;
},undoClipping:function(_399,_39a){
_399=MochiKit.DOM.getElement(_399);
if(!_39a){
return;
}
_399.style.overflow=_39a;
},makePositioned:function(_39b){
_39b=MochiKit.DOM.getElement(_39b);
var pos=MochiKit.Style.getStyle(_39b,"position");
if(pos=="static"||!pos){
_39b.style.position="relative";
if(/Opera/.test(navigator.userAgent)){
_39b.style.top=0;
_39b.style.left=0;
}
}
},undoPositioned:function(_39d){
_39d=MochiKit.DOM.getElement(_39d);
if(_39d.style.position=="relative"){
_39d.style.position=_39d.style.top=_39d.style.left=_39d.style.bottom=_39d.style.right="";
}
},getFirstElementByTagAndClassName:function(_39e,_39f,_3a0){
var self=MochiKit.DOM;
if(typeof (_39e)=="undefined"||_39e===null){
_39e="*";
}
if(typeof (_3a0)=="undefined"||_3a0===null){
_3a0=self._document;
}
_3a0=self.getElement(_3a0);
var _3a2=(_3a0.getElementsByTagName(_39e)||self._document.all);
if(typeof (_39f)=="undefined"||_39f===null){
return _3a2[0];
}
for(var i=0;i&lt;_3a2.length;i++){
var _3a4=_3a2[i];
var _3a5=_3a4.className.split(" ");
for(var j=0;j&lt;_3a5.length;j++){
if(_3a5[j]==_39f){
return _3a4;
}
}
}
},getFirstParentByTagAndClassName:function(elem,_3a8,_3a9){
var self=MochiKit.DOM;
elem=self.getElement(elem);
if(typeof (_3a8)=="undefined"||_3a8===null){
_3a8="*";
}else{
_3a8=_3a8.toUpperCase();
}
if(typeof (_3a9)=="undefined"||_3a9===null){
_3a9=null;
}
var _3ab="";
var _3ac="";
while(elem&amp;&amp;elem.tagName){
elem=elem.parentNode;
if(_3a8=="*"&amp;&amp;_3a9===null){
return elem;
}
_3ab=elem.className.split(" ");
_3ac=elem.tagName.toUpperCase();
if(_3a9===null&amp;&amp;_3a8==_3ac){
return elem;
}else{
if(_3a9!==null){
for(var i=0;i&lt;_3ab.length;i++){
if(_3a8=="*"&amp;&amp;_3ab[i]==_3a9){
return elem;
}else{
if(_3a8==_3ac&amp;&amp;_3ab[i]==_3a9){
return elem;
}
}
}
}
}
}
return elem;
},isParent:function(_3ae,_3af){
if(!_3ae.parentNode||_3ae==_3af){
return false;
}
if(_3ae.parentNode==_3af){
return true;
}
return MochiKit.DOM.isParent(_3ae.parentNode,_3af);
},__new__:function(win){
var m=MochiKit.Base;
if(typeof (document)!="undefined"){
this._document=document;
var _3b2="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
this._xhtml=(document.documentElement&amp;&amp;document.createElementNS&amp;&amp;document.documentElement.namespaceURI===_3b2);
}else{
if(MochiKit.MockDOM){
this._document=MochiKit.MockDOM.document;
}
}
this._window=win;
this.domConverters=new m.AdapterRegistry();
var _3b3=this._document.createElement("span");
var _3b4;
if(_3b3&amp;&amp;_3b3.attributes&amp;&amp;_3b3.attributes.length&gt;0){
var _3b5=m.filter;
_3b4=function(node){
return _3b5(_3b4.ignoreAttrFilter,node.attributes);
};
_3b4.ignoreAttr={};
var _3b7=_3b3.attributes;
var _3b8=_3b4.ignoreAttr;
for(var i=0;i&lt;_3b7.length;i++){
var a=_3b7[i];
_3b8[a.name]=a.value;
}
_3b4.ignoreAttrFilter=function(a){
return (_3b4.ignoreAttr[a.name]!=a.value);
};
_3b4.compliant=false;
_3b4.renames={"class":"className","checked":"defaultChecked","usemap":"useMap","for":"htmlFor","readonly":"readOnly","colspan":"colSpan","bgcolor":"bgColor","cellspacing":"cellSpacing","cellpadding":"cellPadding"};
}else{
_3b4=function(node){
return node.attributes;
};
_3b4.compliant=true;
_3b4.renames={};
}
this.attributeArray=_3b4;
var _3bd=function(_3be,arr){
var _3c0=arr[1].split(".");
var str="";
var obj={};
str+="if (!MochiKit."+_3c0[1]+") { throw new Error(\"";
str+="This function has been deprecated and depends on MochiKit.";
str+=_3c0[1]+".\");}";
str+="return MochiKit."+_3c0[1]+"."+arr[0];
str+=".apply(this, arguments);";
obj[_3c0[2]]=new Function(str);
MochiKit.Base.update(MochiKit[_3be],obj);
};
for(var i;i&lt;MochiKit.DOM.DEPRECATED.length;i++){
_3bd("DOM",MochiKit.DOM.DEPRECATED[i]);
}
var _3c3=this.createDOMFunc;
this.UL=_3c3("ul");
this.OL=_3c3("ol");
this.LI=_3c3("li");
this.TD=_3c3("td");
this.TR=_3c3("tr");
this.TBODY=_3c3("tbody");
this.THEAD=_3c3("thead");
this.TFOOT=_3c3("tfoot");
this.TABLE=_3c3("table");
this.TH=_3c3("th");
this.INPUT=_3c3("input");
this.SPAN=_3c3("span");
this.A=_3c3("a");
this.DIV=_3c3("div");
this.IMG=_3c3("img");
this.BUTTON=_3c3("button");
this.TT=_3c3("tt");
this.PRE=_3c3("pre");
this.H1=_3c3("h1");
this.H2=_3c3("h2");
this.H3=_3c3("h3");
this.BR=_3c3("br");
this.HR=_3c3("hr");
this.LABEL=_3c3("label");
this.TEXTAREA=_3c3("textarea");
this.FORM=_3c3("form");
this.P=_3c3("p");
this.SELECT=_3c3("select");
this.OPTION=_3c3("option");
this.OPTGROUP=_3c3("optgroup");
this.LEGEND=_3c3("legend");
this.FIELDSET=_3c3("fieldset");
this.STRONG=_3c3("strong");
this.CANVAS=_3c3("canvas");
this.$=this.getElement;
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
m.nameFunctions(this);
}});
MochiKit.DOM.__new__(((typeof (window)=="undefined")?this:window));
if(MochiKit.__export__){
withWindow=MochiKit.DOM.withWindow;
withDocument=MochiKit.DOM.withDocument;
}
MochiKit.Base._exportSymbols(this,MochiKit.DOM);
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Selector");
dojo.require("MochiKit.Base");
dojo.require("MochiKit.DOM");
dojo.require("MochiKit.Iter");
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit.Base",[]);
JSAN.use("MochiKit.DOM",[]);
JSAN.use("MochiKit.Iter",[]);
}
try{
if(typeof (MochiKit.Base)==="undefined"||typeof (MochiKit.DOM)==="undefined"||typeof (MochiKit.Iter)==="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Selector depends on MochiKit.Base, MochiKit.DOM and MochiKit.Iter!";
}
if(typeof (MochiKit.Selector)=="undefined"){
MochiKit.Selector={};
}
MochiKit.Selector.NAME="MochiKit.Selector";
MochiKit.Selector.VERSION="1.4";
MochiKit.Selector.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.Selector.toString=function(){
return this.__repr__();
};
MochiKit.Selector.EXPORT=["Selector","findChildElements","findDocElements","$$"];
MochiKit.Selector.EXPORT_OK=[];
MochiKit.Selector.Selector=function(_3c4){
this.params={classNames:[],pseudoClassNames:[]};
this.expression=_3c4.toString().replace(/(^\s+|\s+$)/g,"");
this.parseExpression();
this.compileMatcher();
};
MochiKit.Selector.Selector.prototype={__class__:MochiKit.Selector.Selector,parseExpression:function(){
function abort(_3c5){
throw "Parse error in selector: "+_3c5;
}
if(this.expression==""){
abort("empty expression");
}
var repr=MochiKit.Base.repr;
var _3c7=this.params;
var expr=this.expression;
var _3c9,_3ca,_3cb,rest;
while(_3c9=expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!^$*]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)){
_3c7.attributes=_3c7.attributes||[];
_3c7.attributes.push({name:_3c9[2],operator:_3c9[3],value:_3c9[4]||_3c9[5]||""});
expr=_3c9[1];
}
if(expr=="*"){
return this.params.wildcard=true;
}
while(_3c9=expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+(?:\([^)]*\))?)(.*)/i)){
_3ca=_3c9[1];
_3cb=_3c9[2];
rest=_3c9[3];
switch(_3ca){
case "#":
_3c7.id=_3cb;
break;
case ".":
_3c7.classNames.push(_3cb);
break;
case ":":
_3c7.pseudoClassNames.push(_3cb);
break;
case "":
case undefined:
_3c7.tagName=_3cb.toUpperCase();
break;
default:
abort(repr(expr));
}
expr=rest;
}
if(expr.length&gt;0){
abort(repr(expr));
}
},buildMatchExpression:function(){
var repr=MochiKit.Base.repr;
var _3ce=this.params;
var _3cf=[];
var _3d0,i;
function childElements(_3d2){
return "MochiKit.Base.filter(function (node) { return node.nodeType == 1; }, "+_3d2+".childNodes)";
}
if(_3ce.wildcard){
_3cf.push("true");
}
if(_3d0=_3ce.id){
_3cf.push("element.id == "+repr(_3d0));
}
if(_3d0=_3ce.tagName){
_3cf.push("element.tagName.toUpperCase() == "+repr(_3d0));
}
if((_3d0=_3ce.classNames).length&gt;0){
for(i=0;i&lt;_3d0.length;i++){
_3cf.push("MochiKit.DOM.hasElementClass(element, "+repr(_3d0[i])+")");
}
}
if((_3d0=_3ce.pseudoClassNames).length&gt;0){
for(i=0;i&lt;_3d0.length;i++){
var _3d3=_3d0[i].match(/^([^(]+)(?:\((.*)\))?$/);
var _3d4=_3d3[1];
var _3d5=_3d3[2];
switch(_3d4){
case "root":
_3cf.push("element.nodeType == 9 || element === element.ownerDocument.documentElement");
break;
case "nth-child":
case "nth-last-child":
case "nth-of-type":
case "nth-last-of-type":
_3d3=_3d5.match(/^((?:(\d+)n\+)?(\d+)|odd|even)$/);
if(!_3d3){
throw "Invalid argument to pseudo element nth-child: "+_3d5;
}
var a,b;
if(_3d3[0]=="odd"){
a=2;
b=1;
}else{
if(_3d3[0]=="even"){
a=2;
b=0;
}else{
a=_3d3[2]&amp;&amp;parseInt(_3d3)||null;
b=parseInt(_3d3[3]);
}
}
_3cf.push("this.nthChild(element,"+a+","+b+","+!!_3d4.match("^nth-last")+","+!!_3d4.match("of-type$")+")");
break;
case "first-child":
_3cf.push("this.nthChild(element, null, 1)");
break;
case "last-child":
_3cf.push("this.nthChild(element, null, 1, true)");
break;
case "first-of-type":
_3cf.push("this.nthChild(element, null, 1, false, true)");
break;
case "last-of-type":
_3cf.push("this.nthChild(element, null, 1, true, true)");
break;
case "only-child":
_3cf.push(childElements("element.parentNode")+".length == 1");
break;
case "only-of-type":
_3cf.push("MochiKit.Base.filter(function (node) { return node.tagName == element.tagName; }, "+childElements("element.parentNode")+").length == 1");
break;
case "empty":
_3cf.push("element.childNodes.length == 0");
break;
case "enabled":
_3cf.push("(this.isUIElement(element) &amp;&amp; element.disabled === false)");
break;
case "disabled":
_3cf.push("(this.isUIElement(element) &amp;&amp; element.disabled === true)");
break;
case "checked":
_3cf.push("(this.isUIElement(element) &amp;&amp; element.checked === true)");
break;
case "not":
var _3d8=new MochiKit.Selector.Selector(_3d5);
_3cf.push("!( "+_3d8.buildMatchExpression()+")");
break;
}
}
}
if(_3d0=_3ce.attributes){
MochiKit.Base.map(function(_3d9){
var _3da="MochiKit.DOM.getNodeAttribute(element, "+repr(_3d9.name)+")";
var _3db=function(_3dc){
return _3da+" &amp;&amp; "+_3da+".split("+repr(_3dc)+")";
};
switch(_3d9.operator){
case "=":
_3cf.push(_3da+" == "+repr(_3d9.value));
break;
case "~=":
_3cf.push("MochiKit.Base.findValue("+_3db(" ")+", "+repr(_3d9.value)+") &gt; -1");
break;
case "^=":
_3cf.push(_3da+".substring(0, "+_3d9.value.length+") == "+repr(_3d9.value));
break;
case "$=":
_3cf.push(_3da+".substring("+_3da+".length - "+_3d9.value.length+") == "+repr(_3d9.value));
break;
case "*=":
_3cf.push(_3da+".match("+repr(_3d9.value)+")");
break;
case "|=":
_3cf.push(_3db("-")+"[0].toUpperCase() == "+repr(_3d9.value.toUpperCase()));
break;
case "!=":
_3cf.push(_3da+" != "+repr(_3d9.value));
break;
case "":
case undefined:
_3cf.push(_3da+" != null");
break;
default:
throw "Unknown operator "+_3d9.operator+" in selector";
}
},_3d0);
}
return _3cf.join(" &amp;&amp; ");
},compileMatcher:function(){
this.match=new Function("element","if (!element.tagName) return false;                 return "+this.buildMatchExpression());
},nthChild:function(_3dd,a,b,_3e0,_3e1){
var _3e2=MochiKit.Base.filter(function(node){
return node.nodeType==1;
},_3dd.parentNode.childNodes);
if(_3e1){
_3e2=MochiKit.Base.filter(function(node){
return node.tagName==_3dd.tagName;
},_3e2);
}
if(_3e0){
_3e2=MochiKit.Iter.reversed(_3e2);
}
if(a){
var _3e5=MochiKit.Base.findIdentical(_3e2,_3dd);
return ((_3e5+1-b)/a)%1==0;
}else{
return b==MochiKit.Base.findIdentical(_3e2,_3dd)+1;
}
},isUIElement:function(_3e6){
return MochiKit.Base.findValue(["input","button","select","option","textarea","object"],_3e6.tagName.toLowerCase())&gt;-1;
},findElements:function(_3e7,axis){
var _3e9;
if(axis==undefined){
axis="";
}
function inScope(_3ea,_3eb){
if(axis==""){
return MochiKit.DOM.isChildNode(_3ea,_3eb);
}else{
if(axis=="&gt;"){
return _3ea.parentNode==_3eb;
}else{
if(axis=="+"){
return _3ea==nextSiblingElement(_3eb);
}else{
if(axis=="~"){
var _3ec=_3eb;
while(_3ec=nextSiblingElement(_3ec)){
if(_3ea==_3ec){
return true;
}
}
return false;
}else{
throw "Invalid axis: "+axis;
}
}
}
}
}
if(_3e9=MochiKit.DOM.getElement(this.params.id)){
if(this.match(_3e9)){
if(!_3e7||inScope(_3e9,_3e7)){
return [_3e9];
}
}
}
function nextSiblingElement(node){
node=node.nextSibling;
while(node&amp;&amp;node.nodeType!=1){
node=node.nextSibling;
}
return node;
}
if(axis==""){
_3e7=(_3e7||MochiKit.DOM.currentDocument()).getElementsByTagName(this.params.tagName||"*");
}else{
if(axis=="&gt;"){
if(!_3e7){
throw "&gt; combinator not allowed without preceeding expression";
}
_3e7=MochiKit.Base.filter(function(node){
return node.nodeType==1;
},_3e7.childNodes);
}else{
if(axis=="+"){
if(!_3e7){
throw "+ combinator not allowed without preceeding expression";
}
_3e7=nextSiblingElement(_3e7)&amp;&amp;[nextSiblingElement(_3e7)];
}else{
if(axis=="~"){
if(!_3e7){
throw "~ combinator not allowed without preceeding expression";
}
var _3ef=[];
while(nextSiblingElement(_3e7)){
_3e7=nextSiblingElement(_3e7);
_3ef.push(_3e7);
}
_3e7=_3ef;
}
}
}
}
if(!_3e7){
return [];
}
var _3f0=MochiKit.Base.filter(MochiKit.Base.bind(function(_3f1){
return this.match(_3f1);
},this),_3e7);
return _3f0;
},repr:function(){
return "Selector("+this.expression+")";
},toString:MochiKit.Base.forwardCall("repr")};
MochiKit.Base.update(MochiKit.Selector,{findChildElements:function(_3f2,_3f3){
return MochiKit.Base.flattenArray(MochiKit.Base.map(function(_3f4){
var _3f5="";
return MochiKit.Iter.reduce(function(_3f6,expr){
if(match=expr.match(/^[&gt;+~]$/)){
_3f5=match[0];
return _3f6;
}else{
var _3f8=new MochiKit.Selector.Selector(expr);
var _3f9=MochiKit.Iter.reduce(function(_3fa,_3fb){
return MochiKit.Base.extend(_3fa,_3f8.findElements(_3fb||_3f2,_3f5));
},_3f6,[]);
_3f5="";
return _3f9;
}
},_3f4.replace(/(^\s+|\s+$)/g,"").split(/\s+/),[null]);
},_3f3));
},findDocElements:function(){
return MochiKit.Selector.findChildElements(MochiKit.DOM.currentDocument(),arguments);
},__new__:function(){
var m=MochiKit.Base;
this.$$=this.findDocElements;
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
m.nameFunctions(this);
}});
MochiKit.Selector.__new__();
MochiKit.Base._exportSymbols(this,MochiKit.Selector);
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Style");
dojo.require("MochiKit.Base");
dojo.require("MochiKit.DOM");
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit.Base",[]);
JSAN.use("MochiKit.DOM",[]);
}
try{
if(typeof (MochiKit.Base)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Style depends on MochiKit.Base!";
}
try{
if(typeof (MochiKit.DOM)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Style depends on MochiKit.DOM!";
}
if(typeof (MochiKit.Style)=="undefined"){
MochiKit.Style={};
}
MochiKit.Style.NAME="MochiKit.Style";
MochiKit.Style.VERSION="1.4";
MochiKit.Style.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.Style.toString=function(){
return this.__repr__();
};
MochiKit.Style.EXPORT_OK=[];
MochiKit.Style.EXPORT=["setStyle","setOpacity","getStyle","getElementDimensions","elementDimensions","setElementDimensions","getElementPosition","elementPosition","setElementPosition","setDisplayForElement","hideElement","showElement","getViewportDimensions","getViewportPosition","Dimensions","Coordinates"];
MochiKit.Style.Dimensions=function(w,h){
this.w=w;
this.h=h;
};
MochiKit.Style.Dimensions.prototype.__repr__=function(){
var repr=MochiKit.Base.repr;
return "{w: "+repr(this.w)+", h: "+repr(this.h)+"}";
};
MochiKit.Style.Dimensions.prototype.toString=function(){
return this.__repr__();
};
MochiKit.Style.Coordinates=function(x,y){
this.x=x;
this.y=y;
};
MochiKit.Style.Coordinates.prototype.__repr__=function(){
var repr=MochiKit.Base.repr;
return "{x: "+repr(this.x)+", y: "+repr(this.y)+"}";
};
MochiKit.Style.Coordinates.prototype.toString=function(){
return this.__repr__();
};
MochiKit.Base.update(MochiKit.Style,{getStyle:function(elem,_404){
var dom=MochiKit.DOM;
var d=dom._document;
elem=dom.getElement(elem);
_404=MochiKit.Base.camelize(_404);
if(!elem||elem==d){
return undefined;
}
if(_404=="opacity"&amp;&amp;elem.filters){
var _407=(MochiKit.Style.getStyle(elem,"filter")||"").match(/alpha\(opacity=(.*)\)/);
if(_407&amp;&amp;_407[1]){
return parseFloat(_407[1])/100;
}
return 1;
}
var _408=elem.style?elem.style[_404]:null;
if(!_408){
if(d.defaultView&amp;&amp;d.defaultView.getComputedStyle){
var css=d.defaultView.getComputedStyle(elem,null);
_404=_404.replace(/([A-Z])/g,"-$1").toLowerCase();
_408=css?css.getPropertyValue(_404):null;
}else{
if(elem.currentStyle){
_408=elem.currentStyle[_404];
}
}
}
if(_404=="opacity"){
_408=parseFloat(_408);
}
if(/Opera/.test(navigator.userAgent)&amp;&amp;(MochiKit.Base.find(["left","top","right","bottom"],_404)!=-1)){
if(MochiKit.Style.getStyle(elem,"position")=="static"){
_408="auto";
}
}
return _408=="auto"?null:_408;
},setStyle:function(elem,_40b){
elem=MochiKit.DOM.getElement(elem);
for(var name in _40b){
if(name=="opacity"){
MochiKit.Style.setOpacity(elem,_40b[name]);
}else{
elem.style[MochiKit.Base.camelize(name)]=_40b[name];
}
}
},setOpacity:function(elem,o){
elem=MochiKit.DOM.getElement(elem);
var self=MochiKit.Style;
if(o==1){
var _410=/Gecko/.test(navigator.userAgent)&amp;&amp;!(/Konqueror|AppleWebKit|KHTML/.test(navigator.userAgent));
elem.style["opacity"]=_410?0.999999:1;
if(/MSIE/.test(navigator.userAgent)){
elem.style["filter"]=self.getStyle(elem,"filter").replace(/alpha\([^\)]*\)/gi,"");
}
}else{
if(o&lt;0.00001){
o=0;
}
elem.style["opacity"]=o;
if(/MSIE/.test(navigator.userAgent)){
elem.style["filter"]=self.getStyle(elem,"filter").replace(/alpha\([^\)]*\)/gi,"")+"alpha(opacity="+o*100+")";
}
}
},getElementPosition:function(elem,_412){
var self=MochiKit.Style;
var dom=MochiKit.DOM;
elem=dom.getElement(elem);
if(!elem||(!(elem.x&amp;&amp;elem.y)&amp;&amp;(!elem.parentNode===null||self.getStyle(elem,"display")=="none"))){
return undefined;
}
var c=new self.Coordinates(0,0);
var box=null;
var _417=null;
var d=MochiKit.DOM._document;
var de=d.documentElement;
var b=d.body;
if(!elem.parentNode&amp;&amp;elem.x&amp;&amp;elem.y){
c.x+=elem.x||0;
c.y+=elem.y||0;
}else{
if(elem.getBoundingClientRect){
box=elem.getBoundingClientRect();
c.x+=box.left+(de.scrollLeft||b.scrollLeft)-(de.clientLeft||0);
c.y+=box.top+(de.scrollTop||b.scrollTop)-(de.clientTop||0);
}else{
if(elem.offsetParent){
c.x+=elem.offsetLeft;
c.y+=elem.offsetTop;
_417=elem.offsetParent;
if(_417!=elem){
while(_417){
c.x+=_417.offsetLeft;
c.y+=_417.offsetTop;
_417=_417.offsetParent;
}
}
var ua=navigator.userAgent.toLowerCase();
if((typeof (opera)!="undefined"&amp;&amp;parseFloat(opera.version())&lt;9)||(ua.indexOf("AppleWebKit")!=-1&amp;&amp;self.getStyle(elem,"position")=="absolute")){
c.x-=b.offsetLeft;
c.y-=b.offsetTop;
}
}
}
}
if(typeof (_412)!="undefined"){
_412=arguments.callee(_412);
if(_412){
c.x-=(_412.x||0);
c.y-=(_412.y||0);
}
}
if(elem.parentNode){
_417=elem.parentNode;
}else{
_417=null;
}
while(_417){
var _41c=_417.tagName.toUpperCase();
if(_41c==="BODY"||_41c==="HTML"){
break;
}
var disp=self.getStyle(_417,"display");
if(disp!="inline"&amp;&amp;disp!="table-row"){
c.x-=_417.scrollLeft;
c.y-=_417.scrollTop;
}
if(_417.parentNode){
_417=_417.parentNode;
}else{
_417=null;
}
}
return c;
},setElementPosition:function(elem,_41f,_420){
elem=MochiKit.DOM.getElement(elem);
if(typeof (_420)=="undefined"){
_420="px";
}
var _421={};
var _422=MochiKit.Base.isUndefinedOrNull;
if(!_422(_41f.x)){
_421["left"]=_41f.x+_420;
}
if(!_422(_41f.y)){
_421["top"]=_41f.y+_420;
}
MochiKit.DOM.updateNodeAttributes(elem,{"style":_421});
},getElementDimensions:function(elem){
var self=MochiKit.Style;
var dom=MochiKit.DOM;
if(typeof (elem.w)=="number"||typeof (elem.h)=="number"){
return new self.Dimensions(elem.w||0,elem.h||0);
}
elem=dom.getElement(elem);
if(!elem){
return undefined;
}
var disp=self.getStyle(elem,"display");
if(disp!="none"&amp;&amp;disp!==""&amp;&amp;typeof (disp)!="undefined"){
return new self.Dimensions(elem.offsetWidth||0,elem.offsetHeight||0);
}
var s=elem.style;
var _428=s.visibility;
var _429=s.position;
s.visibility="hidden";
s.position="absolute";
s.display="";
var _42a=elem.offsetWidth;
var _42b=elem.offsetHeight;
s.display="none";
s.position=_429;
s.visibility=_428;
return new self.Dimensions(_42a,_42b);
},setElementDimensions:function(elem,_42d,_42e){
elem=MochiKit.DOM.getElement(elem);
if(typeof (_42e)=="undefined"){
_42e="px";
}
var _42f={};
var _430=MochiKit.Base.isUndefinedOrNull;
if(!_430(_42d.w)){
_42f["width"]=_42d.w+_42e;
}
if(!_430(_42d.h)){
_42f["height"]=_42d.h+_42e;
}
MochiKit.DOM.updateNodeAttributes(elem,{"style":_42f});
},setDisplayForElement:function(_431,_432){
var _433=MochiKit.Base.extend(null,arguments,1);
var _434=MochiKit.DOM.getElement;
for(var i=0;i&lt;_433.length;i++){
_432=_434(_433[i]);
if(_432){
_432.style.display=_431;
}
}
},getViewportDimensions:function(){
var d=new MochiKit.Style.Dimensions();
var w=MochiKit.DOM._window;
var b=MochiKit.DOM._document.body;
if(w.innerWidth){
d.w=w.innerWidth;
d.h=w.innerHeight;
}else{
if(b.parentElement.clientWidth){
d.w=b.parentElement.clientWidth;
d.h=b.parentElement.clientHeight;
}else{
if(b&amp;&amp;b.clientWidth){
d.w=b.clientWidth;
d.h=b.clientHeight;
}
}
}
return d;
},getViewportPosition:function(){
var c=new MochiKit.Style.Coordinates(0,0);
var d=MochiKit.DOM._document;
var de=d.documentElement;
var db=d.body;
if(de&amp;&amp;(de.scrollTop||de.scrollLeft)){
c.x=de.scrollLeft;
c.y=de.scrollTop;
}else{
if(db){
c.x=db.scrollLeft;
c.y=db.scrollTop;
}
}
return c;
},__new__:function(){
var m=MochiKit.Base;
this.elementPosition=this.getElementPosition;
this.elementDimensions=this.getElementDimensions;
this.hideElement=m.partial(this.setDisplayForElement,"none");
this.showElement=m.partial(this.setDisplayForElement,"block");
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
m.nameFunctions(this);
}});
MochiKit.Style.__new__();
MochiKit.Base._exportSymbols(this,MochiKit.Style);
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.LoggingPane");
dojo.require("MochiKit.Logging");
dojo.require("MochiKit.Base");
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit.Logging",[]);
JSAN.use("MochiKit.Base",[]);
}
try{
if(typeof (MochiKit.Base)=="undefined"||typeof (MochiKit.Logging)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.LoggingPane depends on MochiKit.Base and MochiKit.Logging!";
}
if(typeof (MochiKit.LoggingPane)=="undefined"){
MochiKit.LoggingPane={};
}
MochiKit.LoggingPane.NAME="MochiKit.LoggingPane";
MochiKit.LoggingPane.VERSION="1.4";
MochiKit.LoggingPane.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.LoggingPane.toString=function(){
return this.__repr__();
};
MochiKit.LoggingPane.createLoggingPane=function(_43e){
var m=MochiKit.LoggingPane;
_43e=!(!_43e);
if(m._loggingPane&amp;&amp;m._loggingPane.inline!=_43e){
m._loggingPane.closePane();
m._loggingPane=null;
}
if(!m._loggingPane||m._loggingPane.closed){
m._loggingPane=new m.LoggingPane(_43e,MochiKit.Logging.logger);
}
return m._loggingPane;
};
MochiKit.LoggingPane.LoggingPane=function(_440,_441){
if(typeof (_441)=="undefined"||_441===null){
_441=MochiKit.Logging.logger;
}
this.logger=_441;
var _442=MochiKit.Base.update;
var _443=MochiKit.Base.updatetree;
var bind=MochiKit.Base.bind;
var _445=MochiKit.Base.clone;
var win=window;
var uid="_MochiKit_LoggingPane";
if(typeof (MochiKit.DOM)!="undefined"){
win=MochiKit.DOM.currentWindow();
}
if(!_440){
var url=win.location.href.split("?")[0].replace(/[#:\/.&gt;&lt;&amp;-]/g,"_");
var name=uid+"_"+url;
var nwin=win.open("",name,"dependent,resizable,height=200");
if(!nwin){
alert("Not able to open debugging window due to pop-up blocking.");
return undefined;
}
nwin.document.write("&lt;!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" "+"\"http://www.w3.org/TR/html4/loose.dtd\"&gt;"+"&lt;html&gt;&lt;head&gt;&lt;title&gt;[MochiKit.LoggingPane]&lt;/title&gt;&lt;/head&gt;"+"&lt;body&gt;&lt;/body&gt;&lt;/html&gt;");
nwin.document.close();
nwin.document.title+=" "+win.document.title;
win=nwin;
}
var doc=win.document;
this.doc=doc;
var _44c=doc.getElementById(uid);
var _44d=!!_44c;
if(_44c&amp;&amp;typeof (_44c.loggingPane)!="undefined"){
_44c.loggingPane.logger=this.logger;
_44c.loggingPane.buildAndApplyFilter();
return _44c.loggingPane;
}
if(_44d){
var _44e;
while((_44e=_44c.firstChild)){
_44c.removeChild(_44e);
}
}else{
_44c=doc.createElement("div");
_44c.id=uid;
}
_44c.loggingPane=this;
var _44f=doc.createElement("input");
var _450=doc.createElement("input");
var _451=doc.createElement("button");
var _452=doc.createElement("button");
var _453=doc.createElement("button");
var _454=doc.createElement("button");
var _455=doc.createElement("div");
var _456=doc.createElement("div");
var _457=uid+"_Listener";
this.colorTable=_445(this.colorTable);
var _458=[];
var _459=null;
var _45a=function(msg){
var _45c=msg.level;
if(typeof (_45c)=="number"){
_45c=MochiKit.Logging.LogLevel[_45c];
}
return _45c;
};
var _45d=function(msg){
return msg.info.join(" ");
};
var _45f=bind(function(msg){
var _461=_45a(msg);
var text=_45d(msg);
var c=this.colorTable[_461];
var p=doc.createElement("span");
p.className="MochiKit-LogMessage MochiKit-LogLevel-"+_461;
p.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;
p.appendChild(doc.createTextNode(_461+": "+text));
_456.appendChild(p);
_456.appendChild(doc.createElement("br"));
if(_455.offsetHeight&gt;_455.scrollHeight){
_455.scrollTop=0;
}else{
_455.scrollTop=_455.scrollHeight;
}
},this);
var _465=function(msg){
_458[_458.length]=msg;
_45f(msg);
};
var _467=function(){
var _468,_469;
try{
_468=new RegExp(_44f.value);
_469=new RegExp(_450.value);
}
catch(e){
logDebug("Error in filter regex: "+e.message);
return null;
}
return function(msg){
return (_468.test(_45a(msg))&amp;&amp;_469.test(_45d(msg)));
};
};
var _46b=function(){
while(_456.firstChild){
_456.removeChild(_456.firstChild);
}
};
var _46c=function(){
_458=[];
_46b();
};
var _46d=bind(function(){
if(this.closed){
return;
}
this.closed=true;
if(MochiKit.LoggingPane._loggingPane==this){
MochiKit.LoggingPane._loggingPane=null;
}
this.logger.removeListener(_457);
try{
try{
_44c.loggingPane=null;
}
catch(e){
logFatal("Bookmarklet was closed incorrectly.");
}
if(_440){
_44c.parentNode.removeChild(_44c);
}else{
this.win.close();
}
}
catch(e){
}
},this);
var _46e=function(){
_46b();
for(var i=0;i&lt;_458.length;i++){
var msg=_458[i];
if(_459===null||_459(msg)){
_45f(msg);
}
}
};
this.buildAndApplyFilter=function(){
_459=_467();
_46e();
this.logger.removeListener(_457);
this.logger.addListener(_457,_459,_465);
};
var _471=bind(function(){
_458=this.logger.getMessages();
_46e();
},this);
var _472=bind(function(_473){
_473=_473||window.event;
key=_473.which||_473.keyCode;
if(key==13){
this.buildAndApplyFilter();
}
},this);
var _474="display: block; z-index: 1000; left: 0px; bottom: 0px; position: fixed; width: 100%; background-color: white; font: "+this.logFont;
if(_440){
_474+="; height: 10em; border-top: 2px solid black";
}else{
_474+="; height: 100%;";
}
_44c.style.cssText=_474;
if(!_44d){
doc.body.appendChild(_44c);
}
_474={"cssText":"width: 33%; display: inline; font: "+this.logFont};
_443(_44f,{"value":"FATAL|ERROR|WARNING|INFO|DEBUG","onkeypress":_472,"style":_474});
_44c.appendChild(_44f);
_443(_450,{"value":".*","onkeypress":_472,"style":_474});
_44c.appendChild(_450);
_474="width: 8%; display:inline; font: "+this.logFont;
_451.appendChild(doc.createTextNode("Filter"));
_451.onclick=bind("buildAndApplyFilter",this);
_451.style.cssText=_474;
_44c.appendChild(_451);
_452.appendChild(doc.createTextNode("Load"));
_452.onclick=_471;
_452.style.cssText=_474;
_44c.appendChild(_452);
_453.appendChild(doc.createTextNode("Clear"));
_453.onclick=_46c;
_453.style.cssText=_474;
_44c.appendChild(_453);
_454.appendChild(doc.createTextNode("Close"));
_454.onclick=_46d;
_454.style.cssText=_474;
_44c.appendChild(_454);
_455.style.cssText="overflow: auto; width: 100%";
_456.style.cssText="width: 100%; height: "+(_440?"8em":"100%");
_455.appendChild(_456);
_44c.appendChild(_455);
this.buildAndApplyFilter();
_471();
if(_440){
this.win=undefined;
}else{
this.win=win;
}
this.inline=_440;
this.closePane=_46d;
this.closed=false;
return this;
};
MochiKit.LoggingPane.LoggingPane.prototype={"logFont":"8pt Verdana,sans-serif","colorTable":{"ERROR":"red","FATAL":"darkred","WARNING":"blue","INFO":"black","DEBUG":"green"}};
MochiKit.LoggingPane.EXPORT_OK=["LoggingPane"];
MochiKit.LoggingPane.EXPORT=["createLoggingPane"];
MochiKit.LoggingPane.__new__=function(){
this.EXPORT_TAGS={":common":this.EXPORT,":all":MochiKit.Base.concat(this.EXPORT,this.EXPORT_OK)};
MochiKit.Base.nameFunctions(this);
MochiKit.LoggingPane._loggingPane=null;
};
MochiKit.LoggingPane.__new__();
MochiKit.Base._exportSymbols(this,MochiKit.LoggingPane);
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Color");
dojo.require("MochiKit.Base");
dojo.require("MochiKit.DOM");
dojo.require("MochiKit.Style");
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit.Base",[]);
JSAN.use("MochiKit.DOM",[]);
JSAN.use("MochiKit.Style",[]);
}
try{
if(typeof (MochiKit.Base)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Color depends on MochiKit.Base";
}
try{
if(typeof (MochiKit.DOM)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Color depends on MochiKit.DOM";
}
try{
if(typeof (MochiKit.Style)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Color depends on MochiKit.Style";
}
if(typeof (MochiKit.Color)=="undefined"){
MochiKit.Color={};
}
MochiKit.Color.NAME="MochiKit.Color";
MochiKit.Color.VERSION="1.4";
MochiKit.Color.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.Color.toString=function(){
return this.__repr__();
};
MochiKit.Color.Color=function(red,_476,blue,_478){
if(typeof (_478)=="undefined"||_478===null){
_478=1;
}
this.rgb={r:red,g:_476,b:blue,a:_478};
};
MochiKit.Color.Color.prototype={__class__:MochiKit.Color.Color,colorWithAlpha:function(_479){
var rgb=this.rgb;
var m=MochiKit.Color;
return m.Color.fromRGB(rgb.r,rgb.g,rgb.b,_479);
},colorWithHue:function(hue){
var hsl=this.asHSL();
hsl.h=hue;
var m=MochiKit.Color;
return m.Color.fromHSL(hsl);
},colorWithSaturation:function(_47f){
var hsl=this.asHSL();
hsl.s=_47f;
var m=MochiKit.Color;
return m.Color.fromHSL(hsl);
},colorWithLightness:function(_482){
var hsl=this.asHSL();
hsl.l=_482;
var m=MochiKit.Color;
return m.Color.fromHSL(hsl);
},darkerColorWithLevel:function(_485){
var hsl=this.asHSL();
hsl.l=Math.max(hsl.l-_485,0);
var m=MochiKit.Color;
return m.Color.fromHSL(hsl);
},lighterColorWithLevel:function(_488){
var hsl=this.asHSL();
hsl.l=Math.min(hsl.l+_488,1);
var m=MochiKit.Color;
return m.Color.fromHSL(hsl);
},blendedColor:function(_48b,_48c){
if(typeof (_48c)=="undefined"||_48c===null){
_48c=0.5;
}
var sf=1-_48c;
var s=this.rgb;
var d=_48b.rgb;
var df=_48c;
return MochiKit.Color.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));
},compareRGB:function(_491){
var a=this.asRGB();
var b=_491.asRGB();
return MochiKit.Base.compare([a.r,a.g,a.b,a.a],[b.r,b.g,b.b,b.a]);
},isLight:function(){
return this.asHSL().b&gt;0.5;
},isDark:function(){
return (!this.isLight());
},toHSLString:function(){
var c=this.asHSL();
var ccc=MochiKit.Color.clampColorComponent;
var rval=this._hslString;
if(!rval){
var mid=(ccc(c.h,360).toFixed(0)+","+ccc(c.s,100).toPrecision(4)+"%"+","+ccc(c.l,100).toPrecision(4)+"%");
var a=c.a;
if(a&gt;=1){
a=1;
rval="hsl("+mid+")";
}else{
if(a&lt;=0){
a=0;
}
rval="hsla("+mid+","+a+")";
}
this._hslString=rval;
}
return rval;
},toRGBString:function(){
var c=this.rgb;
var ccc=MochiKit.Color.clampColorComponent;
var rval=this._rgbString;
if(!rval){
var mid=(ccc(c.r,255).toFixed(0)+","+ccc(c.g,255).toFixed(0)+","+ccc(c.b,255).toFixed(0));
if(c.a!=1){
rval="rgba("+mid+","+c.a+")";
}else{
rval="rgb("+mid+")";
}
this._rgbString=rval;
}
return rval;
},asRGB:function(){
return MochiKit.Base.clone(this.rgb);
},toHexString:function(){
var m=MochiKit.Color;
var c=this.rgb;
var ccc=MochiKit.Color.clampColorComponent;
var rval=this._hexString;
if(!rval){
rval=("#"+m.toColorPart(ccc(c.r,255))+m.toColorPart(ccc(c.g,255))+m.toColorPart(ccc(c.b,255)));
this._hexString=rval;
}
return rval;
},asHSV:function(){
var hsv=this.hsv;
var c=this.rgb;
if(typeof (hsv)=="undefined"||hsv===null){
hsv=MochiKit.Color.rgbToHSV(this.rgb);
this.hsv=hsv;
}
return MochiKit.Base.clone(hsv);
},asHSL:function(){
var hsl=this.hsl;
var c=this.rgb;
if(typeof (hsl)=="undefined"||hsl===null){
hsl=MochiKit.Color.rgbToHSL(this.rgb);
this.hsl=hsl;
}
return MochiKit.Base.clone(hsl);
},toString:function(){
return this.toRGBString();
},repr:function(){
var c=this.rgb;
var col=[c.r,c.g,c.b,c.a];
return this.__class__.NAME+"("+col.join(", ")+")";
}};
MochiKit.Base.update(MochiKit.Color.Color,{fromRGB:function(red,_4a8,blue,_4aa){
var _4ab=MochiKit.Color.Color;
if(arguments.length==1){
var rgb=red;
red=rgb.r;
_4a8=rgb.g;
blue=rgb.b;
if(typeof (rgb.a)=="undefined"){
_4aa=undefined;
}else{
_4aa=rgb.a;
}
}
return new _4ab(red,_4a8,blue,_4aa);
},fromHSL:function(hue,_4ae,_4af,_4b0){
var m=MochiKit.Color;
return m.Color.fromRGB(m.hslToRGB.apply(m,arguments));
},fromHSV:function(hue,_4b3,_4b4,_4b5){
var m=MochiKit.Color;
return m.Color.fromRGB(m.hsvToRGB.apply(m,arguments));
},fromName:function(name){
var _4b8=MochiKit.Color.Color;
if(name.charAt(0)=="\""){
name=name.substr(1,name.length-2);
}
var _4b9=_4b8._namedColors[name.toLowerCase()];
if(typeof (_4b9)=="string"){
return _4b8.fromHexString(_4b9);
}else{
if(name=="transparent"){
return _4b8.transparentColor();
}
}
return null;
},fromString:function(_4ba){
var self=MochiKit.Color.Color;
var _4bc=_4ba.substr(0,3);
if(_4bc=="rgb"){
return self.fromRGBString(_4ba);
}else{
if(_4bc=="hsl"){
return self.fromHSLString(_4ba);
}else{
if(_4ba.charAt(0)=="#"){
return self.fromHexString(_4ba);
}
}
}
return self.fromName(_4ba);
},fromHexString:function(_4bd){
if(_4bd.charAt(0)=="#"){
_4bd=_4bd.substring(1);
}
var _4be=[];
var i,hex;
if(_4bd.length==3){
for(i=0;i&lt;3;i++){
hex=_4bd.substr(i,1);
_4be.push(parseInt(hex+hex,16)/255);
}
}else{
for(i=0;i&lt;6;i+=2){
hex=_4bd.substr(i,2);
_4be.push(parseInt(hex,16)/255);
}
}
var _4c1=MochiKit.Color.Color;
return _4c1.fromRGB.apply(_4c1,_4be);
},_fromColorString:function(pre,_4c3,_4c4,_4c5){
if(_4c5.indexOf(pre)===0){
_4c5=_4c5.substring(_4c5.indexOf("(",3)+1,_4c5.length-1);
}
var _4c6=_4c5.split(/\s*,\s*/);
var _4c7=[];
for(var i=0;i&lt;_4c6.length;i++){
var c=_4c6[i];
var val;
var _4cb=c.substring(c.length-3);
if(c.charAt(c.length-1)=="%"){
val=0.01*parseFloat(c.substring(0,c.length-1));
}else{
if(_4cb=="deg"){
val=parseFloat(c)/360;
}else{
if(_4cb=="rad"){
val=parseFloat(c)/(Math.PI*2);
}else{
val=_4c4[i]*parseFloat(c);
}
}
}
_4c7.push(val);
}
return this[_4c3].apply(this,_4c7);
},fromComputedStyle:function(elem,_4cd){
var d=MochiKit.DOM;
var cls=MochiKit.Color.Color;
for(elem=d.getElement(elem);elem;elem=elem.parentNode){
var _4d0=MochiKit.Style.getStyle.apply(d,arguments);
if(!_4d0){
continue;
}
var _4d1=cls.fromString(_4d0);
if(!_4d1){
break;
}
if(_4d1.asRGB().a&gt;0){
return _4d1;
}
}
return null;
},fromBackground:function(elem){
var cls=MochiKit.Color.Color;
return cls.fromComputedStyle(elem,"backgroundColor","background-color")||cls.whiteColor();
},fromText:function(elem){
var cls=MochiKit.Color.Color;
return cls.fromComputedStyle(elem,"color","color")||cls.blackColor();
},namedColors:function(){
return MochiKit.Base.clone(MochiKit.Color.Color._namedColors);
}});
MochiKit.Base.update(MochiKit.Color,{clampColorComponent:function(v,_4d7){
v*=_4d7;
if(v&lt;0){
return 0;
}else{
if(v&gt;_4d7){
return _4d7;
}else{
return v;
}
}
},_hslValue:function(n1,n2,hue){
if(hue&gt;6){
hue-=6;
}else{
if(hue&lt;0){
hue+=6;
}
}
var val;
if(hue&lt;1){
val=n1+(n2-n1)*hue;
}else{
if(hue&lt;3){
val=n2;
}else{
if(hue&lt;4){
val=n1+(n2-n1)*(4-hue);
}else{
val=n1;
}
}
}
return val;
},hsvToRGB:function(hue,_4dd,_4de,_4df){
if(arguments.length==1){
var hsv=hue;
hue=hsv.h;
_4dd=hsv.s;
_4de=hsv.v;
_4df=hsv.a;
}
var red;
var _4e2;
var blue;
if(_4dd===0){
red=0;
_4e2=0;
blue=0;
}else{
var i=Math.floor(hue*6);
var f=(hue*6)-i;
var p=_4de*(1-_4dd);
var q=_4de*(1-(_4dd*f));
var t=_4de*(1-(_4dd*(1-f)));
switch(i){
case 1:
red=q;
_4e2=_4de;
blue=p;
break;
case 2:
red=p;
_4e2=_4de;
blue=t;
break;
case 3:
red=p;
_4e2=q;
blue=_4de;
break;
case 4:
red=t;
_4e2=p;
blue=_4de;
break;
case 5:
red=_4de;
_4e2=p;
blue=q;
break;
case 6:
case 0:
red=_4de;
_4e2=t;
blue=p;
break;
}
}
return {r:red,g:_4e2,b:blue,a:_4df};
},hslToRGB:function(hue,_4ea,_4eb,_4ec){
if(arguments.length==1){
var hsl=hue;
hue=hsl.h;
_4ea=hsl.s;
_4eb=hsl.l;
_4ec=hsl.a;
}
var red;
var _4ef;
var blue;
if(_4ea===0){
red=_4eb;
_4ef=_4eb;
blue=_4eb;
}else{
var m2;
if(_4eb&lt;=0.5){
m2=_4eb*(1+_4ea);
}else{
m2=_4eb+_4ea-(_4eb*_4ea);
}
var m1=(2*_4eb)-m2;
var f=MochiKit.Color._hslValue;
var h6=hue*6;
red=f(m1,m2,h6+2);
_4ef=f(m1,m2,h6);
blue=f(m1,m2,h6-2);
}
return {r:red,g:_4ef,b:blue,a:_4ec};
},rgbToHSV:function(red,_4f6,blue,_4f8){
if(arguments.length==1){
var rgb=red;
red=rgb.r;
_4f6=rgb.g;
blue=rgb.b;
_4f8=rgb.a;
}
var max=Math.max(Math.max(red,_4f6),blue);
var min=Math.min(Math.min(red,_4f6),blue);
var hue;
var _4fd;
var _4fe=max;
if(min==max){
hue=0;
_4fd=0;
}else{
var _4ff=(max-min);
_4fd=_4ff/max;
if(red==max){
hue=(_4f6-blue)/_4ff;
}else{
if(_4f6==max){
hue=2+((blue-red)/_4ff);
}else{
hue=4+((red-_4f6)/_4ff);
}
}
hue/=6;
if(hue&lt;0){
hue+=1;
}
if(hue&gt;1){
hue-=1;
}
}
return {h:hue,s:_4fd,v:_4fe,a:_4f8};
},rgbToHSL:function(red,_501,blue,_503){
if(arguments.length==1){
var rgb=red;
red=rgb.r;
_501=rgb.g;
blue=rgb.b;
_503=rgb.a;
}
var max=Math.max(red,Math.max(_501,blue));
var min=Math.min(red,Math.min(_501,blue));
var hue;
var _508;
var _509=(max+min)/2;
var _50a=max-min;
if(_50a===0){
hue=0;
_508=0;
}else{
if(_509&lt;=0.5){
_508=_50a/(max+min);
}else{
_508=_50a/(2-max-min);
}
if(red==max){
hue=(_501-blue)/_50a;
}else{
if(_501==max){
hue=2+((blue-red)/_50a);
}else{
hue=4+((red-_501)/_50a);
}
}
hue/=6;
if(hue&lt;0){
hue+=1;
}
if(hue&gt;1){
hue-=1;
}
}
return {h:hue,s:_508,l:_509,a:_503};
},toColorPart:function(num){
num=Math.round(num);
var _50c=num.toString(16);
if(num&lt;16){
return "0"+_50c;
}
return _50c;
},__new__:function(){
var m=MochiKit.Base;
this.Color.fromRGBString=m.bind(this.Color._fromColorString,this.Color,"rgb","fromRGB",[1/255,1/255,1/255,1]);
this.Color.fromHSLString=m.bind(this.Color._fromColorString,this.Color,"hsl","fromHSL",[1/360,0.01,0.01,1]);
var _50e=1/3;
var _50f={black:[0,0,0],blue:[0,0,1],brown:[0.6,0.4,0.2],cyan:[0,1,1],darkGray:[_50e,_50e,_50e],gray:[0.5,0.5,0.5],green:[0,1,0],lightGray:[2*_50e,2*_50e,2*_50e],magenta:[1,0,1],orange:[1,0.5,0],purple:[0.5,0,0.5],red:[1,0,0],transparent:[0,0,0,0],white:[1,1,1],yellow:[1,1,0]};
var _510=function(name,r,g,b,a){
var rval=this.fromRGB(r,g,b,a);
this[name]=function(){
return rval;
};
return rval;
};
for(var k in _50f){
var name=k+"Color";
var _519=m.concat([_510,this.Color,name],_50f[k]);
this.Color[name]=m.bind.apply(null,_519);
}
var _51a=function(){
for(var i=0;i&lt;arguments.length;i++){
if(!(arguments[i] instanceof Color)){
return false;
}
}
return true;
};
var _51c=function(a,b){
return a.compareRGB(b);
};
m.nameFunctions(this);
m.registerComparator(this.Color.NAME,_51a,_51c);
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
}});
MochiKit.Color.EXPORT=["Color"];
MochiKit.Color.EXPORT_OK=["clampColorComponent","rgbToHSL","hslToRGB","rgbToHSV","hsvToRGB","toColorPart"];
MochiKit.Color.__new__();
MochiKit.Base._exportSymbols(this,MochiKit.Color);
MochiKit.Color.Color._namedColors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Signal");
dojo.require("MochiKit.Base");
dojo.require("MochiKit.DOM");
dojo.require("MochiKit.Style");
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit.Base",[]);
JSAN.use("MochiKit.DOM",[]);
JSAN.use("MochiKit.Style",[]);
}
try{
if(typeof (MochiKit.Base)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Signal depends on MochiKit.Base!";
}
try{
if(typeof (MochiKit.DOM)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Signal depends on MochiKit.DOM!";
}
try{
if(typeof (MochiKit.Style)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Signal depends on MochiKit.Style!";
}
if(typeof (MochiKit.Signal)=="undefined"){
MochiKit.Signal={};
}
MochiKit.Signal.NAME="MochiKit.Signal";
MochiKit.Signal.VERSION="1.4";
MochiKit.Signal._observers=[];
MochiKit.Signal.Event=function(src,e){
this._event=e||window.event;
this._src=src;
};
MochiKit.Base.update(MochiKit.Signal.Event.prototype,{__repr__:function(){
var repr=MochiKit.Base.repr;
var str="{event(): "+repr(this.event())+", src(): "+repr(this.src())+", type(): "+repr(this.type())+", target(): "+repr(this.target());
if(this.type()&amp;&amp;this.type().indexOf("key")===0||this.type().indexOf("mouse")===0||this.type().indexOf("click")!=-1||this.type()=="contextmenu"){
str+=", modifier(): "+"{alt: "+repr(this.modifier().alt)+", ctrl: "+repr(this.modifier().ctrl)+", meta: "+repr(this.modifier().meta)+", shift: "+repr(this.modifier().shift)+", any: "+repr(this.modifier().any)+"}";
}
if(this.type()&amp;&amp;this.type().indexOf("key")===0){
str+=", key(): {code: "+repr(this.key().code)+", string: "+repr(this.key().string)+"}";
}
if(this.type()&amp;&amp;(this.type().indexOf("mouse")===0||this.type().indexOf("click")!=-1||this.type()=="contextmenu")){
str+=", mouse(): {page: "+repr(this.mouse().page)+", client: "+repr(this.mouse().client);
if(this.type()!="mousemove"){
str+=", button: {left: "+repr(this.mouse().button.left)+", middle: "+repr(this.mouse().button.middle)+", right: "+repr(this.mouse().button.right)+"}}";
}else{
str+="}";
}
}
if(this.type()=="mouseover"||this.type()=="mouseout"){
str+=", relatedTarget(): "+repr(this.relatedTarget());
}
str+="}";
return str;
},toString:function(){
return this.__repr__();
},src:function(){
return this._src;
},event:function(){
return this._event;
},type:function(){
return this._event.type||undefined;
},target:function(){
return this._event.target||this._event.srcElement;
},_relatedTarget:null,relatedTarget:function(){
if(this._relatedTarget!==null){
return this._relatedTarget;
}
var elem=null;
if(this.type()=="mouseover"){
elem=(this._event.relatedTarget||this._event.fromElement);
}else{
if(this.type()=="mouseout"){
elem=(this._event.relatedTarget||this._event.toElement);
}
}
if(elem!==null){
this._relatedTarget=elem;
return elem;
}
return undefined;
},_modifier:null,modifier:function(){
if(this._modifier!==null){
return this._modifier;
}
var m={};
m.alt=this._event.altKey;
m.ctrl=this._event.ctrlKey;
m.meta=this._event.metaKey||false;
m.shift=this._event.shiftKey;
m.any=m.alt||m.ctrl||m.shift||m.meta;
this._modifier=m;
return m;
},_key:null,key:function(){
if(this._key!==null){
return this._key;
}
var k={};
if(this.type()&amp;&amp;this.type().indexOf("key")===0){
if(this.type()=="keydown"||this.type()=="keyup"){
k.code=this._event.keyCode;
k.string=(MochiKit.Signal._specialKeys[k.code]||"KEY_UNKNOWN");
this._key=k;
return k;
}else{
if(this.type()=="keypress"){
k.code=0;
k.string="";
if(typeof (this._event.charCode)!="undefined"&amp;&amp;this._event.charCode!==0&amp;&amp;!MochiKit.Signal._specialMacKeys[this._event.charCode]){
k.code=this._event.charCode;
k.string=String.fromCharCode(k.code);
}else{
if(this._event.keyCode&amp;&amp;typeof (this._event.charCode)=="undefined"){
k.code=this._event.keyCode;
k.string=String.fromCharCode(k.code);
}
}
this._key=k;
return k;
}
}
}
return undefined;
},_mouse:null,mouse:function(){
if(this._mouse!==null){
return this._mouse;
}
var m={};
var e=this._event;
if(this.type()&amp;&amp;(this.type().indexOf("mouse")===0||this.type().indexOf("click")!=-1||this.type()=="contextmenu")){
m.client=new MochiKit.Style.Coordinates(0,0);
if(e.clientX||e.clientY){
m.client.x=(!e.clientX||e.clientX&lt;0)?0:e.clientX;
m.client.y=(!e.clientY||e.clientY&lt;0)?0:e.clientY;
}
m.page=new MochiKit.Style.Coordinates(0,0);
if(e.pageX||e.pageY){
m.page.x=(!e.pageX||e.pageX&lt;0)?0:e.pageX;
m.page.y=(!e.pageY||e.pageY&lt;0)?0:e.pageY;
}else{
var de=MochiKit.DOM._document.documentElement;
var b=MochiKit.DOM._document.body;
m.page.x=e.clientX+(de.scrollLeft||b.scrollLeft)-(de.clientLeft||0);
m.page.y=e.clientY+(de.scrollTop||b.scrollTop)-(de.clientTop||0);
}
if(this.type()!="mousemove"){
m.button={};
m.button.left=false;
m.button.right=false;
m.button.middle=false;
if(e.which){
m.button.left=(e.which==1);
m.button.middle=(e.which==2);
m.button.right=(e.which==3);
}else{
m.button.left=!!(e.button&amp;1);
m.button.right=!!(e.button&amp;2);
m.button.middle=!!(e.button&amp;4);
}
}
this._mouse=m;
return m;
}
return undefined;
},stop:function(){
this.stopPropagation();
this.preventDefault();
},stopPropagation:function(){
if(this._event.stopPropagation){
this._event.stopPropagation();
}else{
this._event.cancelBubble=true;
}
},preventDefault:function(){
if(this._event.preventDefault){
this._event.preventDefault();
}else{
if(this._confirmUnload===null){
this._event.returnValue=false;
}
}
},_confirmUnload:null,confirmUnload:function(msg){
if(this.type()=="beforeunload"){
this._confirmUnload=msg;
this._event.returnValue=msg;
}
}});
MochiKit.Signal._specialMacKeys={3:"KEY_ENTER",63289:"KEY_NUM_PAD_CLEAR",63276:"KEY_PAGE_UP",63277:"KEY_PAGE_DOWN",63275:"KEY_END",63273:"KEY_HOME",63234:"KEY_ARROW_LEFT",63232:"KEY_ARROW_UP",63235:"KEY_ARROW_RIGHT",63233:"KEY_ARROW_DOWN",63302:"KEY_INSERT",63272:"KEY_DELETE"};
(function(){
var _52b=MochiKit.Signal._specialMacKeys;
for(i=63236;i&lt;=63242;i++){
_52b[i]="KEY_F"+(i-63236+1);
}
})();
MochiKit.Signal._specialKeys={8:"KEY_BACKSPACE",9:"KEY_TAB",12:"KEY_NUM_PAD_CLEAR",13:"KEY_ENTER",16:"KEY_SHIFT",17:"KEY_CTRL",18:"KEY_ALT",19:"KEY_PAUSE",20:"KEY_CAPS_LOCK",27:"KEY_ESCAPE",32:"KEY_SPACEBAR",33:"KEY_PAGE_UP",34:"KEY_PAGE_DOWN",35:"KEY_END",36:"KEY_HOME",37:"KEY_ARROW_LEFT",38:"KEY_ARROW_UP",39:"KEY_ARROW_RIGHT",40:"KEY_ARROW_DOWN",44:"KEY_PRINT_SCREEN",45:"KEY_INSERT",46:"KEY_DELETE",59:"KEY_SEMICOLON",91:"KEY_WINDOWS_LEFT",92:"KEY_WINDOWS_RIGHT",93:"KEY_SELECT",106:"KEY_NUM_PAD_ASTERISK",107:"KEY_NUM_PAD_PLUS_SIGN",109:"KEY_NUM_PAD_HYPHEN-MINUS",110:"KEY_NUM_PAD_FULL_STOP",111:"KEY_NUM_PAD_SOLIDUS",144:"KEY_NUM_LOCK",145:"KEY_SCROLL_LOCK",186:"KEY_SEMICOLON",187:"KEY_EQUALS_SIGN",188:"KEY_COMMA",189:"KEY_HYPHEN-MINUS",190:"KEY_FULL_STOP",191:"KEY_SOLIDUS",192:"KEY_GRAVE_ACCENT",219:"KEY_LEFT_SQUARE_BRACKET",220:"KEY_REVERSE_SOLIDUS",221:"KEY_RIGHT_SQUARE_BRACKET",222:"KEY_APOSTROPHE"};
(function(){
var _52c=MochiKit.Signal._specialKeys;
for(var i=48;i&lt;=57;i++){
_52c[i]="KEY_"+(i-48);
}
for(i=65;i&lt;=90;i++){
_52c[i]="KEY_"+String.fromCharCode(i);
}
for(i=96;i&lt;=105;i++){
_52c[i]="KEY_NUM_PAD_"+(i-96);
}
for(i=112;i&lt;=123;i++){
_52c[i]="KEY_F"+(i-112+1);
}
})();
MochiKit.Signal.Ident=function(_52e){
this.source=_52e.source;
this.signal=_52e.signal;
this.listener=_52e.listener;
this.isDOM=_52e.isDOM;
this.objOrFunc=_52e.objOrFunc;
this.funcOrStr=_52e.funcOrStr;
this.connected=_52e.connected;
};
MochiKit.Signal.Ident.prototype={};
MochiKit.Base.update(MochiKit.Signal,{__repr__:function(){
return "["+this.NAME+" "+this.VERSION+"]";
},toString:function(){
return this.__repr__();
},_unloadCache:function(){
var self=MochiKit.Signal;
var _530=self._observers;
for(var i=0;i&lt;_530.length;i++){
if(_530[i].signal!=="onload"&amp;&amp;_530[i].signal!=="onunload"){
self._disconnect(_530[i]);
}
}
},_listener:function(src,sig,func,obj,_536){
var self=MochiKit.Signal;
var E=self.Event;
if(!_536){
return MochiKit.Base.bind(func,obj);
}
obj=obj||src;
if(typeof (func)=="string"){
if(sig==="onload"||sig==="onunload"){
return function(_539){
obj[func].apply(obj,[new E(src,_539)]);
var _53a=new MochiKit.Signal.Ident({source:src,signal:sig,objOrFunc:obj,funcOrStr:func});
MochiKit.Signal._disconnect(_53a);
};
}else{
return function(_53b){
obj[func].apply(obj,[new E(src,_53b)]);
};
}
}else{
if(sig==="onload"||sig==="onunload"){
return function(_53c){
func.apply(obj,[new E(src,_53c)]);
MochiKit.Signal.disconnect(src,sig,func);
var _53d=new MochiKit.Signal.Ident({source:src,signal:sig,objOrFunc:func});
MochiKit.Signal._disconnect(_53d);
};
}else{
return function(_53e){
func.apply(obj,[new E(src,_53e)]);
};
}
}
},_browserAlreadyHasMouseEnterAndLeave:function(){
return /MSIE/.test(navigator.userAgent);
},_mouseEnterListener:function(src,sig,func,obj){
var E=MochiKit.Signal.Event;
return function(_544){
var e=new E(src,_544);
try{
e.relatedTarget().nodeName;
}
catch(err){
return;
}
e.stop();
if(MochiKit.DOM.isChildNode(e.relatedTarget(),src)){
return;
}
e.type=function(){
return sig;
};
if(typeof (func)=="string"){
return obj[func].apply(obj,[e]);
}else{
return func.apply(obj,[e]);
}
};
},_getDestPair:function(_546,_547){
var obj=null;
var func=null;
if(typeof (_547)!="undefined"){
obj=_546;
func=_547;
if(typeof (_547)=="string"){
if(typeof (_546[_547])!="function"){
throw new Error("'funcOrStr' must be a function on 'objOrFunc'");
}
}else{
if(typeof (_547)!="function"){
throw new Error("'funcOrStr' must be a function or string");
}
}
}else{
if(typeof (_546)!="function"){
throw new Error("'objOrFunc' must be a function if 'funcOrStr' is not given");
}else{
func=_546;
}
}
return [obj,func];
},connect:function(src,sig,_54c,_54d){
src=MochiKit.DOM.getElement(src);
var self=MochiKit.Signal;
if(typeof (sig)!="string"){
throw new Error("'sig' must be a string");
}
var _54f=self._getDestPair(_54c,_54d);
var obj=_54f[0];
var func=_54f[1];
if(typeof (obj)=="undefined"||obj===null){
obj=src;
}
var _552=!!(src.addEventListener||src.attachEvent);
if(_552&amp;&amp;(sig==="onmouseenter"||sig==="onmouseleave")&amp;&amp;!self._browserAlreadyHasMouseEnterAndLeave()){
var _553=self._mouseEnterListener(src,sig.substr(2),func,obj);
if(sig==="onmouseenter"){
sig="onmouseover";
}else{
sig="onmouseout";
}
}else{
var _553=self._listener(src,sig,func,obj,_552);
}
if(src.addEventListener){
src.addEventListener(sig.substr(2),_553,false);
}else{
if(src.attachEvent){
src.attachEvent(sig,_553);
}
}
var _554=new MochiKit.Signal.Ident({source:src,signal:sig,listener:_553,isDOM:_552,objOrFunc:_54c,funcOrStr:_54d,connected:true});
self._observers.push(_554);
if(!_552&amp;&amp;typeof (src.__connect__)=="function"){
var args=MochiKit.Base.extend([_554],arguments,1);
src.__connect__.apply(src,args);
}
return _554;
},_disconnect:function(_556){
if(!_556.connected){
return;
}
_556.connected=false;
if(!_556.isDOM){
return;
}
var src=_556.source;
var sig=_556.signal;
var _559=_556.listener;
if(src.removeEventListener){
src.removeEventListener(sig.substr(2),_559,false);
}else{
if(src.detachEvent){
src.detachEvent(sig,_559);
}else{
throw new Error("'src' must be a DOM element");
}
}
},disconnect:function(_55a){
var self=MochiKit.Signal;
var _55c=self._observers;
var m=MochiKit.Base;
if(arguments.length&gt;1){
var src=MochiKit.DOM.getElement(arguments[0]);
var sig=arguments[1];
var obj=arguments[2];
var func=arguments[3];
for(var i=_55c.length-1;i&gt;=0;i--){
var o=_55c[i];
if(o.source===src&amp;&amp;o.signal===sig&amp;&amp;o.objOrFunc===obj&amp;&amp;o.funcOrStr===func){
self._disconnect(o);
if(!self._lock){
_55c.splice(i,1);
}else{
self._dirty=true;
}
return true;
}
}
}else{
var idx=m.findIdentical(_55c,_55a);
if(idx&gt;=0){
self._disconnect(_55a);
if(!self._lock){
_55c.splice(idx,1);
}else{
self._dirty=true;
}
return true;
}
}
return false;
},disconnectAllTo:function(_565,_566){
var self=MochiKit.Signal;
var _568=self._observers;
var _569=self._disconnect;
var _56a=self._lock;
var _56b=self._dirty;
if(typeof (_566)==="undefined"){
_566=null;
}
for(var i=_568.length-1;i&gt;=0;i--){
var _56d=_568[i];
if(_56d.objOrFunc===_565&amp;&amp;(_566===null||_56d.funcOrStr===_566)){
_569(_56d);
if(_56a){
_56b=true;
}else{
_568.splice(i,1);
}
}
}
self._dirty=_56b;
},disconnectAll:function(src,sig){
src=MochiKit.DOM.getElement(src);
var m=MochiKit.Base;
var _571=m.flattenArguments(m.extend(null,arguments,1));
var self=MochiKit.Signal;
var _573=self._disconnect;
var _574=self._observers;
var i,_576;
var _577=self._lock;
var _578=self._dirty;
if(_571.length===0){
for(i=_574.length-1;i&gt;=0;i--){
_576=_574[i];
if(_576.source===src){
_573(_576);
if(!_577){
_574.splice(i,1);
}else{
_578=true;
}
}
}
}else{
var sigs={};
for(i=0;i&lt;_571.length;i++){
sigs[_571[i]]=true;
}
for(i=_574.length-1;i&gt;=0;i--){
_576=_574[i];
if(_576.source===src&amp;&amp;_576.signal in sigs){
_573(_576);
if(!_577){
_574.splice(i,1);
}else{
_578=true;
}
}
}
}
self._dirty=_578;
},signal:function(src,sig){
var self=MochiKit.Signal;
var _57d=self._observers;
src=MochiKit.DOM.getElement(src);
var args=MochiKit.Base.extend(null,arguments,2);
var _57f=[];
self._lock=true;
for(var i=0;i&lt;_57d.length;i++){
var _581=_57d[i];
if(_581.source===src&amp;&amp;_581.signal===sig){
try{
_581.listener.apply(src,args);
}
catch(e){
_57f.push(e);
}
}
}
self._lock=false;
if(self._dirty){
self._dirty=false;
for(var i=_57d.length-1;i&gt;=0;i--){
if(!_57d[i].connected){
_57d.splice(i,1);
}
}
}
if(_57f.length==1){
throw _57f[0];
}else{
if(_57f.length&gt;1){
var e=new Error("Multiple errors thrown in handling 'sig', see errors property");
e.errors=_57f;
throw e;
}
}
}});
MochiKit.Signal.EXPORT_OK=[];
MochiKit.Signal.EXPORT=["connect","disconnect","signal","disconnectAll","disconnectAllTo"];
MochiKit.Signal.__new__=function(win){
var m=MochiKit.Base;
this._document=document;
this._window=win;
this._lock=false;
this._dirty=false;
try{
this.connect(window,"onunload",this._unloadCache);
}
catch(e){
}
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
m.nameFunctions(this);
};
MochiKit.Signal.__new__(this);
if(MochiKit.__export__){
connect=MochiKit.Signal.connect;
disconnect=MochiKit.Signal.disconnect;
disconnectAll=MochiKit.Signal.disconnectAll;
signal=MochiKit.Signal.signal;
}
MochiKit.Base._exportSymbols(this,MochiKit.Signal);
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Position");
dojo.require("MochiKit.Base");
dojo.require("MochiKit.DOM");
dojo.require("MochiKit.Style");
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit.Base",[]);
JSAN.use("MochiKit.DOM",[]);
JSAN.use("MochiKit.Style",[]);
}
try{
if(typeof (MochiKit.Base)=="undefined"||typeof (MochiKit.Style)=="undefined"||typeof (MochiKit.DOM)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Style depends on MochiKit.Base, MochiKit.DOM, and MochiKit.Style!";
}
if(typeof (MochiKit.Position)=="undefined"){
MochiKit.Position={};
}
MochiKit.Position.NAME="MochiKit.Position";
MochiKit.Position.VERSION="1.4";
MochiKit.Position.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.Position.toString=function(){
return this.__repr__();
};
MochiKit.Position.EXPORT_OK=[];
MochiKit.Position.EXPORT=[];
MochiKit.Base.update(MochiKit.Position,{includeScrollOffsets:false,prepare:function(){
var _585=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;
var _586=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;
this.windowOffset=new MochiKit.Style.Coordinates(_585,_586);
},cumulativeOffset:function(_587){
var _588=0;
var _589=0;
do{
_588+=_587.offsetTop||0;
_589+=_587.offsetLeft||0;
_587=_587.offsetParent;
}while(_587);
return new MochiKit.Style.Coordinates(_589,_588);
},realOffset:function(_58a){
var _58b=0;
var _58c=0;
do{
_58b+=_58a.scrollTop||0;
_58c+=_58a.scrollLeft||0;
_58a=_58a.parentNode;
}while(_58a);
return new MochiKit.Style.Coordinates(_58c,_58b);
},within:function(_58d,x,y){
if(this.includeScrollOffsets){
return this.withinIncludingScrolloffsets(_58d,x,y);
}
this.xcomp=x;
this.ycomp=y;
this.offset=this.cumulativeOffset(_58d);
if(_58d.style.position=="fixed"){
this.offset.x+=this.windowOffset.x;
this.offset.y+=this.windowOffset.y;
}
return (y&gt;=this.offset.y&amp;&amp;y&lt;this.offset.y+_58d.offsetHeight&amp;&amp;x&gt;=this.offset.x&amp;&amp;x&lt;this.offset.x+_58d.offsetWidth);
},withinIncludingScrolloffsets:function(_590,x,y){
var _593=this.realOffset(_590);
this.xcomp=x+_593.x-this.windowOffset.x;
this.ycomp=y+_593.y-this.windowOffset.y;
this.offset=this.cumulativeOffset(_590);
return (this.ycomp&gt;=this.offset.y&amp;&amp;this.ycomp&lt;this.offset.y+_590.offsetHeight&amp;&amp;this.xcomp&gt;=this.offset.x&amp;&amp;this.xcomp&lt;this.offset.x+_590.offsetWidth);
},overlap:function(mode,_595){
if(!mode){
return 0;
}
if(mode=="vertical"){
return ((this.offset.y+_595.offsetHeight)-this.ycomp)/_595.offsetHeight;
}
if(mode=="horizontal"){
return ((this.offset.x+_595.offsetWidth)-this.xcomp)/_595.offsetWidth;
}
},absolutize:function(_596){
_596=MochiKit.DOM.getElement(_596);
if(_596.style.position=="absolute"){
return;
}
MochiKit.Position.prepare();
var _597=MochiKit.Position.positionedOffset(_596);
var _598=_596.clientWidth;
var _599=_596.clientHeight;
var _59a={"position":_596.style.position,"left":_597.x-parseFloat(_596.style.left||0),"top":_597.y-parseFloat(_596.style.top||0),"width":_596.style.width,"height":_596.style.height};
_596.style.position="absolute";
_596.style.top=_597.y+"px";
_596.style.left=_597.x+"px";
_596.style.width=_598+"px";
_596.style.height=_599+"px";
return _59a;
},positionedOffset:function(_59b){
var _59c=0,_59d=0;
do{
_59c+=_59b.offsetTop||0;
_59d+=_59b.offsetLeft||0;
_59b=_59b.offsetParent;
if(_59b){
p=MochiKit.Style.getStyle(_59b,"position");
if(p=="relative"||p=="absolute"){
break;
}
}
}while(_59b);
return new MochiKit.Style.Coordinates(_59d,_59c);
},relativize:function(_59e,_59f){
_59e=MochiKit.DOM.getElement(_59e);
if(_59e.style.position=="relative"){
return;
}
MochiKit.Position.prepare();
var top=parseFloat(_59e.style.top||0)-(_59f["top"]||0);
var left=parseFloat(_59e.style.left||0)-(_59f["left"]||0);
_59e.style.position=_59f["position"];
_59e.style.top=top+"px";
_59e.style.left=left+"px";
_59e.style.width=_59f["width"];
_59e.style.height=_59f["height"];
},clone:function(_5a2,_5a3){
_5a2=MochiKit.DOM.getElement(_5a2);
_5a3=MochiKit.DOM.getElement(_5a3);
_5a3.style.position="absolute";
var _5a4=this.cumulativeOffset(_5a2);
_5a3.style.top=_5a4.y+"px";
_5a3.style.left=_5a4.x+"px";
_5a3.style.width=_5a2.offsetWidth+"px";
_5a3.style.height=_5a2.offsetHeight+"px";
},page:function(_5a5){
var _5a6=0;
var _5a7=0;
var _5a8=_5a5;
do{
_5a6+=_5a8.offsetTop||0;
_5a7+=_5a8.offsetLeft||0;
if(_5a8.offsetParent==document.body&amp;&amp;MochiKit.Style.getStyle(_5a8,"position")=="absolute"){
break;
}
}while(_5a8=_5a8.offsetParent);
_5a8=_5a5;
do{
_5a6-=_5a8.scrollTop||0;
_5a7-=_5a8.scrollLeft||0;
}while(_5a8=_5a8.parentNode);
return new MochiKit.Style.Coordinates(_5a7,_5a6);
}});
MochiKit.Position.__new__=function(win){
var m=MochiKit.Base;
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
m.nameFunctions(this);
};
MochiKit.Position.__new__(this);
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Visual");
dojo.require("MochiKit.Base");
dojo.require("MochiKit.DOM");
dojo.require("MochiKit.Style");
dojo.require("MochiKit.Color");
dojo.require("MochiKit.Position");
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit.Base",[]);
JSAN.use("MochiKit.DOM",[]);
JSAN.use("MochiKit.Style",[]);
JSAN.use("MochiKit.Color",[]);
JSAN.use("MochiKit.Position",[]);
}
try{
if(typeof (MochiKit.Base)==="undefined"||typeof (MochiKit.DOM)==="undefined"||typeof (MochiKit.Style)==="undefined"||typeof (MochiKit.Position)==="undefined"||typeof (MochiKit.Color)==="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Visual depends on MochiKit.Base, MochiKit.DOM, MochiKit.Style, MochiKit.Position and MochiKit.Color!";
}
if(typeof (MochiKit.Visual)=="undefined"){
MochiKit.Visual={};
}
MochiKit.Visual.NAME="MochiKit.Visual";
MochiKit.Visual.VERSION="1.4";
MochiKit.Visual.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.Visual.toString=function(){
return this.__repr__();
};
MochiKit.Visual._RoundCorners=function(e,_5ac){
e=MochiKit.DOM.getElement(e);
this._setOptions(_5ac);
if(this.options.__unstable__wrapElement){
e=this._doWrap(e);
}
var _5ad=this.options.color;
var C=MochiKit.Color.Color;
if(this.options.color==="fromElement"){
_5ad=C.fromBackground(e);
}else{
if(!(_5ad instanceof C)){
_5ad=C.fromString(_5ad);
}
}
this.isTransparent=(_5ad.asRGB().a&lt;=0);
var _5af=this.options.bgColor;
if(this.options.bgColor==="fromParent"){
_5af=C.fromBackground(e.offsetParent);
}else{
if(!(_5af instanceof C)){
_5af=C.fromString(_5af);
}
}
this._roundCornersImpl(e,_5ad,_5af);
};
MochiKit.Visual._RoundCorners.prototype={_doWrap:function(e){
var _5b1=e.parentNode;
var doc=MochiKit.DOM.currentDocument();
if(typeof (doc.defaultView)==="undefined"||doc.defaultView===null){
return e;
}
var _5b3=doc.defaultView.getComputedStyle(e,null);
if(typeof (_5b3)==="undefined"||_5b3===null){
return e;
}
var _5b4=MochiKit.DOM.DIV({"style":{display:"block",marginTop:_5b3.getPropertyValue("padding-top"),marginRight:_5b3.getPropertyValue("padding-right"),marginBottom:_5b3.getPropertyValue("padding-bottom"),marginLeft:_5b3.getPropertyValue("padding-left"),padding:"0px"}});
_5b4.innerHTML=e.innerHTML;
e.innerHTML="";
e.appendChild(_5b4);
return e;
},_roundCornersImpl:function(e,_5b6,_5b7){
if(this.options.border){
this._renderBorder(e,_5b7);
}
if(this._isTopRounded()){
this._roundTopCorners(e,_5b6,_5b7);
}
if(this._isBottomRounded()){
this._roundBottomCorners(e,_5b6,_5b7);
}
},_renderBorder:function(el,_5b9){
var _5ba="1px solid "+this._borderColor(_5b9);
var _5bb="border-left: "+_5ba;
var _5bc="border-right: "+_5ba;
var _5bd="style='"+_5bb+";"+_5bc+"'";
el.innerHTML="&lt;div "+_5bd+"&gt;"+el.innerHTML+"&lt;/div&gt;";
},_roundTopCorners:function(el,_5bf,_5c0){
var _5c1=this._createCorner(_5c0);
for(var i=0;i&lt;this.options.numSlices;i++){
_5c1.appendChild(this._createCornerSlice(_5bf,_5c0,i,"top"));
}
el.style.paddingTop=0;
el.insertBefore(_5c1,el.firstChild);
},_roundBottomCorners:function(el,_5c4,_5c5){
var _5c6=this._createCorner(_5c5);
for(var i=(this.options.numSlices-1);i&gt;=0;i--){
_5c6.appendChild(this._createCornerSlice(_5c4,_5c5,i,"bottom"));
}
el.style.paddingBottom=0;
el.appendChild(_5c6);
},_createCorner:function(_5c8){
var dom=MochiKit.DOM;
return dom.DIV({style:{backgroundColor:_5c8.toString()}});
},_createCornerSlice:function(_5ca,_5cb,n,_5cd){
var _5ce=MochiKit.DOM.SPAN();
var _5cf=_5ce.style;
_5cf.backgroundColor=_5ca.toString();
_5cf.display="block";
_5cf.height="1px";
_5cf.overflow="hidden";
_5cf.fontSize="1px";
var _5d0=this._borderColor(_5ca,_5cb);
if(this.options.border&amp;&amp;n===0){
_5cf.borderTopStyle="solid";
_5cf.borderTopWidth="1px";
_5cf.borderLeftWidth="0px";
_5cf.borderRightWidth="0px";
_5cf.borderBottomWidth="0px";
_5cf.height="0px";
_5cf.borderColor=_5d0.toString();
}else{
if(_5d0){
_5cf.borderColor=_5d0.toString();
_5cf.borderStyle="solid";
_5cf.borderWidth="0px 1px";
}
}
if(!this.options.compact&amp;&amp;(n==(this.options.numSlices-1))){
_5cf.height="2px";
}
this._setMargin(_5ce,n,_5cd);
this._setBorder(_5ce,n,_5cd);
return _5ce;
},_setOptions:function(_5d1){
this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false,__unstable__wrapElement:false};
MochiKit.Base.update(this.options,_5d1);
this.options.numSlices=(this.options.compact?2:4);
},_whichSideTop:function(){
var _5d2=this.options.corners;
if(this._hasString(_5d2,"all","top")){
return "";
}
var _5d3=(_5d2.indexOf("tl")!=-1);
var _5d4=(_5d2.indexOf("tr")!=-1);
if(_5d3&amp;&amp;_5d4){
return "";
}
if(_5d3){
return "left";
}
if(_5d4){
return "right";
}
return "";
},_whichSideBottom:function(){
var _5d5=this.options.corners;
if(this._hasString(_5d5,"all","bottom")){
return "";
}
var _5d6=(_5d5.indexOf("bl")!=-1);
var _5d7=(_5d5.indexOf("br")!=-1);
if(_5d6&amp;&amp;_5d7){
return "";
}
if(_5d6){
return "left";
}
if(_5d7){
return "right";
}
return "";
},_borderColor:function(_5d8,_5d9){
if(_5d8=="transparent"){
return _5d9;
}else{
if(this.options.border){
return this.options.border;
}else{
if(this.options.blend){
return _5d9.blendedColor(_5d8);
}
}
}
return "";
},_setMargin:function(el,n,_5dc){
var _5dd=this._marginSize(n)+"px";
var _5de=(_5dc=="top"?this._whichSideTop():this._whichSideBottom());
var _5df=el.style;
if(_5de=="left"){
_5df.marginLeft=_5dd;
_5df.marginRight="0px";
}else{
if(_5de=="right"){
_5df.marginRight=_5dd;
_5df.marginLeft="0px";
}else{
_5df.marginLeft=_5dd;
_5df.marginRight=_5dd;
}
}
},_setBorder:function(el,n,_5e2){
var _5e3=this._borderSize(n)+"px";
var _5e4=(_5e2=="top"?this._whichSideTop():this._whichSideBottom());
var _5e5=el.style;
if(_5e4=="left"){
_5e5.borderLeftWidth=_5e3;
_5e5.borderRightWidth="0px";
}else{
if(_5e4=="right"){
_5e5.borderRightWidth=_5e3;
_5e5.borderLeftWidth="0px";
}else{
_5e5.borderLeftWidth=_5e3;
_5e5.borderRightWidth=_5e3;
}
}
},_marginSize:function(n){
if(this.isTransparent){
return 0;
}
var o=this.options;
if(o.compact&amp;&amp;o.blend){
var _5e8=[1,0];
return _5e8[n];
}else{
if(o.compact){
var _5e9=[2,1];
return _5e9[n];
}else{
if(o.blend){
var _5ea=[3,2,1,0];
return _5ea[n];
}else{
var _5eb=[5,3,2,1];
return _5eb[n];
}
}
}
},_borderSize:function(n){
var o=this.options;
var _5ee;
if(o.compact&amp;&amp;(o.blend||this.isTransparent)){
return 1;
}else{
if(o.compact){
_5ee=[1,0];
}else{
if(o.blend){
_5ee=[2,1,1,1];
}else{
if(o.border){
_5ee=[0,2,0,0];
}else{
if(this.isTransparent){
_5ee=[5,3,2,1];
}else{
return 0;
}
}
}
}
}
return _5ee[n];
},_hasString:function(str){
for(var i=1;i&lt;arguments.length;i++){
if(str.indexOf(arguments[i])!=-1){
return true;
}
}
return false;
},_isTopRounded:function(){
return this._hasString(this.options.corners,"all","top","tl","tr");
},_isBottomRounded:function(){
return this._hasString(this.options.corners,"all","bottom","bl","br");
},_hasSingleTextChild:function(el){
return (el.childNodes.length==1&amp;&amp;el.childNodes[0].nodeType==3);
}};
MochiKit.Visual.roundElement=function(e,_5f3){
new MochiKit.Visual._RoundCorners(e,_5f3);
};
MochiKit.Visual.roundClass=function(_5f4,_5f5,_5f6){
var _5f7=MochiKit.DOM.getElementsByTagAndClassName(_5f4,_5f5);
for(var i=0;i&lt;_5f7.length;i++){
MochiKit.Visual.roundElement(_5f7[i],_5f6);
}
};
MochiKit.Visual.tagifyText=function(_5f9,_5fa){
_5fa=_5fa||"position:relative";
if(/MSIE/.test(navigator.userAgent)){
_5fa+=";zoom:1";
}
_5f9=MochiKit.DOM.getElement(_5f9);
var ma=MochiKit.Base.map;
ma(function(_5fc){
if(_5fc.nodeType==3){
ma(function(_5fd){
_5f9.insertBefore(MochiKit.DOM.SPAN({style:_5fa},_5fd==" "?String.fromCharCode(160):_5fd),_5fc);
},_5fc.nodeValue.split(""));
MochiKit.DOM.removeElement(_5fc);
}
},_5f9.childNodes);
};
MochiKit.Visual.forceRerendering=function(_5fe){
try{
_5fe=MochiKit.DOM.getElement(_5fe);
var n=document.createTextNode(" ");
_5fe.appendChild(n);
_5fe.removeChild(n);
}
catch(e){
}
};
MochiKit.Visual.multiple=function(_600,_601,_602){
_602=MochiKit.Base.update({speed:0.1,delay:0},_602||{});
var _603=_602.delay;
var _604=0;
MochiKit.Base.map(function(_605){
_602.delay=_604*_602.speed+_603;
new _601(_605,_602);
_604+=1;
},_600);
};
MochiKit.Visual.PAIRS={"slide":["slideDown","slideUp"],"blind":["blindDown","blindUp"],"appear":["appear","fade"],"size":["grow","shrink"]};
MochiKit.Visual.toggle=function(_606,_607,_608){
_606=MochiKit.DOM.getElement(_606);
_607=(_607||"appear").toLowerCase();
_608=MochiKit.Base.update({queue:{position:"end",scope:(_606.id||"global"),limit:1}},_608||{});
var v=MochiKit.Visual;
v[_606.style.display!="none"?v.PAIRS[_607][1]:v.PAIRS[_607][0]](_606,_608);
};
MochiKit.Visual.Transitions={};
MochiKit.Visual.Transitions.linear=function(pos){
return pos;
};
MochiKit.Visual.Transitions.sinoidal=function(pos){
return (-Math.cos(pos*Math.PI)/2)+0.5;
};
MochiKit.Visual.Transitions.reverse=function(pos){
return 1-pos;
};
MochiKit.Visual.Transitions.flicker=function(pos){
return ((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4;
};
MochiKit.Visual.Transitions.wobble=function(pos){
return (-Math.cos(pos*Math.PI*(9*pos))/2)+0.5;
};
MochiKit.Visual.Transitions.pulse=function(pos,_610){
if(!_610){
return (Math.floor(pos*10)%2===0?(pos*10-Math.floor(pos*10)):1-(pos*10-Math.floor(pos*10)));
}
return (Math.round((pos%(1/_610))*_610)==0?((pos*_610*2)-Math.floor(pos*_610*2)):1-((pos*_610*2)-Math.floor(pos*_610*2)));
};
MochiKit.Visual.Transitions.none=function(pos){
return 0;
};
MochiKit.Visual.Transitions.full=function(pos){
return 1;
};
MochiKit.Visual.ScopedQueue=function(){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls();
}
this.__init__();
};
MochiKit.Base.update(MochiKit.Visual.ScopedQueue.prototype,{__init__:function(){
this.effects=[];
this.interval=null;
},add:function(_614){
var _615=new Date().getTime();
var _616=(typeof (_614.options.queue)=="string")?_614.options.queue:_614.options.queue.position;
var ma=MochiKit.Base.map;
switch(_616){
case "front":
ma(function(e){
if(e.state=="idle"){
e.startOn+=_614.finishOn;
e.finishOn+=_614.finishOn;
}
},this.effects);
break;
case "end":
var _619;
ma(function(e){
var i=e.finishOn;
if(i&gt;=(_619||i)){
_619=i;
}
},this.effects);
_615=_619||_615;
break;
case "break":
ma(function(e){
e.finalize();
},this.effects);
break;
}
_614.startOn+=_615;
_614.finishOn+=_615;
if(!_614.options.queue.limit||this.effects.length&lt;_614.options.queue.limit){
this.effects.push(_614);
}
if(!this.interval){
this.interval=this.startLoop(MochiKit.Base.bind(this.loop,this),40);
}
},startLoop:function(func,_61e){
return setInterval(func,_61e);
},remove:function(_61f){
this.effects=MochiKit.Base.filter(function(e){
return e!=_61f;
},this.effects);
if(!this.effects.length){
this.stopLoop(this.interval);
this.interval=null;
}
},stopLoop:function(_621){
clearInterval(_621);
},loop:function(){
var _622=new Date().getTime();
MochiKit.Base.map(function(_623){
_623.loop(_622);
},this.effects);
}});
MochiKit.Visual.Queues={instances:{},get:function(_624){
if(typeof (_624)!="string"){
return _624;
}
if(!this.instances[_624]){
this.instances[_624]=new MochiKit.Visual.ScopedQueue();
}
return this.instances[_624];
}};
MochiKit.Visual.Queue=MochiKit.Visual.Queues.get("global");
MochiKit.Visual.DefaultOptions={transition:MochiKit.Visual.Transitions.sinoidal,duration:1,fps:25,sync:false,from:0,to:1,delay:0,queue:"parallel"};
MochiKit.Visual.Base=function(){
};
MochiKit.Visual.Base.prototype={__class__:MochiKit.Visual.Base,start:function(_625){
var v=MochiKit.Visual;
this.options=MochiKit.Base.setdefault(_625||{},v.DefaultOptions);
this.currentFrame=0;
this.state="idle";
this.startOn=this.options.delay*1000;
this.finishOn=this.startOn+(this.options.duration*1000);
this.event("beforeStart");
if(!this.options.sync){
v.Queues.get(typeof (this.options.queue)=="string"?"global":this.options.queue.scope).add(this);
}
},loop:function(_627){
if(_627&gt;=this.startOn){
if(_627&gt;=this.finishOn){
return this.finalize();
}
var pos=(_627-this.startOn)/(this.finishOn-this.startOn);
var _629=Math.round(pos*this.options.fps*this.options.duration);
if(_629&gt;this.currentFrame){
this.render(pos);
this.currentFrame=_629;
}
}
},render:function(pos){
if(this.state=="idle"){
this.state="running";
this.event("beforeSetup");
this.setup();
this.event("afterSetup");
}
if(this.state=="running"){
if(this.options.transition){
pos=this.options.transition(pos);
}
pos*=(this.options.to-this.options.from);
pos+=this.options.from;
this.event("beforeUpdate");
this.update(pos);
this.event("afterUpdate");
}
},cancel:function(){
if(!this.options.sync){
MochiKit.Visual.Queues.get(typeof (this.options.queue)=="string"?"global":this.options.queue.scope).remove(this);
}
this.state="finished";
},finalize:function(){
this.render(1);
this.cancel();
this.event("beforeFinish");
this.finish();
this.event("afterFinish");
},setup:function(){
},finish:function(){
},update:function(_62b){
},event:function(_62c){
if(this.options[_62c+"Internal"]){
this.options[_62c+"Internal"](this);
}
if(this.options[_62c]){
this.options[_62c](this);
}
},repr:function(){
return "["+this.__class__.NAME+", options:"+MochiKit.Base.repr(this.options)+"]";
}};
MochiKit.Visual.Parallel=function(_62d,_62e){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls(_62d,_62e);
}
this.__init__(_62d,_62e);
};
MochiKit.Visual.Parallel.prototype=new MochiKit.Visual.Base();
MochiKit.Base.update(MochiKit.Visual.Parallel.prototype,{__class__:MochiKit.Visual.Parallel,__init__:function(_630,_631){
this.effects=_630||[];
this.start(_631);
},update:function(_632){
MochiKit.Base.map(function(_633){
_633.render(_632);
},this.effects);
},finish:function(){
MochiKit.Base.map(function(_634){
_634.finalize();
},this.effects);
}});
MochiKit.Visual.Opacity=function(_635,_636){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls(_635,_636);
}
this.__init__(_635,_636);
};
MochiKit.Visual.Opacity.prototype=new MochiKit.Visual.Base();
MochiKit.Base.update(MochiKit.Visual.Opacity.prototype,{__class__:MochiKit.Visual.Opacity,__init__:function(_638,_639){
var b=MochiKit.Base;
var s=MochiKit.Style;
this.element=MochiKit.DOM.getElement(_638);
if(this.element.currentStyle&amp;&amp;(!this.element.currentStyle.hasLayout)){
s.setStyle(this.element,{zoom:1});
}
_639=b.update({from:s.getStyle(this.element,"opacity")||0,to:1},_639||{});
this.start(_639);
},update:function(_63c){
MochiKit.Style.setStyle(this.element,{"opacity":_63c});
}});
MochiKit.Visual.Move=function(_63d,_63e){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls(_63d,_63e);
}
this.__init__(_63d,_63e);
};
MochiKit.Visual.Move.prototype=new MochiKit.Visual.Base();
MochiKit.Base.update(MochiKit.Visual.Move.prototype,{__class__:MochiKit.Visual.Move,__init__:function(_640,_641){
this.element=MochiKit.DOM.getElement(_640);
_641=MochiKit.Base.update({x:0,y:0,mode:"relative"},_641||{});
this.start(_641);
},setup:function(){
MochiKit.DOM.makePositioned(this.element);
var s=this.element.style;
var _643=s.visibility;
var _644=s.display;
if(_644=="none"){
s.visibility="hidden";
s.display="";
}
this.originalLeft=parseFloat(MochiKit.Style.getStyle(this.element,"left")||"0");
this.originalTop=parseFloat(MochiKit.Style.getStyle(this.element,"top")||"0");
if(this.options.mode=="absolute"){
this.options.x-=this.originalLeft;
this.options.y-=this.originalTop;
}
if(_644=="none"){
s.visibility=_643;
s.display=_644;
}
},update:function(_645){
MochiKit.Style.setStyle(this.element,{left:Math.round(this.options.x*_645+this.originalLeft)+"px",top:Math.round(this.options.y*_645+this.originalTop)+"px"});
}});
MochiKit.Visual.Scale=function(_646,_647,_648){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls(_646,_647,_648);
}
this.__init__(_646,_647,_648);
};
MochiKit.Visual.Scale.prototype=new MochiKit.Visual.Base();
MochiKit.Base.update(MochiKit.Visual.Scale.prototype,{__class__:MochiKit.Visual.Scale,__init__:function(_64a,_64b,_64c){
this.element=MochiKit.DOM.getElement(_64a);
_64c=MochiKit.Base.update({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:_64b},_64c||{});
this.start(_64c);
},setup:function(){
this.restoreAfterFinish=this.options.restoreAfterFinish||false;
this.elementPositioning=MochiKit.Style.getStyle(this.element,"position");
var ma=MochiKit.Base.map;
var b=MochiKit.Base.bind;
this.originalStyle={};
ma(b(function(k){
this.originalStyle[k]=this.element.style[k];
},this),["top","left","width","height","fontSize"]);
this.originalTop=this.element.offsetTop;
this.originalLeft=this.element.offsetLeft;
var _650=MochiKit.Style.getStyle(this.element,"font-size")||"100%";
ma(b(function(_651){
if(_650.indexOf(_651)&gt;0){
this.fontSize=parseFloat(_650);
this.fontSizeType=_651;
}
},this),["em","px","%"]);
this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;
if(/^content/.test(this.options.scaleMode)){
this.dims=[this.element.scrollHeight,this.element.scrollWidth];
}else{
if(this.options.scaleMode=="box"){
this.dims=[this.element.offsetHeight,this.element.offsetWidth];
}else{
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];
}
}
},update:function(_652){
var _653=(this.options.scaleFrom/100)+(this.factor*_652);
if(this.options.scaleContent&amp;&amp;this.fontSize){
MochiKit.Style.setStyle(this.element,{fontSize:this.fontSize*_653+this.fontSizeType});
}
this.setDimensions(this.dims[0]*_653,this.dims[1]*_653);
},finish:function(){
if(this.restoreAfterFinish){
MochiKit.Style.setStyle(this.element,this.originalStyle);
}
},setDimensions:function(_654,_655){
var d={};
var r=Math.round;
if(/MSIE/.test(navigator.userAgent)){
r=Math.ceil;
}
if(this.options.scaleX){
d.width=r(_655)+"px";
}
if(this.options.scaleY){
d.height=r(_654)+"px";
}
if(this.options.scaleFromCenter){
var topd=(_654-this.dims[0])/2;
var _659=(_655-this.dims[1])/2;
if(this.elementPositioning=="absolute"){
if(this.options.scaleY){
d.top=this.originalTop-topd+"px";
}
if(this.options.scaleX){
d.left=this.originalLeft-_659+"px";
}
}else{
if(this.options.scaleY){
d.top=-topd+"px";
}
if(this.options.scaleX){
d.left=-_659+"px";
}
}
}
MochiKit.Style.setStyle(this.element,d);
}});
MochiKit.Visual.Highlight=function(_65a,_65b){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls(_65a,_65b);
}
this.__init__(_65a,_65b);
};
MochiKit.Visual.Highlight.prototype=new MochiKit.Visual.Base();
MochiKit.Base.update(MochiKit.Visual.Highlight.prototype,{__class__:MochiKit.Visual.Highlight,__init__:function(_65d,_65e){
this.element=MochiKit.DOM.getElement(_65d);
_65e=MochiKit.Base.update({startcolor:"#ffff99"},_65e||{});
this.start(_65e);
},setup:function(){
var b=MochiKit.Base;
var s=MochiKit.Style;
if(s.getStyle(this.element,"display")=="none"){
this.cancel();
return;
}
this.oldStyle={backgroundImage:s.getStyle(this.element,"background-image")};
s.setStyle(this.element,{backgroundImage:"none"});
if(!this.options.endcolor){
this.options.endcolor=MochiKit.Color.Color.fromBackground(this.element).toHexString();
}
if(b.isUndefinedOrNull(this.options.restorecolor)){
this.options.restorecolor=s.getStyle(this.element,"background-color");
}
this._base=b.map(b.bind(function(i){
return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16);
},this),[0,1,2]);
this._delta=b.map(b.bind(function(i){
return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i];
},this),[0,1,2]);
},update:function(_663){
var m="#";
MochiKit.Base.map(MochiKit.Base.bind(function(i){
m+=MochiKit.Color.toColorPart(Math.round(this._base[i]+this._delta[i]*_663));
},this),[0,1,2]);
MochiKit.Style.setStyle(this.element,{backgroundColor:m});
},finish:function(){
MochiKit.Style.setStyle(this.element,MochiKit.Base.update(this.oldStyle,{backgroundColor:this.options.restorecolor}));
}});
MochiKit.Visual.ScrollTo=function(_666,_667){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls(_666,_667);
}
this.__init__(_666,_667);
};
MochiKit.Visual.ScrollTo.prototype=new MochiKit.Visual.Base();
MochiKit.Base.update(MochiKit.Visual.ScrollTo.prototype,{__class__:MochiKit.Visual.ScrollTo,__init__:function(_669,_66a){
this.element=MochiKit.DOM.getElement(_669);
this.start(_66a||{});
},setup:function(){
var p=MochiKit.Position;
p.prepare();
var _66c=p.cumulativeOffset(this.element);
if(this.options.offset){
_66c.y+=this.options.offset;
}
var max;
if(window.innerHeight){
max=window.innerHeight-window.height;
}else{
if(document.documentElement&amp;&amp;document.documentElement.clientHeight){
max=document.documentElement.clientHeight-document.body.scrollHeight;
}else{
if(document.body){
max=document.body.clientHeight-document.body.scrollHeight;
}
}
}
this.scrollStart=p.windowOffset.y;
this.delta=(_66c.y&gt;max?max:_66c.y)-this.scrollStart;
},update:function(_66e){
var p=MochiKit.Position;
p.prepare();
window.scrollTo(p.windowOffset.x,this.scrollStart+(_66e*this.delta));
}});
MochiKit.Visual.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
MochiKit.Visual.Morph=function(_670,_671){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls(_670,_671);
}
this.__init__(_670,_671);
};
MochiKit.Visual.Morph.prototype=new MochiKit.Visual.Base();
MochiKit.Base.update(MochiKit.Visual.Morph.prototype,{__class__:MochiKit.Visual.Morph,__init__:function(_673,_674){
this.element=MochiKit.DOM.getElement(_673);
this.start(_674||{});
},setup:function(){
var b=MochiKit.Base;
var _676=this.options.style;
this.styleStart={};
this.styleEnd={};
this.units={};
var _677,unit;
for(var s in _676){
_677=_676[s];
s=b.camelize(s);
if(MochiKit.Visual.CSS_LENGTH.test(_677)){
var _67a=_677.match(/^([\+\-]?[0-9\.]+)(.*)$/);
_677=parseFloat(_67a[1]);
unit=(_67a.length==3)?_67a[2]:null;
this.styleEnd[s]=_677;
this.units[s]=unit;
_677=MochiKit.Style.getStyle(this.element,s);
_67a=_677.match(/^([\+\-]?[0-9\.]+)(.*)$/);
_677=parseFloat(_67a[1]);
this.styleStart[s]=_677;
}else{
var c=MochiKit.Color.Color;
_677=c.fromString(_677);
if(_677){
this.units[s]="color";
this.styleEnd[s]=_677.toHexString();
_677=MochiKit.Style.getStyle(this.element,s);
this.styleStart[s]=c.fromString(_677).toHexString();
this.styleStart[s]=b.map(b.bind(function(i){
return parseInt(this.styleStart[s].slice(i*2+1,i*2+3),16);
},this),[0,1,2]);
this.styleEnd[s]=b.map(b.bind(function(i){
return parseInt(this.styleEnd[s].slice(i*2+1,i*2+3),16);
},this),[0,1,2]);
}
}
}
},update:function(_67e){
var _67f;
for(var s in this.styleStart){
if(this.units[s]=="color"){
var m="#";
var _682=this.styleStart[s];
var end=this.styleEnd[s];
MochiKit.Base.map(MochiKit.Base.bind(function(i){
m+=MochiKit.Color.toColorPart(Math.round(_682[i]+(end[i]-_682[i])*_67e));
},this),[0,1,2]);
this.element.style[s]=m;
}else{
_67f=this.styleStart[s]+Math.round((this.styleEnd[s]-this.styleStart[s])*_67e*1000)/1000+this.units[s];
this.element.style[s]=_67f;
}
}
}});
MochiKit.Visual.fade=function(_685,_686){
var s=MochiKit.Style;
var _688=s.getStyle(_685,"opacity");
_686=MochiKit.Base.update({from:s.getStyle(_685,"opacity")||1,to:0,afterFinishInternal:function(_689){
if(_689.options.to!==0){
return;
}
s.hideElement(_689.element);
s.setStyle(_689.element,{"opacity":_688});
}},_686||{});
return new MochiKit.Visual.Opacity(_685,_686);
};
MochiKit.Visual.appear=function(_68a,_68b){
var s=MochiKit.Style;
var v=MochiKit.Visual;
_68b=MochiKit.Base.update({from:(s.getStyle(_68a,"display")=="none"?0:s.getStyle(_68a,"opacity")||0),to:1,afterFinishInternal:function(_68e){
v.forceRerendering(_68e.element);
},beforeSetupInternal:function(_68f){
s.setStyle(_68f.element,{"opacity":_68f.options.from});
s.showElement(_68f.element);
}},_68b||{});
return new v.Opacity(_68a,_68b);
};
MochiKit.Visual.puff=function(_690,_691){
var s=MochiKit.Style;
var v=MochiKit.Visual;
_690=MochiKit.DOM.getElement(_690);
var _694={position:s.getStyle(_690,"position"),top:_690.style.top,left:_690.style.left,width:_690.style.width,height:_690.style.height,opacity:s.getStyle(_690,"opacity")};
_691=MochiKit.Base.update({beforeSetupInternal:function(_695){
MochiKit.Position.absolutize(_695.effects[0].element);
},afterFinishInternal:function(_696){
s.hideElement(_696.effects[0].element);
s.setStyle(_696.effects[0].element,_694);
},scaleContent:true,scaleFromCenter:true},_691||{});
return new v.Parallel([new v.Scale(_690,200,{sync:true,scaleFromCenter:_691.scaleFromCenter,scaleContent:_691.scaleContent,restoreAfterFinish:true}),new v.Opacity(_690,{sync:true,to:0})],_691);
};
MochiKit.Visual.blindUp=function(_697,_698){
var d=MochiKit.DOM;
_697=d.getElement(_697);
var _69a=d.makeClipping(_697);
_698=MochiKit.Base.update({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(_69b){
MochiKit.Style.hideElement(_69b.element);
d.undoClipping(_69b.element,_69a);
}},_698||{});
return new MochiKit.Visual.Scale(_697,0,_698);
};
MochiKit.Visual.blindDown=function(_69c,_69d){
var d=MochiKit.DOM;
var s=MochiKit.Style;
_69c=d.getElement(_69c);
var _6a0=s.getElementDimensions(_69c);
var _6a1;
_69d=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_6a0.h,originalWidth:_6a0.w},restoreAfterFinish:true,afterSetupInternal:function(_6a2){
_6a1=d.makeClipping(_6a2.element);
s.setStyle(_6a2.element,{height:"0px"});
s.showElement(_6a2.element);
},afterFinishInternal:function(_6a3){
d.undoClipping(_6a3.element,_6a1);
}},_69d||{});
return new MochiKit.Visual.Scale(_69c,100,_69d);
};
MochiKit.Visual.switchOff=function(_6a4,_6a5){
var d=MochiKit.DOM;
_6a4=d.getElement(_6a4);
var _6a7=MochiKit.Style.getStyle(_6a4,"opacity");
var _6a8;
_6a5=MochiKit.Base.update({duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetupInternal:function(_6a9){
d.makePositioned(_6a9.element);
_6a8=d.makeClipping(_6a9.element);
},afterFinishInternal:function(_6aa){
MochiKit.Style.hideElement(_6aa.element);
d.undoClipping(_6aa.element,_6a8);
d.undoPositioned(_6aa.element);
MochiKit.Style.setStyle(_6aa.element,{"opacity":_6a7});
}},_6a5||{});
var v=MochiKit.Visual;
return new v.appear(_6a4,{duration:0.4,from:0,transition:v.Transitions.flicker,afterFinishInternal:function(_6ac){
new v.Scale(_6ac.element,1,_6a5);
}});
};
MochiKit.Visual.dropOut=function(_6ad,_6ae){
var d=MochiKit.DOM;
var s=MochiKit.Style;
_6ad=d.getElement(_6ad);
var _6b1={top:s.getStyle(_6ad,"top"),left:s.getStyle(_6ad,"left"),opacity:s.getStyle(_6ad,"opacity")};
_6ae=MochiKit.Base.update({duration:0.5,distance:100,beforeSetupInternal:function(_6b2){
d.makePositioned(_6b2.effects[0].element);
},afterFinishInternal:function(_6b3){
s.hideElement(_6b3.effects[0].element);
d.undoPositioned(_6b3.effects[0].element);
s.setStyle(_6b3.effects[0].element,_6b1);
}},_6ae||{});
var v=MochiKit.Visual;
return new v.Parallel([new v.Move(_6ad,{x:0,y:_6ae.distance,sync:true}),new v.Opacity(_6ad,{sync:true,to:0})],_6ae);
};
MochiKit.Visual.shake=function(_6b5,_6b6){
var d=MochiKit.DOM;
var v=MochiKit.Visual;
var s=MochiKit.Style;
_6b5=d.getElement(_6b5);
_6b6=MochiKit.Base.update({x:-20,y:0,duration:0.05,afterFinishInternal:function(_6ba){
d.undoPositioned(_6ba.element);
s.setStyle(_6ba.element,_6bb);
}},_6b6||{});
var _6bb={top:s.getStyle(_6b5,"top"),left:s.getStyle(_6b5,"left")};
return new v.Move(_6b5,{x:20,y:0,duration:0.05,afterFinishInternal:function(_6bc){
new v.Move(_6bc.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(_6bd){
new v.Move(_6bd.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(_6be){
new v.Move(_6be.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(_6bf){
new v.Move(_6bf.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(_6c0){
new v.Move(_6c0.element,_6b6);
}});
}});
}});
}});
}});
};
MochiKit.Visual.slideDown=function(_6c1,_6c2){
var d=MochiKit.DOM;
var b=MochiKit.Base;
var s=MochiKit.Style;
_6c1=d.getElement(_6c1);
if(!_6c1.firstChild){
throw "MochiKit.Visual.slideDown must be used on a element with a child";
}
d.removeEmptyTextNodes(_6c1);
var _6c6=s.getStyle(_6c1.firstChild,"bottom")||0;
var _6c7=s.getElementDimensions(_6c1);
var _6c8;
_6c2=b.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_6c7.h,originalWidth:_6c7.w},restoreAfterFinish:true,afterSetupInternal:function(_6c9){
d.makePositioned(_6c9.element);
d.makePositioned(_6c9.element.firstChild);
if(/Opera/.test(navigator.userAgent)){
s.setStyle(_6c9.element,{top:""});
}
_6c8=d.makeClipping(_6c9.element);
s.setStyle(_6c9.element,{height:"0px"});
s.showElement(_6c9.element);
},afterUpdateInternal:function(_6ca){
s.setStyle(_6ca.element.firstChild,{bottom:(_6ca.dims[0]-_6ca.element.clientHeight)+"px"});
},afterFinishInternal:function(_6cb){
d.undoClipping(_6cb.element,_6c8);
if(/MSIE/.test(navigator.userAgent)){
d.undoPositioned(_6cb.element);
d.undoPositioned(_6cb.element.firstChild);
}else{
d.undoPositioned(_6cb.element.firstChild);
d.undoPositioned(_6cb.element);
}
s.setStyle(_6cb.element.firstChild,{bottom:_6c6});
}},_6c2||{});
return new MochiKit.Visual.Scale(_6c1,100,_6c2);
};
MochiKit.Visual.slideUp=function(_6cc,_6cd){
var d=MochiKit.DOM;
var b=MochiKit.Base;
var s=MochiKit.Style;
_6cc=d.getElement(_6cc);
if(!_6cc.firstChild){
throw "MochiKit.Visual.slideUp must be used on a element with a child";
}
d.removeEmptyTextNodes(_6cc);
var _6d1=s.getStyle(_6cc.firstChild,"bottom");
var _6d2;
_6cd=b.update({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(_6d3){
d.makePositioned(_6d3.element);
d.makePositioned(_6d3.element.firstChild);
if(/Opera/.test(navigator.userAgent)){
s.setStyle(_6d3.element,{top:""});
}
_6d2=d.makeClipping(_6d3.element);
s.showElement(_6d3.element);
},afterUpdateInternal:function(_6d4){
s.setStyle(_6d4.element.firstChild,{bottom:(_6d4.dims[0]-_6d4.element.clientHeight)+"px"});
},afterFinishInternal:function(_6d5){
s.hideElement(_6d5.element);
d.undoClipping(_6d5.element,_6d2);
d.undoPositioned(_6d5.element.firstChild);
d.undoPositioned(_6d5.element);
s.setStyle(_6d5.element.firstChild,{bottom:_6d1});
}},_6cd||{});
return new MochiKit.Visual.Scale(_6cc,0,_6cd);
};
MochiKit.Visual.squish=function(_6d6,_6d7){
var d=MochiKit.DOM;
var b=MochiKit.Base;
var _6da;
_6d7=b.update({restoreAfterFinish:true,beforeSetupInternal:function(_6db){
_6da=d.makeClipping(_6db.element);
},afterFinishInternal:function(_6dc){
MochiKit.Style.hideElement(_6dc.element);
d.undoClipping(_6dc.element,_6da);
}},_6d7||{});
return new MochiKit.Visual.Scale(_6d6,/Opera/.test(navigator.userAgent)?1:0,_6d7);
};
MochiKit.Visual.grow=function(_6dd,_6de){
var d=MochiKit.DOM;
var v=MochiKit.Visual;
var s=MochiKit.Style;
_6dd=d.getElement(_6dd);
_6de=MochiKit.Base.update({direction:"center",moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.full,scaleContent:true,scaleFromCenter:false},_6de||{});
var _6e2={top:_6dd.style.top,left:_6dd.style.left,height:_6dd.style.height,width:_6dd.style.width,opacity:s.getStyle(_6dd,"opacity")};
var dims=s.getElementDimensions(_6dd);
var _6e4,_6e5;
var _6e6,_6e7;
switch(_6de.direction){
case "top-left":
_6e4=_6e5=_6e6=_6e7=0;
break;
case "top-right":
_6e4=dims.w;
_6e5=_6e7=0;
_6e6=-dims.w;
break;
case "bottom-left":
_6e4=_6e6=0;
_6e5=dims.h;
_6e7=-dims.h;
break;
case "bottom-right":
_6e4=dims.w;
_6e5=dims.h;
_6e6=-dims.w;
_6e7=-dims.h;
break;
case "center":
_6e4=dims.w/2;
_6e5=dims.h/2;
_6e6=-dims.w/2;
_6e7=-dims.h/2;
break;
}
var _6e8=MochiKit.Base.update({beforeSetupInternal:function(_6e9){
s.setStyle(_6e9.effects[0].element,{height:"0px"});
s.showElement(_6e9.effects[0].element);
},afterFinishInternal:function(_6ea){
d.undoClipping(_6ea.effects[0].element);
d.undoPositioned(_6ea.effects[0].element);
s.setStyle(_6ea.effects[0].element,_6e2);
}},_6de||{});
return new v.Move(_6dd,{x:_6e4,y:_6e5,duration:0.01,beforeSetupInternal:function(_6eb){
s.hideElement(_6eb.element);
d.makeClipping(_6eb.element);
d.makePositioned(_6eb.element);
},afterFinishInternal:function(_6ec){
new v.Parallel([new v.Opacity(_6ec.element,{sync:true,to:1,from:0,transition:_6de.opacityTransition}),new v.Move(_6ec.element,{x:_6e6,y:_6e7,sync:true,transition:_6de.moveTransition}),new v.Scale(_6ec.element,100,{scaleMode:{originalHeight:dims.h,originalWidth:dims.w},sync:true,scaleFrom:/Opera/.test(navigator.userAgent)?1:0,transition:_6de.scaleTransition,scaleContent:_6de.scaleContent,scaleFromCenter:_6de.scaleFromCenter,restoreAfterFinish:true})],_6e8);
}});
};
MochiKit.Visual.shrink=function(_6ed,_6ee){
var d=MochiKit.DOM;
var v=MochiKit.Visual;
var s=MochiKit.Style;
_6ed=d.getElement(_6ed);
_6ee=MochiKit.Base.update({direction:"center",moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.none,scaleContent:true,scaleFromCenter:false},_6ee||{});
var _6f2={top:_6ed.style.top,left:_6ed.style.left,height:_6ed.style.height,width:_6ed.style.width,opacity:s.getStyle(_6ed,"opacity")};
var dims=s.getElementDimensions(_6ed);
var _6f4,_6f5;
switch(_6ee.direction){
case "top-left":
_6f4=_6f5=0;
break;
case "top-right":
_6f4=dims.w;
_6f5=0;
break;
case "bottom-left":
_6f4=0;
_6f5=dims.h;
break;
case "bottom-right":
_6f4=dims.w;
_6f5=dims.h;
break;
case "center":
_6f4=dims.w/2;
_6f5=dims.h/2;
break;
}
var _6f6;
var _6f7=MochiKit.Base.update({beforeStartInternal:function(_6f8){
_6f6=d.makePositioned(_6f8.effects[0].element);
d.makeClipping(_6f8.effects[0].element);
},afterFinishInternal:function(_6f9){
s.hideElement(_6f9.effects[0].element);
d.undoClipping(_6f9.effects[0].element,_6f6);
d.undoPositioned(_6f9.effects[0].element);
s.setStyle(_6f9.effects[0].element,_6f2);
}},_6ee||{});
return new v.Parallel([new v.Opacity(_6ed,{sync:true,to:0,from:1,transition:_6ee.opacityTransition}),new v.Scale(_6ed,/Opera/.test(navigator.userAgent)?1:0,{sync:true,transition:_6ee.scaleTransition,scaleContent:_6ee.scaleContent,scaleFromCenter:_6ee.scaleFromCenter,restoreAfterFinish:true}),new v.Move(_6ed,{x:_6f4,y:_6f5,sync:true,transition:_6ee.moveTransition})],_6f7);
};
MochiKit.Visual.pulsate=function(_6fa,_6fb){
var d=MochiKit.DOM;
var v=MochiKit.Visual;
var b=MochiKit.Base;
var _6ff=MochiKit.Style.getStyle(_6fa,"opacity");
_6fb=b.update({duration:3,from:0,afterFinishInternal:function(_700){
MochiKit.Style.setStyle(_700.element,{"opacity":_6ff});
}},_6fb||{});
var _701=_6fb.transition||v.Transitions.sinoidal;
var _702=b.bind(function(pos){
return _701(1-v.Transitions.pulse(pos,_6fb.pulses));
},_701);
b.bind(_702,_701);
return new v.Opacity(_6fa,b.update({transition:_702},_6fb));
};
MochiKit.Visual.fold=function(_704,_705){
var d=MochiKit.DOM;
var v=MochiKit.Visual;
var s=MochiKit.Style;
_704=d.getElement(_704);
var _709={top:_704.style.top,left:_704.style.left,width:_704.style.width,height:_704.style.height};
var _70a=d.makeClipping(_704);
_705=MochiKit.Base.update({scaleContent:false,scaleX:false,afterFinishInternal:function(_70b){
new v.Scale(_704,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(_70c){
s.hideElement(_70c.element);
d.undoClipping(_70c.element,_70a);
s.setStyle(_70c.element,_709);
}});
}},_705||{});
return new v.Scale(_704,5,_705);
};
MochiKit.Visual.Color=MochiKit.Color.Color;
MochiKit.Visual.getElementsComputedStyle=MochiKit.DOM.computedStyle;
MochiKit.Visual.__new__=function(){
var m=MochiKit.Base;
m.nameFunctions(this);
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
};
MochiKit.Visual.EXPORT=["roundElement","roundClass","tagifyText","multiple","toggle","Parallel","Opacity","Move","Scale","Highlight","ScrollTo","Morph","fade","appear","puff","blindUp","blindDown","switchOff","dropOut","shake","slideDown","slideUp","squish","grow","shrink","pulsate","fold"];
MochiKit.Visual.EXPORT_OK=["Base","PAIRS"];
MochiKit.Visual.__new__();
MochiKit.Base._exportSymbols(this,MochiKit.Visual);
if(typeof (MochiKit)=="undefined"){
MochiKit={};
}
if(typeof (MochiKit.MochiKit)=="undefined"){
MochiKit.MochiKit={};
}
MochiKit.MochiKit.NAME="MochiKit.MochiKit";
MochiKit.MochiKit.VERSION="1.4";
MochiKit.MochiKit.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.MochiKit.toString=function(){
return this.__repr__();
};
MochiKit.MochiKit.SUBMODULES=["Base","Iter","Logging","DateTime","Format","Async","DOM","Selector","Style","LoggingPane","Color","Signal","Position","Visual"];
if(typeof (JSAN)!="undefined"||typeof (dojo)!="undefined"){
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.MochiKit");
dojo.require("MochiKit.*");
}
if(typeof (JSAN)!="undefined"){
(function(lst){
for(var i=0;i&lt;lst.length;i++){
JSAN.use("MochiKit."+lst[i],[]);
}
})(MochiKit.MochiKit.SUBMODULES);
}
(function(){
var _710=MochiKit.Base.extend;
var self=MochiKit.MochiKit;
var _712=self.SUBMODULES;
var _713=[];
var _714=[];
var _715={};
var i,k,m,all;
for(i=0;i&lt;_712.length;i++){
m=MochiKit[_712[i]];
_710(_713,m.EXPORT);
_710(_714,m.EXPORT_OK);
for(k in m.EXPORT_TAGS){
_715[k]=_710(_715[k],m.EXPORT_TAGS[k]);
}
all=m.EXPORT_TAGS[":all"];
if(!all){
all=_710(null,m.EXPORT,m.EXPORT_OK);
}
var j;
for(j=0;j&lt;all.length;j++){
k=all[j];
self[k]=m[k];
}
}
self.EXPORT=_713;
self.EXPORT_OK=_714;
self.EXPORT_TAGS=_715;
}());
}else{
if(typeof (MochiKit.__compat__)=="undefined"){
MochiKit.__compat__=true;
}
(function(){
if(typeof (document)=="undefined"){
return;
}
var _71b=document.getElementsByTagName("script");
var _71c="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
var base=null;
var _71e=null;
var _71f={};
var i;
for(i=0;i&lt;_71b.length;i++){
var src=_71b[i].getAttribute("src");
if(!src){
continue;
}
_71f[src]=true;
if(src.match(/MochiKit.js$/)){
base=src.substring(0,src.lastIndexOf("MochiKit.js"));
_71e=_71b[i];
}
}
if(base===null){
return;
}
var _722=MochiKit.MochiKit.SUBMODULES;
for(var i=0;i&lt;_722.length;i++){
if(MochiKit[_722[i]]){
continue;
}
var uri=base+_722[i]+".js";
if(uri in _71f){
continue;
}
if(document.documentElement&amp;&amp;document.documentElement.namespaceURI==_71c){
var s=document.createElementNS(_71c,"script");
s.setAttribute("id","MochiKit_"+base+_722[i]);
s.setAttribute("src",uri);
s.setAttribute("type","application/x-javascript");
_71e.parentNode.appendChild(s);
}else{
document.write("&amp;lt;script src=\""+uri+"\" type=\"text/javascript\"&amp;gt;&amp;lt;/script&amp;gt;");
}
}
})();
}
&lt;/script&gt;
&lt;script&gt;
function slide(elementId){
            var element = document.getElementById(elementId);
            if (element){
                if (element.slideDown){
                    MochiKit.Visual.slideDown(element);
                    element.slideDown = false;
                }
                else{
                    MochiKit.Visual.slideUp(element);
                    element.slideDown = true;
                }
            }
        }
&lt;/script&gt;
Many of us often have a deal with implementing base functions for JavaScript. At Java we have JDK with a lot of helpfull classes. But at the case of JavaScript developers often have to invent a wheel.&lt;br/&gt;
But I found a great framework - &lt;a href="http://www.mochikit.com/"&gt;MochiKit&lt;/a&gt;. It is a set of util classes. I will not tell about all thier capabilities, only which I have used.&lt;br/&gt;&lt;br/&gt;

1. DIV slide up and slide down.

&lt;div id="slideId"&gt;
    &lt;img src="http://lh6.ggpht.com/Serg.Vinogradov/SPS--dRU5tI/AAAAAAAAAqU/rrH-vK5rY9Y/s144/siski.jpg"/&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;input type="button" onclick="slide('slideId')" value="Hide/Show"/&gt;
&lt;/div&gt;
There is the function:&lt;br/&gt;
&lt;pre&gt;&lt;code&gt;
function slide(elementId){
  var element = document.getElementById(elementId);
  if (element){
    if (element.slideDown){
      MochiKit.Visual.slideDown(element);
      element.slideDown = false;
    }else{
      MochiKit.Visual.slideUp(element);
      element.slideDown = true;
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1205077887140158201-4553747824105878950?l=rightdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rightdev.blogspot.com/feeds/4553747824105878950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1205077887140158201&amp;postID=4553747824105878950' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/4553747824105878950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/4553747824105878950'/><link rel='alternate' type='text/html' href='http://rightdev.blogspot.com/2007/08/mochikit-powerfull-javascript-framework.html' title='MochiKit - powerfull JavaScript framework'/><author><name>Frog007</name><uri>http://www.blogger.com/profile/08565079497668665230</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/Serg.Vinogradov/SPS--dRU5tI/AAAAAAAAAqU/rrH-vK5rY9Y/s72-c/siski.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1205077887140158201.post-284887196218996514</id><published>2007-08-22T08:28:00.000-07:00</published><updated>2007-08-22T13:35:08.982-07:00</updated><title type='text'>Tomcat, JAAS and config file</title><content type='html'>As you know Tomcat &lt;a href="http://tomcat.apache.org/tomcat-5.5-doc/realm-howto.html#JAASRealm"&gt;is able&lt;/a&gt; to use JAAS Login Module for &lt;a href="http://tomcat.apache.org/tomcat-5.5-doc/realm-howto.html"&gt;Realm&lt;/a&gt; authentication. But if you use standard implementation you should start Tomcat with parameter &lt;span style="font-style:italic;"&gt;-Djava.security.auth.login.config==$CATALINA_HOME/conf/jaas.config&lt;/span&gt;, where &lt;span style="font-style:italic;"&gt;jaas.config&lt;/span&gt; is your JAAS configuration file. &lt;br/&gt;&lt;br/&gt;
So I extended &lt;span style="font-style:italic;"&gt;JAASRealm&lt;/span&gt; with &lt;span style="font-style:italic;"&gt;jaasConfigFile&lt;/span&gt; attribute.
&lt;code&gt;&lt;pre&gt;
package my.realm;

import org.apache.catalina.realm.JAASRealm;

/**
 * This is customization of JAASRealm, created for taking ability of setting JAAS Config File via realm properties.
 * @author Sergey Vinogradov
 */
public class GDJaasRealm extends JAASRealm {
    private String jaasConfigFile;

    public void init() {
        System.setProperty("java.security.auth.login.config", jaasConfigFile);
        super.init();

    }

    public String getJaasConfigFile() {
        return jaasConfigFile;
    }

    public void setJaasConfigFile(String jaasConfigFile) {
        this.jaasConfigFile = jaasConfigFile;
    }
}
&lt;/pre&gt;&lt;/code&gt;
&lt;br/&gt;
Thus you may declare this Realm at server.xml instead of &lt;span style="font-style:italic;"&gt;org.apache.catalina.realm.JAASRealm&lt;/span&gt;&lt;br/&gt;
&lt;code&gt;&lt;pre&gt;
&amp;lt;Realm className="my.realm.GDJaasRealm"                 
          userClassNames="my.ldap.UserPrincipal"
          roleClassNames="my.ldap.RolePrincipal"       
          appName="my_app"
          jaasConfigFile="D:\ldap-jaas.conf"/&amp;gt;
&lt;/pre&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1205077887140158201-284887196218996514?l=rightdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rightdev.blogspot.com/feeds/284887196218996514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1205077887140158201&amp;postID=284887196218996514' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/284887196218996514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/284887196218996514'/><link rel='alternate' type='text/html' href='http://rightdev.blogspot.com/2007/08/tomcat-jaas-and-config-file.html' title='Tomcat, JAAS and config file'/><author><name>Frog007</name><uri>http://www.blogger.com/profile/08565079497668665230</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1205077887140158201.post-4166462886700046309</id><published>2007-08-06T07:45:00.000-07:00</published><updated>2007-08-06T08:43:55.499-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Creating edit field for numbers</title><content type='html'>&lt;script type="text/javascript"&gt;
function numberFieldListener(obj){
    var acceptableSymbols = "0123456789";
    var result = "";
    for (var i=0; i &lt; obj.value.length; i++) {
        var currentSymbol = obj.value.charAt(i);
        if (acceptableSymbols .indexOf(currentSymbol,0) != -1)
            result += currentSymbol;
    }
    obj.value = result;
}
&lt;/script&gt;
During working on &lt;a href="http://www.iRuler.net"&gt;iRuler.net&lt;/a&gt; I had need an HTML input element for numbers only. I haven't found any xHTML solution, so I have appealed to JavaScript. There is the JavaScript solution for limiting possible symbols:&lt;br/&gt;
&lt;pre&gt;
&lt;code&gt;
function numberFieldListener(obj){
    var numb = "0123456789";
    var w = "";
    for (var i=0; i &lt; obj.value.length; i++) {
        var x = obj.value.charAt(i);
        if (numb.indexOf(x,0) != -1)
            w += x;
    }
    obj.value = w;
}

&amp;lt;input type="text" onkeyup="numberFieldListener(this)" id="myField"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
Thus we have following control:&lt;input type="text" onkeyup="numberFieldListener(this)" id="diagonalField" style="width:70px;"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1205077887140158201-4166462886700046309?l=rightdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rightdev.blogspot.com/feeds/4166462886700046309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1205077887140158201&amp;postID=4166462886700046309' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/4166462886700046309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/4166462886700046309'/><link rel='alternate' type='text/html' href='http://rightdev.blogspot.com/2007/08/creating-edit-field-for-numbers.html' title='Creating edit field for numbers'/><author><name>Frog007</name><uri>http://www.blogger.com/profile/08565079497668665230</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1205077887140158201.post-6187478224661917139</id><published>2007-08-01T07:23:00.000-07:00</published><updated>2007-08-06T08:43:07.823-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='DWR'/><title type='text'>"Hello, world!" with DWR tool</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/DWR_%28Java%29"&gt;DWR&lt;/a&gt; is tool for enabling RMI on web-server from JavaScript at the client.&lt;br/&gt;&lt;br/&gt;

What need you do to create first DWR application.&lt;br/&gt;&lt;br/&gt;

1) &lt;a href="http://getahead.org/dwr/download"&gt;Download&lt;/a&gt; DWR library.&lt;br/&gt;
2) Add description to web.xml&lt;br/&gt;&lt;br/&gt;
&lt;code&gt;
&amp;lt;servlet&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;servlet-name&amp;gt;dwr-invoker&amp;lt;/servlet-name&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;servlet-class&amp;gt;org.directwebremoting.servlet.DwrServlet&amp;lt;/servlet-class&amp;gt;&lt;br/&gt;
&amp;lt;/servlet&amp;gt;&lt;br/&gt;
&amp;lt;servlet-mapping&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;servlet-name&amp;gt;dwr-invoker&amp;lt;/servlet-name&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/dwr/*&amp;lt;/url-pattern&amp;gt;&lt;br/&gt;
&amp;lt;/servlet-mapping&amp;gt;&lt;br/&gt;
&lt;br/&gt;
&lt;/code&gt;
3) Create a class for remote invocation. Let it be following...
&lt;br/&gt;&lt;code&gt;
package my;&lt;br/&gt;
import ...&lt;br/&gt;
public class Server {&lt;br/&gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private int count = 0;&lt;br/&gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public int getCount() {return count;}&lt;br/&gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void increase() {count++}&lt;br/&gt;
}&lt;br/&gt;&lt;br/&gt;&lt;/code&gt;
4) Create dwr.xml description at WEB-INF.&lt;br/&gt;
&lt;code&gt;
&amp;lt;!DOCTYPE dwr PUBLIC&lt;br/&gt;
    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"&lt;br/&gt;
    "http://www.getahead.ltd.uk/dwr/dwr10.dtd"&amp;gt;&lt;br/&gt;&lt;br/&gt;

&amp;lt;dwr&amp;gt;&lt;br/&gt;
  &amp;lt;allow&amp;gt;&lt;br/&gt;
    &amp;lt;create creator="new" javascript="server"&amp;gt;&lt;br/&gt;
      &amp;lt;param name="class" value="my.Server"/&amp;gt;&lt;br/&gt;
    &amp;lt;/create&amp;gt;&lt;br/&gt;
  &amp;lt;/allow&amp;gt;&lt;br/&gt;
&amp;lt;/dwr&amp;gt;&lt;br/&gt;&lt;br/&gt;
&lt;/code&gt;
This means, if your-web-app/dwr/client.js is requested, DWR will create an instance of my.Server class and a JavaScript stub for it. You may see how this stub looks by link your-wed-app/dwr/interface/server&lt;br/&gt;&lt;br/&gt;
&lt;code&gt;
// Provide a default path to dwr.engine&lt;br/&gt;
if (dwr == null) var dwr = {};&lt;br/&gt;
if (dwr.engine == null) dwr.engine = {};&lt;br/&gt;
if (DWREngine == null) var DWREngine = dwr.engine;&lt;br/&gt;&lt;br/&gt;

if (server == null) var server = {};&lt;br/&gt;
server._path = '/jmxWebApp/dwr';&lt;br/&gt;
server.getCount = function(callback) {&lt;br/&gt;
  dwr.engine._execute(client._path, 'client', 'invoke', callback);&lt;br/&gt;
}&lt;br/&gt;
server.increase = function(callback) {&lt;br/&gt;
  dwr.engine._execute(client._path, 'client', 'setAttribute', callback);&lt;br/&gt;
}&lt;br/&gt;&lt;br/&gt;
&lt;/code&gt;

5) Create page using Server invocaion.&lt;br/&gt;
&lt;code&gt;&lt;pre&gt;&lt;strong&gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;DWR_JMX test&amp;lt;/title&amp;gt;
    &amp;lt;script type="text/javascript" src='dwr/engine.js'&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script type="text/javascript" src='dwr/util.js'&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script type="text/javascript" src='dwr/server.js'&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt
&amp;lt;body&amp;gt;
    &amp;lt;script type="text/javascript"&amp;gt;
        server.getCount(new Function("data", "alert(data);"));
        server.increase(new Function(alert("Value increased"));
        server.getCount(new Function("data", "alert(data);"));
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/strong&gt;&lt;/pre&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1205077887140158201-6187478224661917139?l=rightdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rightdev.blogspot.com/feeds/6187478224661917139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1205077887140158201&amp;postID=6187478224661917139' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/6187478224661917139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/6187478224661917139'/><link rel='alternate' type='text/html' href='http://rightdev.blogspot.com/2007/08/hello-world-with-dwr-tool.html' title='&quot;Hello, world!&quot; with DWR tool'/><author><name>Frog007</name><uri>http://www.blogger.com/profile/08565079497668665230</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1205077887140158201.post-8288491164692136650</id><published>2007-07-31T04:25:00.000-07:00</published><updated>2007-12-20T06:34:13.262-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>"Hello, world" with Spring MVC</title><content type='html'>Recently I've started using of Srping MVC for my web apps.
&lt;span&gt;&lt;servlet-mapping&gt;&lt;beans&gt;&lt;span span=""&gt;&lt;servlet-mapping&gt;&lt;bean id="dispatchController" class="my.SimpleController"&gt;&lt;/span&gt;&lt;span&gt;&lt;servlet-mapping&gt;
So what you need to get started with spring MVC:&lt;br/&gt;&lt;br/&gt;

1) &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=73357&amp;package_id=173644&amp;amp;release_id=512513"&gt;Download&lt;/a&gt; Spring framework and put spring.jar to web server lib path.&lt;br/&gt;
2) Add DispathServlet mapping to web.xml&lt;br/&gt;
&lt;code&gt;
&amp;lt;servlet&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;servlet-name&amp;gt;&amp;lt;strong&gt;spring&amp;lt;/strong&gt;&amp;lt;/servlet-name&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br/&gt;
              &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br/&gt;
&amp;lt;/servlet&amp;gt;&lt;br/&gt;
&amp;lt;servlet-mapping&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;servlet-name&amp;gt;spring&amp;lt;/servlet-name&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/index.jsp&amp;lt;/url-pattern&amp;gt;&lt;br/&gt;
&amp;lt;/servlet-mapping&amp;gt;&lt;br/&gt;
&lt;/code&gt;
&lt;br/&gt;&lt;br/&gt;
3) We have called servler instance as &lt;strong&gt;spring&lt;/strong&gt;, so we should create a &lt;strong&gt;spring&lt;/strong&gt;-servlet.xml at WEB-INF.&lt;br/&gt;
&lt;pre&gt;&lt;code&gt;
&amp;lt;xml&amp;gt;
&amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;
&amp;lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&amp;gt;

&amp;lt;beans&amp;gt;

      &amp;lt;bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"&amp;gt;
              &amp;lt;property name="mappings"&amp;gt;
                     &amp;lt;props&amp;gt;
                             &amp;lt;prop key="/*.jsp"&amp;gt;dispatchController&amp;lt;/prop&amp;gt;
                     &amp;lt;/props&amp;gt;
             &amp;lt;/property&amp;gt;
     &amp;lt;/bean&amp;gt;

    &amp;lt;bean id="dispatchController" class="my.SimpleController"&amp;gt;

      &amp;lt;bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&amp;gt;
              &amp;lt;property name="prefix"&amp;gt;
                       &amp;lt;value&amp;gt;/WEB-INF/jsp/&amp;lt;/value&amp;gt;
             &amp;lt;/property&amp;gt;
             &amp;lt;property name="suffix"&amp;gt;
                      &amp;lt;value&amp;gt;.jsp&amp;lt;/value&amp;gt;
             &amp;lt;/property&amp;gt;
     &amp;lt;/bean&amp;gt;

&amp;lt;/beans&amp;gt;
&amp;lt;/xml&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;br/&gt;
We described 3 beans here.&lt;br/&gt;
&lt;strong&gt;urlMaping&lt;/strong&gt; - is a mapping bean. It should not be registered manually. Spring will automatically parse it during initialization.&lt;br/&gt;
&lt;strong&gt;dispatchController&lt;/strong&gt; - is a bean, which will be dispath all requests of *.jsp pages. We write class="my.SimpleController", so we need to create class SimpleController later.&lt;br/&gt;
&lt;strong&gt;viewResolver&lt;/strong&gt; - is a bean? which will add prefix and suffix to views for creating valid request.
&lt;br/&gt;&lt;br/&gt;
4) Create class my.SimpleController&lt;br/&gt;
&lt;code&gt;
package my;
&lt;br/&gt;&lt;br/&gt;
import org.springframework.web.servlet.mvc.Controller;&lt;br/&gt;
import org.springframework.web.servlet.ModelAndView;&lt;br/&gt;
import javax.servlet.http.HttpServletRequest;&lt;br/&gt;
import javax.servlet.http.HttpServletResponse;&lt;br/&gt;
&lt;br/&gt;
public class SimpleController implements Controller {&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ModelAndView mav = new ModelAndView("index");&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return mav;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;
}&lt;br/&gt;
&lt;/code&gt;&lt;br/&gt;
This class will dispath all requests to the "index" view. Then "index" view will be changed to "/WEB-INF/jsp/index.jsp" by &lt;strong&gt;viewResolver&lt;/strong&gt; bean.
&lt;br/&gt;&lt;br/&gt;
5) Create "/WEB-INF/jsp/index.jsp".&lt;br/&gt;
&lt;code&gt;&lt;strong&gt;
&amp;lt;html&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    "Hello, world!" with Spring MVC.&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br/&gt;
&amp;lt;/html&amp;gt;&lt;br/&gt;
&lt;/strong&gt;&lt;/code&gt;
&lt;br/&gt;&lt;br/&gt;
That's all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1205077887140158201-8288491164692136650?l=rightdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rightdev.blogspot.com/feeds/8288491164692136650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1205077887140158201&amp;postID=8288491164692136650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/8288491164692136650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/8288491164692136650'/><link rel='alternate' type='text/html' href='http://rightdev.blogspot.com/2007/07/hello-world-with-spring-mvc.html' title='&quot;Hello, world&quot; with Spring MVC'/><author><name>Frog007</name><uri>http://www.blogger.com/profile/08565079497668665230</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1205077887140158201.post-9087676256868541314</id><published>2007-07-25T01:27:00.000-07:00</published><updated>2007-08-02T01:45:41.115-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='multithreading'/><title type='text'>Multithreading at JavaScript</title><content type='html'>&lt;div align="justify"&gt;&lt;div align="left"&gt;Recently I've investigated how work multithreading at JavaScript and particulary IE. So, it is safe to say, there is no multithreading at JavaScript. All parts of script are running at the same thread.&lt;br/&gt;Honestly, I expected that function &lt;i&gt;setTimeout(func, timeInMillis) &lt;/i&gt;will run &lt;i&gt;func &lt;/i&gt;at new htread. In effect this function just guaranties that &lt;i&gt;func&lt;/i&gt; will be not runnig earlier than &lt;i&gt;timeInMillis. &lt;/i&gt;Actually  if you call it many times, all &lt;i&gt;func&lt;/i&gt;s will be added to the JavaScript engine queue. There is &lt;strong&gt;only one&lt;/strong&gt; queue for all JavaScript at IE.&lt;br/&gt;&lt;br/&gt;
As for &lt;strong&gt;AJAX&lt;/strong&gt; and particulary letter A, it is really asynchronous. When asynchronous request is posted it handling will run at other thread, but only before response receiving. If response received, callback function will be added to the JavaScript queue. So it will be asynchronous before response handling. Then it became full-synchronous.&lt;br/&gt;&lt;br/&gt;
Moreover all UI movements related to JavaScropt engine also run at the single thread. So if you have a long-running parts of script UI would be freeze. Thus for evading of UI freezing you need avoid a long-running parts of script. For example, this trick may be used for cycle evading:&lt;br/&gt;&lt;br/&gt;
&lt;code&gt;
iter = function() {&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (i == 0) return;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//peace of code&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setTimeout("writeLine();", 10);&lt;br/&gt;
}&lt;br/&gt;&lt;br/&gt;

setTimeout("iter(--i);", 0);&lt;br/&gt;&lt;br/&gt;
&lt;/code&gt;
It is better to have many small parts than one big.
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1205077887140158201-9087676256868541314?l=rightdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rightdev.blogspot.com/feeds/9087676256868541314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1205077887140158201&amp;postID=9087676256868541314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/9087676256868541314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/9087676256868541314'/><link rel='alternate' type='text/html' href='http://rightdev.blogspot.com/2007/07/multithreading-at-javascript.html' title='Multithreading at JavaScript'/><author><name>Frog007</name><uri>http://www.blogger.com/profile/08565079497668665230</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1205077887140158201.post-6457466350905578102</id><published>2007-07-24T07:34:00.001-07:00</published><updated>2007-08-02T01:44:10.747-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='RMI'/><title type='text'>How to start RMIRegistry programmatically</title><content type='html'>I often face with the necessity of programmatical RMI registry starting. So, this is a solving:&lt;br/&gt;&lt;br/&gt;
&lt;code&gt;
try {&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;java.rmi.registry.LocateRegistry.createRegistry(1099);&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("RMI registry ready.");&lt;br/&gt;
} catch (Exception e) {&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Exception starting RMI registry:");&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;br/&gt;
}
&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1205077887140158201-6457466350905578102?l=rightdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rightdev.blogspot.com/feeds/6457466350905578102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1205077887140158201&amp;postID=6457466350905578102' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/6457466350905578102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1205077887140158201/posts/default/6457466350905578102'/><link rel='alternate' type='text/html' href='http://rightdev.blogspot.com/2007/07/how-to-start-rmiregistry.html' title='How to start RMIRegistry programmatically'/><author><name>Frog007</name><uri>http://www.blogger.com/profile/08565079497668665230</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
