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<lst.length;i++){JSAN.use("MochiKit."+lst[i],[]);}})(MochiKit.MochiKit.SUBMODULES);}
(function(){var extend=MochiKit.Base.extend;var self=MochiKit.MochiKit;var modules=self.SUBMODULES;var EXPORT=[];var EXPORT_OK=[];var EXPORT_TAGS={};var i,k,m,all;for(i=0;i<modules.length;i++){m=MochiKit[modules[i]];extend(EXPORT,m.EXPORT);extend(EXPORT_OK,m.EXPORT_OK);for(k in m.EXPORT_TAGS){EXPORT_TAGS[k]=extend(EXPORT_TAGS[k],m.EXPORT_TAGS[k]);}
all=m.EXPORT_TAGS[":all"];if(!all){all=extend(null,m.EXPORT,m.EXPORT_OK);}
var j;for(j=0;j<all.length;j++){k=all[j];self[k]=m[k];}}
self.EXPORT=EXPORT;self.EXPORT_OK=EXPORT_OK;self.EXPORT_TAGS=EXPORT_TAGS;}());}else{if(typeof(MochiKit.__compat__)=='undefined'){MochiKit.__compat__=true;}
(function(){if(typeof(document)=="undefined"){return;}
var scripts=document.getElementsByTagName("script");var kXULNSURI="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";var base=null;var baseElem=null;var allScripts={};var i;for(i=0;i<scripts.length;i++){var src=scripts[i].getAttribute("src");if(!src){continue;}
allScripts[src]=true;if(src.match(/MochiKit.js$/)){base=src.substring(0,src.lastIndexOf('MochiKit.js'));baseElem=scripts[i];}}
if(base===null){return;}
var modules=MochiKit.MochiKit.SUBMODULES;for(var i=0;i<modules.length;i++){if(MochiKit[modules[i]]){continue;}
var uri=base+modules[i]+'.js';if(uri in allScripts){continue;}
if(document.documentElement&&document.documentElement.namespaceURI==kXULNSURI){var s=document.createElementNS(kXULNSURI,'script');s.setAttribute("id","MochiKit_"+base+modules[i]);s.setAttribute("src",uri);s.setAttribute("type","application/x-javascript");baseElem.parentNode.appendChild(s);}else{document.write('<script src="'+uri+'" type="text/javascript"></script>');}};})();}

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'&&typeof(dojo)=='undefined'));}
MochiKit.Base.VERSION="1.4";MochiKit.Base.NAME="MochiKit.Base";MochiKit.Base.update=function(self,obj){if(self===null||self===undefined){self={};}
for(var i=1;i<arguments.length;i++){var o=arguments[i];if(typeof(o)!='undefined'&&o!==null){for(var k in o){self[k]=o[k];}}}
return self;};MochiKit.Base.update(MochiKit.Base,{__repr__:function(){return"["+this.NAME+" "+this.VERSION+"]";},toString:function(){return this.__repr__();},camelize:function(selector){var arr=selector.split('-');var cc=arr[0];for(var i=1;i<arr.length;i++){cc+=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);}
return cc;},counter:function(n){if(arguments.length===0){n=1;}
return function(){return n++;};},clone:function(obj){var me=arguments.callee;if(arguments.length==1){me.prototype=obj;return new me();}},_flattenArray:function(res,lst){for(var i=0;i<lst.length;i++){var o=lst[i];if(o instanceof Array){arguments.callee(res,o);}else{res.push(o);}}
return res;},flattenArray:function(lst){return MochiKit.Base._flattenArray([],lst);},flattenArguments:function(lst){var res=[];var m=MochiKit.Base;var args=m.extend(null,arguments);while(args.length){var o=args.shift();if(o&&typeof(o)=="object"&&typeof(o.length)=="number"){for(var i=o.length-1;i>=0;i--){args.unshift(o[i]);}}else{res.push(o);}}
return res;},extend:function(self,obj,skip){if(!skip){skip=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(!self){self=[];}
for(var i=skip;i<l;i++){self.push(obj[i]);}}
return self;},updatetree:function(self,obj){if(self===null||self===undefined){self={};}
for(var i=1;i<arguments.length;i++){var o=arguments[i];if(typeof(o)!='undefined'&&o!==null){for(var k in o){var v=o[k];if(typeof(self[k])=='object'&&typeof(v)=='object'){arguments.callee(self[k],v);}else{self[k]=v;}}}}
return self;},setdefault:function(self,obj){if(self===null||self===undefined){self={};}
for(var i=1;i<arguments.length;i++){var o=arguments[i];for(var k in o){if(!(k in self)){self[k]=o[k];}}}
return self;},keys:function(obj){var rval=[];for(var prop in obj){rval.push(prop);}
return rval;},values:function(obj){var rval=[];for(var prop in obj){rval.push(obj[prop]);}
return rval;},items:function(obj){var rval=[];var e;for(var prop in obj){var v;try{v=obj[prop];}catch(e){continue;}
rval.push([prop,v]);}
return rval;},_newNamedError:function(module,name,func){func.prototype=new MochiKit.Base.NamedError(module.NAME+"."+name);module[name]=func;},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&b;},or:function(a,b){return a|b;},xor:function(a,b){return a^b;},lshift:function(a,b){return a<<b;},rshift:function(a,b){return a>>b;},zrshift:function(a,b){return a>>>b;},eq:function(a,b){return a==b;},ne:function(a,b){return a!=b;},gt:function(a,b){return a>b;},ge:function(a,b){return a>=b;},lt:function(a,b){return a<b;},le:function(a,b){return a<=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&&b;},logor:function(a,b){return a||b;},contains:function(a,b){return b in a;}},forwardCall:function(func){return function(){return this[func].apply(this,arguments);};},itemgetter:function(func){return function(arg){return arg[func];};},typeMatcher:function(){var types={};for(var i=0;i<arguments.length;i++){var typ=arguments[i];types[typ]=typ;}
return function(){for(var i=0;i<arguments.length;i++){if(!(typeof(arguments[i])in types)){return false;}}
return true;};},isNull:function(){for(var i=0;i<arguments.length;i++){if(arguments[i]!==null){return false;}}
return true;},isUndefinedOrNull:function(){for(var i=0;i<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<arguments.length;i++){var o=arguments[i];if(!(o&&o.length)){return false;}}
return true;},isArrayLike:function(){for(var i=0;i<arguments.length;i++){var o=arguments[i];var typ=typeof(o);if((typ!='object'&&!(typ=='function'&&typeof(o.item)=='function'))||o===null||typeof(o.length)!='number'||o.nodeType===3){return false;}}
return true;},isDateLike:function(){for(var i=0;i<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 rval=[];for(var i=1;i<arguments.length;i++){rval.push(fn(arguments[i]));}
return rval;},map:function(fn,lst){var m=MochiKit.Base;var itr=MochiKit.Iter;var isArrayLike=m.isArrayLike;if(arguments.length<=2){if(!isArrayLike(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 rval=[];for(var i=0;i<lst.length;i++){rval.push(fn(lst[i]));}
return rval;}else{if(fn===null){fn=Array;}
var length=null;for(i=1;i<arguments.length;i++){if(!isArrayLike(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(length===null||length>l){length=l;}}
rval=[];for(i=0;i<length;i++){var args=[];for(var j=1;j<arguments.length;j++){args.push(arguments[j][i]);}
rval.push(fn.apply(this,args));}
return rval;}},xfilter:function(fn){var rval=[];if(fn===null){fn=MochiKit.Base.operator.truth;}
for(var i=1;i<arguments.length;i++){var o=arguments[i];if(fn(o)){rval.push(o);}}
return rval;},filter:function(fn,lst,self){var rval=[];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,self);}else if(typeof(self)=='undefined'||self===null){for(var i=0;i<lst.length;i++){var o=lst[i];if(fn(o)){rval.push(o);}}}else{for(i=0;i<lst.length;i++){o=lst[i];if(fn.call(self,o)){rval.push(o);}}}
return rval;},_wrapDumbFunction:function(func){return function(){switch(arguments.length){case 0:return func();case 1:return func(arguments[0]);case 2:return func(arguments[0],arguments[1]);case 3:return func(arguments[0],arguments[1],arguments[2]);}
var args=[];for(var i=0;i<arguments.length;i++){args.push("arguments["+i+"]");}
return eval("(func("+args.join(",")+"))");};},methodcaller:function(func){var args=MochiKit.Base.extend(null,arguments,1);if(typeof(func)=="function"){return function(obj){return func.apply(obj,args);};}else{return function(obj){return obj[func].apply(obj,args);};}},method:function(self,func){var m=MochiKit.Base;return m.bind.apply(this,m.extend([func,self],arguments,2));},compose:function(f1,f2){var fnlist=[];var m=MochiKit.Base;if(arguments.length===0){throw new TypeError("compose() requires at least one argument");}
for(var i=0;i<arguments.length;i++){var fn=arguments[i];if(typeof(fn)!="function"){throw new TypeError(m.repr(fn)+" is not a function");}
fnlist.push(fn);}
return function(){var args=arguments;for(var i=fnlist.length-1;i>=0;i--){args=[fnlist[i].apply(this,args)];}
return args[0];};},bind:function(func,self){if(typeof(func)=="string"){func=self[func];}
var im_func=func.im_func;var im_preargs=func.im_preargs;var im_self=func.im_self;var m=MochiKit.Base;if(typeof(func)=="function"&&typeof(func.apply)=="undefined"){func=m._wrapDumbFunction(func);}
if(typeof(im_func)!='function'){im_func=func;}
if(typeof(self)!='undefined'){im_self=self;}
if(typeof(im_preargs)=='undefined'){im_preargs=[];}else{im_preargs=im_preargs.slice();}
m.extend(im_preargs,arguments,2);var newfunc=function(){var args=arguments;var me=arguments.callee;if(me.im_preargs.length>0){args=m.concat(me.im_preargs,args);}
var self=me.im_self;if(!self){self=this;}
return me.im_func.apply(self,args);};newfunc.im_self=im_self;newfunc.im_func=im_func;newfunc.im_preargs=im_preargs;return newfunc;},bindMethods:function(self){var bind=MochiKit.Base.bind;for(var k in self){var func=self[k];if(typeof(func)=='function'){self[k]=bind(func,self);}}},registerComparator:function(name,check,comparator,override){MochiKit.Base.comparatorRegistry.register(name,check,comparator,override);},_primitives:{'boolean':true,'string':true,'number':true},compare:function(a,b){if(a==b){return 0;}
var aIsNull=(typeof(a)=='undefined'||a===null);var bIsNull=(typeof(b)=='undefined'||b===null);if(aIsNull&&bIsNull){return 0;}else if(aIsNull){return-1;}else if(bIsNull){return 1;}
var m=MochiKit.Base;var prim=m._primitives;if(!(typeof(a)in prim&&typeof(b)in prim)){try{return m.comparatorRegistry.match(a,b);}catch(e){if(e!=m.NotFound){throw e;}}}
if(a<b){return-1;}else if(a>b){return 1;}
var repr=m.repr;throw new TypeError(repr(a)+" and "+repr(b)+" can not be compared");},compareDateLike:function(a,b){return MochiKit.Base.compare(a.getTime(),b.getTime());},compareArrayLike:function(a,b){var compare=MochiKit.Base.compare;var count=a.length;var rval=0;if(count>b.length){rval=1;count=b.length;}else if(count<b.length){rval=-1;}
for(var i=0;i<count;i++){var cmp=compare(a[i],b[i]);if(cmp){return cmp;}}
return rval;},registerRepr:function(name,check,wrap,override){MochiKit.Base.reprRegistry.register(name,check,wrap,override);},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'&&o.repr!=arguments.callee){return o.repr();}
return MochiKit.Base.reprRegistry.match(o);}catch(e){if(typeof(o.NAME)=='string'&&(o.toString==Function.prototype.toString||o.toString==Object.prototype.toString)){return o.NAME;}}
try{var ostring=(o+"");}catch(e){return"["+typeof(o)+"]";}
if(typeof(o)=="function"){ostring=ostring.replace(/^\s+/,"").replace(/\s+/g," ");var idx=ostring.indexOf("{");if(idx!=-1){ostring=ostring.substr(0,idx)+"{...}";}}
return ostring;},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(name,check,wrap,override){MochiKit.Base.jsonRegistry.register(name,check,wrap,override);},evalJSON:function(){return eval("("+MochiKit.Base._filterJSON(arguments[0])+")");},_filterJSON:function(s){var m=s.match(/^\s*\/\*(.*)\*\/\s*$/);if(m){return m[1];}
return s;},serializeJSON:function(o){var objtype=typeof(o);if(objtype=="number"||objtype=="boolean"){return o+"";}else if(o===null){return"null";}
var m=MochiKit.Base;var reprString=m.reprString;if(objtype=="string"){return reprString(o);}
var me=arguments.callee;var newObj;if(typeof(o.__json__)=="function"){newObj=o.__json__();if(o!==newObj){return me(newObj);}}
if(typeof(o.json)=="function"){newObj=o.json();if(o!==newObj){return me(newObj);}}
if(objtype!="function"&&typeof(o.length)=="number"){var res=[];for(var i=0;i<o.length;i++){var val=me(o[i]);if(typeof(val)!="string"){val="undefined";}
res.push(val);}
return"["+res.join(", ")+"]";}
try{newObj=m.jsonRegistry.match(o);if(o!==newObj){return me(newObj);}}catch(e){if(e!=m.NotFound){throw e;}}
if(objtype=="undefined"){throw new TypeError("undefined can not be serialized as JSON");}
if(objtype=="function"){return null;}
res=[];for(var k in o){var useKey;if(typeof(k)=="number"){useKey='"'+k+'"';}else if(typeof(k)=="string"){useKey=reprString(k);}else{continue;}
val=me(o[k]);if(typeof(val)!="string"){continue;}
res.push(useKey+":"+val);}
return"{"+res.join(", ")+"}";},objEqual:function(a,b){return(MochiKit.Base.compare(a,b)===0);},arrayEqual:function(self,arr){if(self.length!=arr.length){return false;}
return(MochiKit.Base.compare(self,arr)===0);},concat:function(){var rval=[];var extend=MochiKit.Base.extend;for(var i=0;i<arguments.length;i++){extend(rval,arguments[i]);}
return rval;},keyComparator:function(key){var m=MochiKit.Base;var compare=m.compare;if(arguments.length==1){return function(a,b){return compare(a[key],b[key]);};}
var compareKeys=m.extend(null,arguments);return function(a,b){var rval=0;for(var i=0;(rval===0)&&(i<compareKeys.length);i++){var key=compareKeys[i];rval=compare(a[key],b[key]);}
return rval;};},reverseKeyComparator:function(key){var comparator=MochiKit.Base.keyComparator.apply(this,arguments);return function(a,b){return comparator(b,a);};},partial:function(func){var m=MochiKit.Base;return m.bind.apply(this,m.extend([func,undefined],arguments,1));},listMinMax:function(which,lst){if(lst.length===0){return null;}
var cur=lst[0];var compare=MochiKit.Base.compare;for(var i=1;i<lst.length;i++){var o=lst[i];if(compare(o,cur)==which){cur=o;}}
return cur;},objMax:function(){return MochiKit.Base.listMinMax(1,arguments);},objMin:function(){return MochiKit.Base.listMinMax(-1,arguments);},findIdentical:function(lst,value,start,end){if(typeof(end)=="undefined"||end===null){end=lst.length;}
if(typeof(start)=="undefined"||start===null){start=0;}
for(var i=start;i<end;i++){if(lst[i]===value){return i;}}
return-1;},mean:function(){var sum=0;var m=MochiKit.Base;var args=m.extend(null,arguments);var count=args.length;while(args.length){var o=args.shift();if(o&&typeof(o)=="object"&&typeof(o.length)=="number"){count+=o.length-1;for(var i=o.length-1;i>=0;i--){sum+=o[i];}}else{sum+=o;}}
if(count<=0){throw new TypeError('mean() requires at least one argument');}
return sum/count;},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 upper=data.length/2;return(data[upper]+data[upper-1])/2;}else{return data[(data.length-1)/2];}},findValue:function(lst,value,start,end){if(typeof(end)=="undefined"||end===null){end=lst.length;}
if(typeof(start)=="undefined"||start===null){start=0;}
var cmp=MochiKit.Base.compare;for(var i=start;i<end;i++){if(cmp(lst[i],value)===0){return i;}}
return-1;},nodeWalk:function(node,visitor){var nodes=[node];var extend=MochiKit.Base.extend;while(nodes.length){var res=visitor(nodes.shift());if(res){extend(nodes,res);}}},nameFunctions:function(namespace){var base=namespace.NAME;if(typeof(base)=='undefined'){base='';}else{base=base+'.';}
for(var name in namespace){var o=namespace[name];if(typeof(o)=='function'&&typeof(o.NAME)=='undefined'){try{o.NAME=base+name;}catch(e){}}}},queryString:function(names,values){if(typeof(MochiKit.DOM)!="undefined"&&arguments.length==1&&(typeof(names)=="string"||(typeof(names.nodeType)!="undefined"&&names.nodeType>0))){var kv=MochiKit.DOM.formContents(names);names=kv[0];values=kv[1];}else if(arguments.length==1){if(typeof(names.length)=="number"&&names.length==2){return arguments.callee(names[0],names[1]);}
var o=names;names=[];values=[];for(var k in o){var v=o[k];if(typeof(v)=="function"){continue;}else if(MochiKit.Base.isArrayLike(v)){for(var i=0;i<v.length;i++){names.push(k);values.push(v[i]);}}else{names.push(k);values.push(v);}}}
var rval=[];var len=Math.min(names.length,values.length);var urlEncode=MochiKit.Base.urlEncode;for(var i=0;i<len;i++){v=values[i];if(typeof(v)!='undefined'&&v!==null){rval.push(urlEncode(names[i])+"="+urlEncode(v));}}
return rval.join("&");},parseQueryString:function(encodedString,useArrays){var qstr=(encodedString.charAt(0)=="?")?encodedString.substring(1):encodedString;var pairs=qstr.replace(/\+/g,"%20").split(/(\&amp\;|\&\#38\;|\&#x26;|\&)/);var o={};var decode;if(typeof(decodeURIComponent)!="undefined"){decode=decodeURIComponent;}else{decode=unescape;}
if(useArrays){for(var i=0;i<pairs.length;i++){var pair=pairs[i].split("=");var name=decode(pair.shift());if(!name){continue;}
var arr=o[name];if(!(arr instanceof Array)){arr=[];o[name]=arr;}
arr.push(decode(pair.join("=")));}}else{for(i=0;i<pairs.length;i++){pair=pairs[i].split("=");var name=pair.shift();if(!name){continue;}
o[decode(name)]=decode(pair.join("="));}}
return o;}});MochiKit.Base.AdapterRegistry=function(){this.pairs=[];};MochiKit.Base.AdapterRegistry.prototype={register:function(name,check,wrap,override){if(override){this.pairs.unshift([name,check,wrap]);}else{this.pairs.push([name,check,wrap]);}},match:function(){for(var i=0;i<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<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(globals,module){if(!MochiKit.__export__){return;}
var all=module.EXPORT_TAGS[":all"];for(var i=0;i<all.length;i++){globals[all[i]]=module[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(unencoded){return encodeURIComponent(unencoded).replace(/\'/g,'%27');};}else{m.urlEncode=function(unencoded){return escape(unencoded).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&&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;mean=MochiKit.Base.mean;median=MochiKit.Base.median;}
MochiKit.Base._exportSymbols(this,MochiKit.Base);

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(canceller){this.chain=[];this.id=this._nextId();this.fired=-1;this.paused=0;this.results=[null,null];this.canceller=canceller;this.silentlyCancelled=false;this.chained=false;};MochiKit.Async.Deferred.prototype={repr:function(){var state;if(this.fired==-1){state='unfired';}else if(this.fired===0){state='success';}else{state='error';}
return'Deferred('+this.id+', '+state+')';},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)&&(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>1){fn=MochiKit.Base.partial.apply(null,arguments);}
return this.addCallbacks(fn,fn);},addCallback:function(fn){if(arguments.length>1){fn=MochiKit.Base.partial.apply(null,arguments);}
return this.addCallbacks(fn,null);},addErrback:function(fn){if(arguments.length>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>=0){this._fire();}
return this;},_fire:function(){var chain=this.chain;var fired=this.fired;var res=this.results[fired];var self=this;var cb=null;while(chain.length>0&&this.paused===0){var pair=chain.shift();var f=pair[fired];if(f===null){continue;}
try{res=f(res);fired=((res instanceof Error)?1:0);if(res instanceof MochiKit.Async.Deferred){cb=function(res){self._resback(res);self.paused--;if((self.paused===0)&&(self.fired>=0)){self._fire();}};this.paused++;}}catch(err){fired=1;if(!(err instanceof Error)){err=new MochiKit.Async.GenericError(err);}
res=err;}}
this.fired=fired;this.results[fired]=res;if(cb&&this.paused){res.addBoth(cb);res.chained=true;}}};MochiKit.Base.update(MochiKit.Async,{evalJSONRequest:function(req){return MochiKit.Base.evalJSON(req.responseText);},succeed:function(result){var d=new MochiKit.Async.Deferred();d.callback.apply(d,arguments);return d;},fail:function(result){var d=new MochiKit.Async.Deferred();d.errback.apply(d,arguments);return d;},getXMLHttpRequest:function(){var self=arguments.callee;if(!self.XMLHttpRequest){var tryThese=[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<tryThese.length;i++){var func=tryThese[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 status=null;try{status=this.status;if(!status&&m.isNotEmpty(this.responseText)){status=304;}}catch(e){}
if(status==200||status==201||status==204||status==304||status==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,sendContent){if(typeof(sendContent)=="undefined"||sendContent===null){sendContent="";}
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(sendContent);}catch(e){try{req.onreadystatechange=null;}catch(ignore){}
d.errback(e);}
return d;},doXHR:function(url,opts){var self=MochiKit.Async;return self.callLater(0,self._doXHR,url,opts);},_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&&opts.mimeType){req.overrideMimeType(opts.mimeType);}
req.setRequestHeader("X-Requested-With","XMLHttpRequest");if(opts.headers){var headers=opts.headers;if(!m.isArrayLike(headers)){headers=m.items(headers);}
for(var i=0;i<headers.length;i++){var header=headers[i];var name=header[0];var value=header[1];req.setRequestHeader(name,value);}}
return self.sendXMLHttpRequest(req,opts.sendContent);},_buildURL:function(url){if(arguments.length>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(seconds,value){var d=new MochiKit.Async.Deferred();var m=MochiKit.Base;if(typeof(value)!='undefined'){d.addCallback(function(){return value;});}
var timeout=setTimeout(m.bind("callback",d),Math.floor(seconds*1000));d.canceller=function(){try{clearTimeout(timeout);}catch(e){}};return d;},callLater:function(seconds,func){var m=MochiKit.Base;var pfunc=m.partial.apply(m,m.extend(null,arguments,1));return MochiKit.Async.wait(seconds).addCallback(function(res){return pfunc();});}});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>0){this.locked=true;this.waiting.shift().callback(this);}},_nextId:MochiKit.Base.counter(),repr:function(){var state;if(this.locked){state='locked, '+this.waiting.length+' waiting';}else{state='unlocked';}
return'DeferredLock('+this.id+', '+state+')';},toString:MochiKit.Base.forwardCall("repr")};MochiKit.Async.DeferredList=function(list,fireOnOneCallback,fireOnOneErrback,consumeErrors,canceller){MochiKit.Async.Deferred.apply(this,[canceller]);this.list=list;var resultList=[];this.resultList=resultList;this.finishedCount=0;this.fireOnOneCallback=fireOnOneCallback;this.fireOnOneErrback=fireOnOneErrback;this.consumeErrors=consumeErrors;var cb=MochiKit.Base.bind(this._cbDeferred,this);for(var i=0;i<list.length;i++){var d=list[i];resultList.push(undefined);d.addCallback(cb,i,true);d.addErrback(cb,i,false);}
if(list.length===0&&!fireOnOneCallback){this.callback(this.resultList);}};MochiKit.Async.DeferredList.prototype=new MochiKit.Async.Deferred();MochiKit.Async.DeferredList.prototype._cbDeferred=function(index,succeeded,result){this.resultList[index]=[succeeded,result];this.finishedCount+=1;if(this.fired==-1){if(succeeded&&this.fireOnOneCallback){this.callback([index,result]);}else if(!succeeded&&this.fireOnOneErrback){this.errback(result);}else if(this.finishedCount==this.list.length){this.callback(this.resultList);}}
if(!succeeded&&this.consumeErrors){result=null;}
return result;};MochiKit.Async.gatherResults=function(deferredList){var d=new MochiKit.Async.DeferredList(deferredList,false,true,false);d.addCallback(function(results){var ret=[];for(var i=0;i<results.length;i++){ret.push(results[i][1]);}
return ret;});return d;};MochiKit.Async.maybeDeferred=function(func){var self=MochiKit.Async;var result;try{var r=func.apply(null,MochiKit.Base.extend([],arguments,1));if(r instanceof self.Deferred){result=r;}else if(r instanceof Error){result=self.fail(r);}else{result=self.succeed(r);}}catch(e){result=self.fail(e);}
return result;};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(deferred){this.deferred=deferred;});ne("CancelledError",function(deferred){this.deferred=deferred;});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","DL","DT","DD","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 oldDoc=self._document;var oldWin=self._window;var rval;try{self._window=win;self._document=win.document;rval=func();}catch(e){self._window=oldWin;self._document=oldDoc;throw e;}
self._window=oldWin;self._document=oldDoc;return rval;},formContents:function(elem){var names=[];var values=[];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 tagName=elem.tagName.toUpperCase();if(tagName==="INPUT"&&(elem.type=="radio"||elem.type=="checkbox")&&!elem.checked){return null;}
if(tagName==="SELECT"){if(elem.type=="select-one"){if(elem.selectedIndex>=0){var opt=elem.options[elem.selectedIndex];var v=opt.value;if(!v){var h=opt.outerHTML;if(h&&!h.match(/^[^>]+\svalue\s*=/i)){v=opt.text;}}
names.push(name);values.push(v);return null;}
names.push(name);values.push("");return null;}else{var opts=elem.options;if(!opts.length){names.push(name);values.push("");return null;}
for(var i=0;i<opts.length;i++){var opt=opts[i];if(!opt.selected){continue;}
var v=opt.value;if(!v){var h=opt.outerHTML;if(h&&!h.match(/^[^>]+\svalue\s*=/i)){v=opt.text;}}
names.push(name);values.push(v);}
return null;}}
if(tagName==="FORM"||tagName==="P"||tagName==="SPAN"||tagName==="DIV"){return elem.childNodes;}
names.push(name);values.push(elem.value||'');return null;}
return elem.childNodes;});return[names,values];},withDocument:function(doc,func){var self=MochiKit.DOM;var oldDoc=self._document;var rval;try{self._document=doc;rval=func();}catch(e){self._document=oldDoc;throw e;}
self._document=oldDoc;return rval;},registerDOMConverter:function(name,check,wrap,override){MochiKit.DOM.domConverters.register(name,check,wrap,override);},coerceToDOM:function(node,ctx){var m=MochiKit.Base;var im=MochiKit.Iter;var self=MochiKit.DOM;if(im){var iter=im.iter;var repeat=im.repeat;var map=m.map;}
var domConverters=self.domConverters;var coerceToDOM=arguments.callee;var NotFound=m.NotFound;while(true){if(typeof(node)=='undefined'||node===null){return null;}
if(typeof(node)=="function"&&typeof(node.length)=="number"&&!(node instanceof Function)){node=im.list(node);}
if(typeof(node.nodeType)!='undefined'&&node.nodeType>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 iterNodes=null;try{iterNodes=iter(node);}catch(e){}
if(iterNodes){return map(coerceToDOM,iterNodes,repeat(ctx));}}
try{node=domConverters.match(node,ctx);continue;}catch(e){if(e!=NotFound){throw e;}}
return self._document.createTextNode(node.toString());}
return undefined;},isChildNode:function(node,maybeparent){var self=MochiKit.DOM;if(typeof(node)=="string"){node=self.getElement(node);}
if(typeof(maybeparent)=="string"){maybeparent=self.getElement(maybeparent);}
if(typeof(node)=='undefined'||node===null||node===self._document){return false;}
do{if(node===maybeparent){return true;}
var tagName=node.tagName;node=node.parentNode;if(!tagName){break;}
tagName=tagName.toUpperCase();}while(tagName!="BODY"&&tagName!="HTML");return false;},setNodeAttribute:function(node,attr,value){var o={};o[attr]=value;try{return MochiKit.DOM.updateNodeAttributes(node,o);}catch(e){}
return null;},getNodeAttribute:function(node,attr){var self=MochiKit.DOM;var rename=self.attributeArray.renames[attr];node=self.getElement(node);try{if(rename){return node[rename];}
return node.getAttribute(attr);}catch(e){}
return null;},removeNodeAttribute:function(node,attr){var self=MochiKit.DOM;var rename=self.attributeArray.renames[attr];node=self.getElement(node);try{if(rename){return node[rename];}
return node.removeAttribute(attr);}catch(e){}
return null;},updateNodeAttributes:function(node,attrs){var elem=node;var self=MochiKit.DOM;if(typeof(node)=='string'){elem=self.getElement(node);}
if(attrs){var updatetree=MochiKit.Base.updatetree;if(self.attributeArray.compliant){for(var k in attrs){var v=attrs[k];if(typeof(v)=='object'&&typeof(elem[k])=='object'){if(k=="style"&&MochiKit.Style){MochiKit.Style.setStyle(elem,v);}else{updatetree(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 renames=self.attributeArray.renames;for(var k in attrs){v=attrs[k];var renamed=renames[k];if(k=="style"&&typeof(v)=="string"){elem.style.cssText=v;}else if(typeof(renamed)=="string"){elem[renamed]=v;}else if(typeof(elem[k])=='object'&&typeof(v)=='object'){if(k=="style"&&MochiKit.Style){MochiKit.Style.setStyle(elem,v);}else{updatetree(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 nodeStack=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];var concat=MochiKit.Base.concat;while(nodeStack.length){var n=nodeStack.shift();if(typeof(n)=='undefined'||n===null){}else if(typeof(n.nodeType)=='number'){elem.appendChild(n);}else{nodeStack=concat(n,nodeStack);}}
return elem;},insertSiblingNodesBefore:function(node){var elem=node;var self=MochiKit.DOM;if(typeof(node)=='string'){elem=self.getElement(node);}
var nodeStack=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];var parentnode=elem.parentNode;var concat=MochiKit.Base.concat;while(nodeStack.length){var n=nodeStack.shift();if(typeof(n)=='undefined'||n===null){}else if(typeof(n.nodeType)=='number'){parentnode.insertBefore(n,elem);}else{nodeStack=concat(n,nodeStack);}}
return parentnode;},insertSiblingNodesAfter:function(node){var elem=node;var self=MochiKit.DOM;if(typeof(node)=='string'){elem=self.getElement(node);}
var nodeStack=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];if(elem.nextSibling){return self.insertSiblingNodesBefore(elem.nextSibling,nodeStack);}
else{return self.appendChildNodes(elem.parentNode,nodeStack);}},replaceChildNodes:function(node){var elem=node;var self=MochiKit.DOM;if(typeof(node)=='string'){elem=self.getElement(node);arguments[0]=elem;}
var child;while((child=elem.firstChild)){elem.removeChild(child);}
if(arguments.length<2){return elem;}else{return self.appendChildNodes.apply(this,arguments);}},createDOM:function(name,attrs){var elem;var self=MochiKit.DOM;var m=MochiKit.Base;if(typeof(attrs)=="string"||typeof(attrs)=="number"){var args=m.extend([name,null],arguments,1);return arguments.callee.apply(this,args);}
if(typeof(name)=='string'){var xhtml=self._xhtml;if(attrs&&!self.attributeArray.compliant){var contents="";if('name'in attrs){contents+=' name="'+self.escapeHTML(attrs.name)+'"';}
if(name=='input'&&'type'in attrs){contents+=' type="'+self.escapeHTML(attrs.type)+'"';}
if(contents){name="<"+name+contents+">";xhtml=false;}}
var d=self._document;if(xhtml&&d===document){elem=d.createElementNS("http://www.w3.org/1999/xhtml",name);}else{elem=d.createElement(name);}}else{elem=name;}
if(attrs){self.updateNodeAttributes(elem,attrs);}
if(arguments.length<=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 parent=dest.parentNode;if(src){src=self.getElement(src);parent.replaceChild(src,dest);}else{parent.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(tagName,className,parent){var self=MochiKit.DOM;if(typeof(tagName)=='undefined'||tagName===null){tagName='*';}
if(typeof(parent)=='undefined'||parent===null){parent=self._document;}
parent=self.getElement(parent);var children=(parent.getElementsByTagName(tagName)||self._document.all);if(typeof(className)=='undefined'||className===null){return MochiKit.Base.extend(null,children);}
var elements=[];for(var i=0;i<children.length;i++){var child=children[i];var cls=child.className;if(!cls){continue;}
var classNames=cls.split(' ');for(var j=0;j<classNames.length;j++){if(classNames[j]==className){elements.push(child);break;}}}
return elements;},_newCallStack:function(path,once){var rval=function(){var callStack=arguments.callee.callStack;for(var i=0;i<callStack.length;i++){if(callStack[i].apply(this,arguments)===false){break;}}
if(once){try{this[path]=null;}catch(e){}}};rval.callStack=[];return rval;},addToCallStack:function(target,path,func,once){var self=MochiKit.DOM;var existing=target[path];var regfunc=existing;if(!(typeof(existing)=='function'&&typeof(existing.callStack)=="object"&&existing.callStack!==null)){regfunc=self._newCallStack(path,once);if(typeof(existing)=='function'){regfunc.callStack.push(existing);}
target[path]=regfunc;}
regfunc.callStack.push(func);},addLoadEvent:function(func){var self=MochiKit.DOM;self.addToCallStack(self._window,"onload",func,true);},focusOnLoad:function(element){var self=MochiKit.DOM;self.addLoadEvent(function(){element=self.getElement(element);if(element){element.focus();}});},setElementClass:function(element,className){var self=MochiKit.DOM;var obj=self.getElement(element);if(self.attributeArray.compliant){obj.setAttribute("class",className);}else{obj.setAttribute("className",className);}},toggleElementClass:function(className){var self=MochiKit.DOM;for(var i=1;i<arguments.length;i++){var obj=self.getElement(arguments[i]);if(!self.addElementClass(obj,className)){self.removeElementClass(obj,className);}}},addElementClass:function(element,className){var self=MochiKit.DOM;var obj=self.getElement(element);var cls=obj.className;if(cls==undefined||cls.length===0){self.setElementClass(obj,className);return true;}
if(cls==className){return false;}
var classes=cls.split(" ");for(var i=0;i<classes.length;i++){if(classes[i]==className){return false;}}
self.setElementClass(obj,cls+" "+className);return true;},removeElementClass:function(element,className){var self=MochiKit.DOM;var obj=self.getElement(element);var cls=obj.className;if(cls==undefined||cls.length===0){return false;}
if(cls==className){self.setElementClass(obj,"");return true;}
var classes=cls.split(" ");for(var i=0;i<classes.length;i++){if(classes[i]==className){classes.splice(i,1);self.setElementClass(obj,classes.join(" "));return true;}}
return false;},swapElementClass:function(element,fromClass,toClass){var obj=MochiKit.DOM.getElement(element);var res=MochiKit.DOM.removeElementClass(obj,fromClass);if(res){MochiKit.DOM.addElementClass(obj,toClass);}
return res;},hasElementClass:function(element,className){var obj=MochiKit.DOM.getElement(element);var cls=obj.className;if(!cls){return false;}
var classes=cls.split(" ");for(var i=1;i<arguments.length;i++){var good=false;for(var j=0;j<classes.length;j++){if(classes[j]==arguments[i]){good=true;break;}}
if(!good){return false;}}
return true;},escapeHTML:function(s){return s.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;");},toHTML:function(dom){return MochiKit.DOM.emitHTML(dom).join("");},emitHTML:function(dom,lst){if(typeof(lst)=='undefined'||lst===null){lst=[];}
var queue=[dom];var self=MochiKit.DOM;var escapeHTML=self.escapeHTML;var attributeArray=self.attributeArray;while(queue.length){dom=queue.pop();if(typeof(dom)=='string'){lst.push(dom);}else if(dom.nodeType==1){lst.push('<'+dom.tagName.toLowerCase());var attributes=[];var domAttr=attributeArray(dom);for(var i=0;i<domAttr.length;i++){var a=domAttr[i];attributes.push([" ",a.name,'="',escapeHTML(a.value),'"']);}
attributes.sort();for(i=0;i<attributes.length;i++){var attrs=attributes[i];for(var j=0;j<attrs.length;j++){lst.push(attrs[j]);}}
if(dom.hasChildNodes()){lst.push(">");queue.push("</"+dom.tagName.toLowerCase()+">");var cnodes=dom.childNodes;for(i=cnodes.length-1;i>=0;i--){queue.push(cnodes[i]);}}else{lst.push('/>');}}else if(dom.nodeType==3){lst.push(escapeHTML(dom.nodeValue));}}
return lst;},scrapeText:function(node,asArray){var rval=[];(function(node){var cn=node.childNodes;if(cn){for(var i=0;i<cn.length;i++){arguments.callee.call(this,cn[i]);}}
var nodeValue=node.nodeValue;if(typeof(nodeValue)=='string'){rval.push(nodeValue);}})(MochiKit.DOM.getElement(node));if(asArray){return rval;}else{return rval.join("");}},removeEmptyTextNodes:function(element){element=MochiKit.DOM.getElement(element);for(var i=0;i<element.childNodes.length;i++){var node=element.childNodes[i];if(node.nodeType==3&&!/\S/.test(node.nodeValue)){node.parentNode.removeChild(node);}}},makeClipping:function(element){element=MochiKit.DOM.getElement(element);var oldOverflow=element.style.overflow;if((MochiKit.Style.getStyle(element,'overflow')||'visible')!='hidden'){element.style.overflow='hidden';}
return oldOverflow;},undoClipping:function(element,overflow){element=MochiKit.DOM.getElement(element);if(!overflow){return;}
element.style.overflow=overflow;},makePositioned:function(element){element=MochiKit.DOM.getElement(element);var pos=MochiKit.Style.getStyle(element,'position');if(pos=='static'||!pos){element.style.position='relative';if(/Opera/.test(navigator.userAgent)){element.style.top=0;element.style.left=0;}}},undoPositioned:function(element){element=MochiKit.DOM.getElement(element);if(element.style.position=='relative'){element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right='';}},getFirstElementByTagAndClassName:function(tagName,className,parent){var self=MochiKit.DOM;if(typeof(tagName)=='undefined'||tagName===null){tagName='*';}
if(typeof(parent)=='undefined'||parent===null){parent=self._document;}
parent=self.getElement(parent);var children=(parent.getElementsByTagName(tagName)||self._document.all);if(typeof(className)=='undefined'||className===null){return children[0];}
for(var i=0;i<children.length;i++){var child=children[i];var classNames=child.className.split(' ');for(var j=0;j<classNames.length;j++){if(classNames[j]==className){return child;}}}},getFirstParentByTagAndClassName:function(elem,tagName,className){var self=MochiKit.DOM;elem=self.getElement(elem);if(typeof(tagName)=='undefined'||tagName===null){tagName='*';}else{tagName=tagName.toUpperCase();}
if(typeof(className)=='undefined'||className===null){className=null;}
var classList='';var curTagName='';while(elem&&elem.tagName){elem=elem.parentNode;if(tagName=='*'&&className===null){return elem;}
classList=elem.className.split(' ');curTagName=elem.tagName.toUpperCase();if(className===null&&tagName==curTagName){return elem;}else if(className!==null){for(var i=0;i<classList.length;i++){if(tagName=='*'&&classList[i]==className){return elem;}else if(tagName==curTagName&&classList[i]==className){return elem;}}}}
return elem;},isParent:function(child,element){if(!child.parentNode||child==element){return false;}
if(child.parentNode==element){return true;}
return MochiKit.DOM.isParent(child.parentNode,element);},__new__:function(win){var m=MochiKit.Base;if(typeof(document)!="undefined"){this._document=document;var kXULNSURI="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";this._xhtml=(document.documentElement&&document.createElementNS&&document.documentElement.namespaceURI===kXULNSURI);}else if(MochiKit.MockDOM){this._document=MochiKit.MockDOM.document;}
this._window=win;this.domConverters=new m.AdapterRegistry();var __tmpElement=this._document.createElement("span");var attributeArray;if(__tmpElement&&__tmpElement.attributes&&__tmpElement.attributes.length>0){var filter=m.filter;attributeArray=function(node){return filter(attributeArray.ignoreAttrFilter,node.attributes);};attributeArray.ignoreAttr={};var attrs=__tmpElement.attributes;var ignoreAttr=attributeArray.ignoreAttr;for(var i=0;i<attrs.length;i++){var a=attrs[i];ignoreAttr[a.name]=a.value;}
attributeArray.ignoreAttrFilter=function(a){return(attributeArray.ignoreAttr[a.name]!=a.value);};attributeArray.compliant=false;attributeArray.renames={"class":"className","checked":"defaultChecked","usemap":"useMap","for":"htmlFor","readonly":"readOnly","colspan":"colSpan","bgcolor":"bgColor","cellspacing":"cellSpacing","cellpadding":"cellPadding"};}else{attributeArray=function(node){return node.attributes;};attributeArray.compliant=true;attributeArray.renames={};}
this.attributeArray=attributeArray;var _deprecated=function(fromModule,arr){var modules=arr[1].split('.');var str='';var obj={};str+='if (!MochiKit.'+modules[1]+') { throw new Error("';str+='This function has been deprecated and depends on MochiKit.';str+=modules[1]+'.");}';str+='return MochiKit.'+modules[1]+'.'+arr[0];str+='.apply(this, arguments);';obj[modules[2]]=new Function(str);MochiKit.Base.update(MochiKit[fromModule],obj);}
for(var i;i<MochiKit.DOM.DEPRECATED.length;i++){_deprecated('DOM',MochiKit.DOM.DEPRECATED[i]);}
var createDOMFunc=this.createDOMFunc;this.UL=createDOMFunc("ul");this.OL=createDOMFunc("ol");this.LI=createDOMFunc("li");this.DL=createDOMFunc("dl");this.DT=createDOMFunc("dt");this.DD=createDOMFunc("dd");this.TD=createDOMFunc("td");this.TR=createDOMFunc("tr");this.TBODY=createDOMFunc("tbody");this.THEAD=createDOMFunc("thead");this.TFOOT=createDOMFunc("tfoot");this.TABLE=createDOMFunc("table");this.TH=createDOMFunc("th");this.INPUT=createDOMFunc("input");this.SPAN=createDOMFunc("span");this.A=createDOMFunc("a");this.DIV=createDOMFunc("div");this.IMG=createDOMFunc("img");this.BUTTON=createDOMFunc("button");this.TT=createDOMFunc("tt");this.PRE=createDOMFunc("pre");this.H1=createDOMFunc("h1");this.H2=createDOMFunc("h2");this.H3=createDOMFunc("h3");this.BR=createDOMFunc("br");this.HR=createDOMFunc("hr");this.LABEL=createDOMFunc("label");this.TEXTAREA=createDOMFunc("textarea");this.FORM=createDOMFunc("form");this.P=createDOMFunc("p");this.SELECT=createDOMFunc("select");this.OPTION=createDOMFunc("option");this.OPTGROUP=createDOMFunc("optgroup");this.LEGEND=createDOMFunc("legend");this.FIELDSET=createDOMFunc("fieldset");this.STRONG=createDOMFunc("strong");this.CANVAS=createDOMFunc("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.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,cssProperty){var dom=MochiKit.DOM;var d=dom._document;elem=dom.getElement(elem);cssProperty=MochiKit.Base.camelize(cssProperty);if(!elem||elem==d){return undefined;}
if(cssProperty=='opacity'&&elem.filters){var opacity=(MochiKit.Style.getStyle(elem,'filter')||'').match(/alpha\(opacity=(.*)\)/);if(opacity&&opacity[1]){return parseFloat(opacity[1])/100;}
return 1.0;}
var value=elem.style?elem.style[cssProperty]:null;if(!value){if(d.defaultView&&d.defaultView.getComputedStyle){var css=d.defaultView.getComputedStyle(elem,null);cssProperty=cssProperty.replace(/([A-Z])/g,'-$1').toLowerCase();value=css?css.getPropertyValue(cssProperty):null;}else if(elem.currentStyle){value=elem.currentStyle[cssProperty];}}
if(cssProperty=='opacity'){value=parseFloat(value);}
if(/Opera/.test(navigator.userAgent)&&(MochiKit.Base.find(['left','top','right','bottom'],cssProperty)!=-1)){if(MochiKit.Style.getStyle(elem,'position')=='static'){value='auto';}}
return value=='auto'?null:value;},setStyle:function(elem,style){elem=MochiKit.DOM.getElement(elem);for(var name in style){if(name=='opacity'){MochiKit.Style.setOpacity(elem,style[name]);}else{elem.style[MochiKit.Base.camelize(name)]=style[name];}}},setOpacity:function(elem,o){elem=MochiKit.DOM.getElement(elem);var self=MochiKit.Style;if(o==1){var toSet=/Gecko/.test(navigator.userAgent)&&!(/Konqueror|AppleWebKit|KHTML/.test(navigator.userAgent));elem.style["opacity"]=toSet?0.999999:1.0;if(/MSIE/.test(navigator.userAgent)){elem.style['filter']=self.getStyle(elem,'filter').replace(/alpha\([^\)]*\)/gi,'');}}else{if(o<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,relativeTo){var self=MochiKit.Style;var dom=MochiKit.DOM;elem=dom.getElement(elem);if(!elem||(!(elem.x&&elem.y)&&(!elem.parentNode===null||self.getStyle(elem,'display')=='none'))){return undefined;}
var c=new self.Coordinates(0,0);var box=null;var parent=null;var d=MochiKit.DOM._document;var de=d.documentElement;var b=d.body;if(!elem.parentNode&&elem.x&&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);return c;}else if(elem.offsetParent){c.x+=elem.offsetLeft;c.y+=elem.offsetTop;parent=elem.offsetParent;if(parent!=elem){while(parent){c.x+=parent.offsetLeft;c.y+=parent.offsetTop;parent=parent.offsetParent;}}
var ua=navigator.userAgent.toLowerCase();if((typeof(opera)!='undefined'&&parseFloat(opera.version())<9)||(ua.indexOf('AppleWebKit')!=-1&&self.getStyle(elem,'position')=='absolute')){c.x-=b.offsetLeft;c.y-=b.offsetTop;}}
if(typeof(relativeTo)!='undefined'){relativeTo=arguments.callee(relativeTo);if(relativeTo){c.x-=(relativeTo.x||0);c.y-=(relativeTo.y||0);}}
if(elem.parentNode){parent=elem.parentNode;}else{parent=null;}
while(parent){var tagName=parent.tagName.toUpperCase();if(tagName==='BODY'||tagName==='HTML'){break;}
var disp=self.getStyle(parent,'display');if(disp.search(/^inline|table-row.*$/i)){c.x-=parent.scrollLeft;c.y-=parent.scrollTop;}
if(parent.parentNode){parent=parent.parentNode;}else{parent=null;}}
return c;},setElementPosition:function(elem,newPos,units){elem=MochiKit.DOM.getElement(elem);if(typeof(units)=='undefined'){units='px';}
var newStyle={};var isUndefNull=MochiKit.Base.isUndefinedOrNull;if(!isUndefNull(newPos.x)){newStyle['left']=newPos.x+units;}
if(!isUndefNull(newPos.y)){newStyle['top']=newPos.y+units;}
MochiKit.DOM.updateNodeAttributes(elem,{'style':newStyle});},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'&&disp!==''&&typeof(disp)!='undefined'){return new self.Dimensions(elem.offsetWidth||0,elem.offsetHeight||0);}
var s=elem.style;var originalVisibility=s.visibility;var originalPosition=s.position;s.visibility='hidden';s.position='absolute';s.display='';var originalWidth=elem.offsetWidth;var originalHeight=elem.offsetHeight;s.display='none';s.position=originalPosition;s.visibility=originalVisibility;return new self.Dimensions(originalWidth,originalHeight);},setElementDimensions:function(elem,newSize,units){elem=MochiKit.DOM.getElement(elem);if(typeof(units)=='undefined'){units='px';}
var newStyle={};var isUndefNull=MochiKit.Base.isUndefinedOrNull;if(!isUndefNull(newSize.w)){newStyle['width']=newSize.w+units;}
if(!isUndefNull(newSize.h)){newStyle['height']=newSize.h+units;}
MochiKit.DOM.updateNodeAttributes(elem,{'style':newStyle});},setDisplayForElement:function(display,element){var elements=MochiKit.Base.extend(null,arguments,1);var getElement=MochiKit.DOM.getElement;for(var i=0;i<elements.length;i++){element=getElement(elements[i]);if(element){element.style.display=display;}}},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&&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&&(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.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()&&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()&&this.type().indexOf('key')===0){str+=', key(): {code: '+repr(this.key().code)+', string: '+repr(this.key().string)+'}';}
if(this.type()&&(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()&&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'&&this._event.charCode!==0&&!MochiKit.Signal._specialMacKeys[this._event.charCode]){k.code=this._event.charCode;k.string=String.fromCharCode(k.code);}else if(this._event.keyCode&&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()&&(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<0)?0:e.clientX;m.client.y=(!e.clientY||e.clientY<0)?0:e.clientY;}
m.page=new MochiKit.Style.Coordinates(0,0);if(e.pageX||e.pageY){m.page.x=(!e.pageX||e.pageX<0)?0:e.pageX;m.page.y=(!e.pageY||e.pageY<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&1);m.button.right=!!(e.button&2);m.button.middle=!!(e.button&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 _specialMacKeys=MochiKit.Signal._specialMacKeys;for(i=63236;i<=63242;i++){_specialMacKeys[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 _specialKeys=MochiKit.Signal._specialKeys;for(var i=48;i<=57;i++){_specialKeys[i]='KEY_'+(i-48);}
for(i=65;i<=90;i++){_specialKeys[i]='KEY_'+String.fromCharCode(i);}
for(i=96;i<=105;i++){_specialKeys[i]='KEY_NUM_PAD_'+(i-96);}
for(i=112;i<=123;i++){_specialKeys[i]='KEY_F'+(i-112+1);}})();MochiKit.Signal.Ident=function(ident){this.source=ident.source;this.signal=ident.signal;this.listener=ident.listener;this.isDOM=ident.isDOM;this.objOrFunc=ident.objOrFunc;this.funcOrStr=ident.funcOrStr;this.connected=ident.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 observers=self._observers;for(var i=0;i<observers.length;i++){if(observers[i].signal!=='onload'&&observers[i].signal!=='onunload'){self._disconnect(observers[i]);}}},_listener:function(src,sig,func,obj,isDOM){var self=MochiKit.Signal;var E=self.Event;if(!isDOM){if(typeof(func.im_self)=='undefined'){return MochiKit.Base.bind(func,obj);}else{return func;}}
obj=obj||src;if(typeof(func)=="string"){if(sig==='onload'||sig==='onunload'){return function(nativeEvent){obj[func].apply(obj,[new E(src,nativeEvent)]);var ident=new MochiKit.Signal.Ident({source:src,signal:sig,objOrFunc:obj,funcOrStr:func});MochiKit.Signal._disconnect(ident);};}else{return function(nativeEvent){obj[func].apply(obj,[new E(src,nativeEvent)]);};}}else{if(sig==='onload'||sig==='onunload'){return function(nativeEvent){func.apply(obj,[new E(src,nativeEvent)]);var ident=new MochiKit.Signal.Ident({source:src,signal:sig,objOrFunc:func});MochiKit.Signal._disconnect(ident);};}else{return function(nativeEvent){func.apply(obj,[new E(src,nativeEvent)]);};}}},_browserAlreadyHasMouseEnterAndLeave:function(){return/MSIE/.test(navigator.userAgent);},_mouseEnterListener:function(src,sig,func,obj){var E=MochiKit.Signal.Event;return function(nativeEvent){var e=new E(src,nativeEvent);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(objOrFunc,funcOrStr){var obj=null;var func=null;if(typeof(funcOrStr)!='undefined'){obj=objOrFunc;func=funcOrStr;if(typeof(funcOrStr)=='string'){if(typeof(objOrFunc[funcOrStr])!="function"){throw new Error("'funcOrStr' must be a function on 'objOrFunc'");}}else if(typeof(funcOrStr)!='function'){throw new Error("'funcOrStr' must be a function or string");}}else if(typeof(objOrFunc)!="function"){throw new Error("'objOrFunc' must be a function if 'funcOrStr' is not given");}else{func=objOrFunc;}
return[obj,func];},connect:function(src,sig,objOrFunc,funcOrStr){src=MochiKit.DOM.getElement(src);var self=MochiKit.Signal;if(typeof(sig)!='string'){throw new Error("'sig' must be a string");}
var destPair=self._getDestPair(objOrFunc,funcOrStr);var obj=destPair[0];var func=destPair[1];if(typeof(obj)=='undefined'||obj===null){obj=src;}
var isDOM=!!(src.addEventListener||src.attachEvent);if(isDOM&&(sig==="onmouseenter"||sig==="onmouseleave")&&!self._browserAlreadyHasMouseEnterAndLeave()){var listener=self._mouseEnterListener(src,sig.substr(2),func,obj);if(sig==="onmouseenter"){sig="onmouseover";}else{sig="onmouseout";}}else{var listener=self._listener(src,sig,func,obj,isDOM);}
if(src.addEventListener){src.addEventListener(sig.substr(2),listener,false);}else if(src.attachEvent){src.attachEvent(sig,listener);}
var ident=new MochiKit.Signal.Ident({source:src,signal:sig,listener:listener,isDOM:isDOM,objOrFunc:objOrFunc,funcOrStr:funcOrStr,connected:true});self._observers.push(ident);if(!isDOM&&typeof(src.__connect__)=='function'){var args=MochiKit.Base.extend([ident],arguments,1);src.__connect__.apply(src,args);}
return ident;},_disconnect:function(ident){if(!ident.connected){return;}
ident.connected=false;if(!ident.isDOM){return;}
var src=ident.source;var sig=ident.signal;var listener=ident.listener;if(src.removeEventListener){src.removeEventListener(sig.substr(2),listener,false);}else if(src.detachEvent){src.detachEvent(sig,listener);}else{throw new Error("'src' must be a DOM element");}},disconnect:function(ident){var self=MochiKit.Signal;var observers=self._observers;var m=MochiKit.Base;if(arguments.length>1){var src=MochiKit.DOM.getElement(arguments[0]);var sig=arguments[1];var obj=arguments[2];var func=arguments[3];for(var i=observers.length-1;i>=0;i--){var o=observers[i];if(o.source===src&&o.signal===sig&&o.objOrFunc===obj&&o.funcOrStr===func){self._disconnect(o);if(!self._lock){observers.splice(i,1);}else{self._dirty=true;}
return true;}}}else{var idx=m.findIdentical(observers,ident);if(idx>=0){self._disconnect(ident);if(!self._lock){observers.splice(idx,1);}else{self._dirty=true;}
return true;}}
return false;},disconnectAllTo:function(objOrFunc,funcOrStr){var self=MochiKit.Signal;var observers=self._observers;var disconnect=self._disconnect;var locked=self._lock;var dirty=self._dirty;if(typeof(funcOrStr)==='undefined'){funcOrStr=null;}
for(var i=observers.length-1;i>=0;i--){var ident=observers[i];if(ident.objOrFunc===objOrFunc&&(funcOrStr===null||ident.funcOrStr===funcOrStr)){disconnect(ident);if(locked){dirty=true;}else{observers.splice(i,1);}}}
self._dirty=dirty;},disconnectAll:function(src,sig){src=MochiKit.DOM.getElement(src);var m=MochiKit.Base;var signals=m.flattenArguments(m.extend(null,arguments,1));var self=MochiKit.Signal;var disconnect=self._disconnect;var observers=self._observers;var i,ident;var locked=self._lock;var dirty=self._dirty;if(signals.length===0){for(i=observers.length-1;i>=0;i--){ident=observers[i];if(ident.source===src){disconnect(ident);if(!locked){observers.splice(i,1);}else{dirty=true;}}}}else{var sigs={};for(i=0;i<signals.length;i++){sigs[signals[i]]=true;}
for(i=observers.length-1;i>=0;i--){ident=observers[i];if(ident.source===src&&ident.signal in sigs){disconnect(ident);if(!locked){observers.splice(i,1);}else{dirty=true;}}}}
self._dirty=dirty;},signal:function(src,sig){var self=MochiKit.Signal;var observers=self._observers;src=MochiKit.DOM.getElement(src);var args=MochiKit.Base.extend(null,arguments,2);var errors=[];self._lock=true;for(var i=0;i<observers.length;i++){var ident=observers[i];if(ident.source===src&&ident.signal===sig&&ident.connected){try{ident.listener.apply(src,args);}catch(e){errors.push(e);}}}
self._lock=false;if(self._dirty){self._dirty=false;for(var i=observers.length-1;i>=0;i--){if(!observers[i].connected){observers.splice(i,1);}}}
if(errors.length==1){throw errors[0];}else if(errors.length>1){var e=new Error("Multiple errors thrown in handling 'sig', see errors property");e.errors=errors;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);
