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.5";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()}},_deps:function(module,deps){if(!(module in MochiKit)){MochiKit[module]={}}if(typeof(dojo)!="undefined"){dojo.provide("MochiKit."+module)}for(var i=0;i<deps.length;i++){if(typeof(dojo)!="undefined"){dojo.require("MochiKit."+deps[i])}if(typeof(JSAN)!="undefined"){JSAN.use("MochiKit."+deps[i],[])}if(!(deps[i] in MochiKit)){throw"MochiKit."+module+" depends on MochiKit."+deps[i]+"!"}}},_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||o.nodeType===4){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},bindLate:function(func,self){var m=MochiKit.Base;if(typeof(func)!="string"){return m.bind.apply(this,arguments)}var im_preargs=m.extend([],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 self[me.im_func].apply(self,args)};newfunc.im_self=self;newfunc.im_func=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," ");ostring=ostring.replace(/,(\S)/,", $1");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(/[\v]/g,"\\v").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"}else{if(objtype=="string"){var res="";for(var i=0;i<o.length;i++){var c=o.charAt(i);if(c=='"'){res+='\\"'}else{if(c=="\\"){res+="\\\\"}else{if(c=="\b"){res+="\\b"}else{if(c=="\f"){res+="\\f"}else{if(c=="\n"){res+="\\n"}else{if(c=="\r"){res+="\\r"}else{if(c=="\t"){res+="\\t"}else{if(o.charCodeAt(i)<=31){var hex=o.charCodeAt(i).toString(16);if(hex.length<2){hex="0"+hex}res+="\\u00"+hex.toUpperCase()}else{res+=c}}}}}}}}}return'"'+res+'"'}}}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"){continue}res.push(val)}return"["+res.join(", ")+"]"}var m=MochiKit.Base;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=me(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","bindLate","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);MochiKit.Base._deps("Iter",["Base"]);MochiKit.Iter.NAME="MochiKit.Iter";MochiKit.Iter.VERSION="1.5";MochiKit.Base.update(MochiKit.Iter,{__repr__:function(){return"["+this.NAME+" "+this.VERSION+"]"},toString:function(){return this.__repr__()},registerIteratorFactory:function(name,check,iterfactory,override){MochiKit.Iter.iteratorRegistry.register(name,check,iterfactory,override)},isIterable:function(o){return o!=null&&(typeof(o.next)=="function"||typeof(o.iter)=="function")},iter:function(iterable,sentinel){var self=MochiKit.Iter;if(arguments.length==2){return self.takewhile(function(a){return a!=sentinel},iterable)}if(typeof(iterable.next)=="function"){return iterable}else{if(typeof(iterable.iter)=="function"){return iterable.iter()}}try{return self.iteratorRegistry.match(iterable)}catch(e){var m=MochiKit.Base;if(e==m.NotFound){e=new TypeError(typeof(iterable)+": "+m.repr(iterable)+" 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 iterator=self.iter(p);return{repr:function(){return"cycle(...)"},toString:m.forwardCall("repr"),next:function(){try{var rval=iterator.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<=0){throw MochiKit.Iter.StopIteration}n-=1;return elem}}},next:function(iterator){return iterator.next()},izip:function(p,q){var m=MochiKit.Base;var self=MochiKit.Iter;var next=self.next;var iterables=m.map(self.iter,arguments);return{repr:function(){return"izip(...)"},toString:m.forwardCall("repr"),next:function(){return m.map(next,iterables)}}},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 start=0;var stop=0;var step=1;var i=-1;if(arguments.length==2){stop=arguments[1]}else{if(arguments.length==3){start=arguments[1];stop=arguments[2]}else{start=arguments[1];stop=arguments[2];step=arguments[3]}}return{repr:function(){return"islice("+["...",start,stop,step].join(", ")+")"},toString:m.forwardCall("repr"),next:function(){var rval;while(i<start){rval=seq.next();i++}if(start>=stop){throw self.StopIteration}start+=step;return rval}}},imap:function(fun,p,q){var m=MochiKit.Base;var self=MochiKit.Iter;var iterables=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,iterables))}}},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 argiter=m.map(self.iter,arguments);return{repr:function(){return"chain(...)"},toString:m.forwardCall("repr"),next:function(){while(argiter.length>1){try{var result=argiter[0].next();return result}catch(e){if(e!=self.StopIteration){throw e}argiter.shift();var result=argiter[0].next();return result}}if(argiter.length==1){var arg=argiter.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(ident,sync,iterable){sync.pos[ident]=-1;var m=MochiKit.Base;var listMin=m.listMin;return{repr:function(){return"tee("+ident+", ...)"},toString:m.forwardCall("repr"),next:function(){var rval;var i=sync.pos[ident];if(i==sync.max){rval=iterable.next();sync.deque.push(rval);sync.max+=1;sync.pos[ident]+=1}else{rval=sync.deque[i-sync.min];sync.pos[ident]+=1;if(i==sync.min&&listMin(sync.pos)!=sync.min){sync.min+=1;sync.deque.shift()}}return rval}}},tee:function(iterable,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;iterable=self.iter(iterable);var _tee=self._tee;for(var i=0;i<n;i++){rval.push(_tee(i,sync,iterable))}return rval},list:function(iterable){var rval;if(iterable instanceof Array){return iterable.slice()}if(typeof(iterable)=="function"&&!(iterable instanceof Function)&&typeof(iterable.length)=="number"){rval=[];for(var i=0;i<iterable.length;i++){rval.push(iterable[i])}return rval}var self=MochiKit.Iter;iterable=self.iter(iterable);var rval=[];var a_val;try{while(true){a_val=iterable.next();rval.push(a_val)}}catch(e){if(e!=self.StopIteration){throw e}return rval}return undefined},reduce:function(fn,iterable,initial){var i=0;var x=initial;var self=MochiKit.Iter;iterable=self.iter(iterable);if(arguments.length<3){try{x=iterable.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,iterable.next())}}catch(e){if(e!=self.StopIteration){throw e}}return x},range:function(){var start=0;var stop=0;var step=1;if(arguments.length==1){stop=arguments[0]}else{if(arguments.length==2){start=arguments[0];stop=arguments[1]}else{if(arguments.length==3){start=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>0&&start>=stop)||(step<0&&start<=stop)){throw MochiKit.Iter.StopIteration}var rval=start;start+=step;return rval},repr:function(){return"range("+[start,stop,step].join(", ")+")"},toString:MochiKit.Base.forwardCall("repr")}},sum:function(iterable,start){if(typeof(start)=="undefined"||start===null){start=0}var x=start;var self=MochiKit.Iter;iterable=self.iter(iterable);try{while(true){x+=iterable.next()}}catch(e){if(e!=self.StopIteration){throw e}}return x},exhaust:function(iterable){var self=MochiKit.Iter;iterable=self.iter(iterable);try{while(true){iterable.next()}}catch(e){if(e!=self.StopIteration){throw e}}},forEach:function(iterable,func,obj){var m=MochiKit.Base;var self=MochiKit.Iter;if(arguments.length>2){func=m.bind(func,obj)}if(m.isArrayLike(iterable)&&!self.isIterable(iterable)){try{for(var i=0;i<iterable.length;i++){func(iterable[i])}}catch(e){if(e!=self.StopIteration){throw e}}}else{self.exhaust(self.imap(func,iterable))}},every:function(iterable,func){var self=MochiKit.Iter;try{self.ifilterfalse(func,iterable).next();return false}catch(e){if(e!=self.StopIteration){throw e}return true}},sorted:function(iterable,cmp){var rval=MochiKit.Iter.list(iterable);if(arguments.length==1){cmp=MochiKit.Base.compare}rval.sort(cmp);return rval},reversed:function(iterable){var rval=MochiKit.Iter.list(iterable);rval.reverse();return rval},some:function(iterable,func){var self=MochiKit.Iter;try{self.ifilter(func,iterable).next();return true}catch(e){if(e!=self.StopIteration){throw e}return false}},iextend:function(lst,iterable){var m=MochiKit.Base;var self=MochiKit.Iter;if(m.isArrayLike(iterable)&&!self.isIterable(iterable)){for(var i=0;i<iterable.length;i++){lst.push(iterable[i])}}else{iterable=self.iter(iterable);try{while(true){lst.push(iterable.next())}}catch(e){if(e!=self.StopIteration){throw e}}}return lst},groupby:function(iterable,keyfunc){var m=MochiKit.Base;var self=MochiKit.Iter;if(arguments.length<2){keyfunc=m.operator.identity}iterable=self.iter(iterable);var pk=undefined;var k=undefined;var v;function fetch(){v=iterable.next();k=keyfunc(v)}function eat(){var ret=v;v=undefined;return ret}var first=true;var compare=m.compare;return{repr:function(){return"groupby(...)"},next:function(){while(compare(k,pk)===0){fetch();if(first){first=false;break}}pk=k;return[k,{next:function(){if(v==undefined){fetch()}if(compare(k,pk)!==0){throw self.StopIteration}return eat()}}]}}},groupby_as_array:function(iterable,keyfunc){var m=MochiKit.Base;var self=MochiKit.Iter;if(arguments.length<2){keyfunc=m.operator.identity}iterable=self.iter(iterable);var result=[];var first=true;var prev_key;var compare=m.compare;while(true){try{var value=iterable.next();var key=keyfunc(value)}catch(e){if(e==self.StopIteration){break}throw e}if(first||compare(key,prev_key)!==0){var values=[];result.push([key,values])}values.push(value);first=false;prev_key=key}return result},arrayLikeIter:function(iterable){var i=0;return{repr:function(){return"arrayLikeIter(...)"},toString:MochiKit.Base.forwardCall("repr"),next:function(){if(i>=iterable.length){throw MochiKit.Iter.StopIteration}return iterable[i++]}}},hasIterateNext:function(iterable){return(iterable&&typeof(iterable.iterateNext)=="function")},iterateNextIter:function(iterable){return{repr:function(){return"iterateNextIter(...)"},toString:MochiKit.Base.forwardCall("repr"),next:function(){var rval=iterable.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);MochiKit.Base._deps("DOM",["Base"]);MochiKit.DOM.NAME="MochiKit.DOM";MochiKit.DOM.VERSION="1.5";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","H4","H5","H6","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","computedStyle","escapeHTML","toHTML","emitHTML","scrapeText","getFirstParentByTagAndClassName","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"],["getViewportDimensions","MochiKit.Style.getViewportDimensions","1.4"],["hideElement","MochiKit.Style.hideElement","1.4"],["makeClipping","MochiKit.Style.makeClipping","1.4.1"],["makePositioned","MochiKit.Style.makePositioned","1.4.1"],["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"],["undoClipping","MochiKit.Style.undoClipping","1.4.1"],["undoPositioned","MochiKit.Style.undoPositioned","1.4.1"],["Coordinates","MochiKit.Style.Coordinates","1.4"],["Dimensions","MochiKit.Style.Dimensions","1.4"]];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){return false}while(node!=null&&node!==self._document){if(node===maybeparent){return true}node=node.parentNode}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];var ignoreValue=self.attributeArray.ignoreAttr[attr];node=self.getElement(node);try{if(rename){return node[rename]}var value=node.getAttribute(attr);if(value!=ignoreValue){return value}}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)}}if(typeof(elem[k])=="string"&&elem[k]!=v){elem[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)}}}}if(typeof(elem[k])=="string"&&elem[k]!=v){elem[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 self=MochiKit.DOM;var e=self.coerceToDOM(self.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.coerceToDOM(self.getElement(src),parent);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);if(parent==null){return[]}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(typeof(cls)!="string"){cls=child.getAttribute("class")}if(typeof(cls)=="string"){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(typeof(cls)!="string"){cls=obj.getAttribute("class")}if(typeof(cls)!="string"||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(typeof(cls)!="string"){cls=obj.getAttribute("class")}if(typeof(cls)!="string"||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);if(obj==null){return false}var cls=obj.className;if(typeof(cls)!="string"){cls=obj.getAttribute("class")}if(typeof(cls)!="string"){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)}}},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);if(parent==null){return null}var children=(parent.getElementsByTagName(tagName)||self._document.all);if(children.length<=0){return null}else{if(typeof(className)=="undefined"||className===null){return children[0]}}for(var i=0;i<children.length;i++){var child=children[i];var cls=child.className;if(typeof(cls)!="string"){cls=child.getAttribute("class")}if(typeof(cls)=="string"){var classNames=cls.split(" ");for(var j=0;j<classNames.length;j++){if(classNames[j]==className){return child}}}}return null},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}if(elem){elem=elem.parentNode}while(elem&&elem.tagName){var curTagName=elem.tagName.toUpperCase();if((tagName==="*"||tagName==curTagName)&&(className===null||self.hasElementClass(elem,className))){return elem}elem=elem.parentNode}return null},__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.ignoreAttr={};attributeArray.renames={}}this.attributeArray=attributeArray;var _deprecated=function(fromModule,arr){var fromName=arr[0];var toName=arr[1];var toModule=toName.split(".")[1];var str="";str+="if (!MochiKit."+toModule+') { throw new Error("';str+="This function has been deprecated and depends on MochiKit.";str+=toModule+'.");}';str+="return "+toName+".apply(this, arguments);";MochiKit[fromModule][fromName]=new Function(str)};for(var i=0;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.H4=createDOMFunc("h4");this.H5=createDOMFunc("h5");this.H6=createDOMFunc("h6");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);MochiKit.Base._deps("Style",["Base","DOM"]);MochiKit.Style.NAME="MochiKit.Style";MochiKit.Style.VERSION="1.5";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","makePositioned","undoPositioned","makeClipping","undoClipping","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"&&typeof(elem.filters)!="undefined"){var opacity=(MochiKit.Style.getStyle(elem,"filter")||"").match(/alpha\(opacity=(.*)\)/);if(opacity&&opacity[1]){return parseFloat(opacity[1])/100}return 1}if(cssProperty=="float"||cssProperty=="cssFloat"||cssProperty=="styleFloat"){if(elem.style["float"]){return elem.style["float"]}else{if(elem.style.cssFloat){return elem.style.cssFloat}else{if(elem.style.styleFloat){return elem.style.styleFloat}else{return"none"}}}}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(/^\d/.test(value)&&!/px$/.test(value)&&cssProperty!="fontWeight"){var left=elem.style.left;var rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;elem.style.left=value||0;value=elem.style.pixelLeft+"px";elem.style.left=left;elem.runtimeStyle.left=rsLeft}}}}if(cssProperty=="opacity"){value=parseFloat(value)}if(/Opera/.test(navigator.userAgent)&&(MochiKit.Base.findValue(["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){switch(name){case"opacity":MochiKit.Style.setOpacity(elem,style[name]);break;case"float":case"cssFloat":case"styleFloat":if(typeof(elem.style["float"])!="undefined"){elem.style["float"]=style[name]}else{if(typeof(elem.style.cssFloat)!="undefined"){elem.style.cssFloat=style[name]}else{elem.style.styleFloat=style[name]}}break;default: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;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)}else{if(elem.offsetParent){c.x+=elem.offsetLeft;c.y+=elem.offsetTop;parent=elem.offsetParent;if(parent!=elem){while(parent){c.x+=parseInt(parent.style.borderLeftWidth)||0;c.y+=parseInt(parent.style.borderTopWidth)||0;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(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}}}}}if(typeof(relativeTo)!="undefined"){relativeTo=arguments.callee(relativeTo);if(relativeTo){c.x-=(relativeTo.x||0);c.y-=(relativeTo.y||0)}}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})},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=""}},makeClipping:function(element){element=MochiKit.DOM.getElement(element);var s=element.style;var oldOverflow={overflow:s.overflow,"overflow-x":s.overflowX,"overflow-y":s.overflowY};if((MochiKit.Style.getStyle(element,"overflow")||"visible")!="hidden"){element.style.overflow="hidden";element.style.overflowX="hidden";element.style.overflowY="hidden"}return oldOverflow},undoClipping:function(element,overflow){element=MochiKit.DOM.getElement(element);if(typeof(overflow)=="string"){element.style.overflow=overflow}else{if(overflow!=null){element.style.overflow=overflow.overflow;element.style.overflowX=overflow["overflow-x"];element.style.overflowY=overflow["overflow-y"]}}},getElementDimensions:function(elem,contentSize){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"){var s=elem.style;var originalVisibility=s.visibility;var originalPosition=s.position;var originalDisplay=s.display;s.visibility="hidden";s.position="absolute";s.display=self._getDefaultDisplay(elem);var originalWidth=elem.offsetWidth;var originalHeight=elem.offsetHeight;s.display=originalDisplay;s.position=originalPosition;s.visibility=originalVisibility}else{originalWidth=elem.offsetWidth||0;originalHeight=elem.offsetHeight||0}if(contentSize){var tableCell="colSpan" in elem&&"rowSpan" in elem;var collapse=(tableCell&&elem.parentNode&&self.getStyle(elem.parentNode,"borderCollapse")=="collapse");if(collapse){if(/MSIE/.test(navigator.userAgent)){var borderLeftQuota=elem.previousSibling?0.5:1;var borderRightQuota=elem.nextSibling?0.5:1}else{var borderLeftQuota=0.5;var borderRightQuota=0.5}}else{var borderLeftQuota=1;var borderRightQuota=1}originalWidth-=Math.round((parseFloat(self.getStyle(elem,"paddingLeft"))||0)+(parseFloat(self.getStyle(elem,"paddingRight"))||0)+borderLeftQuota*(parseFloat(self.getStyle(elem,"borderLeftWidth"))||0)+borderRightQuota*(parseFloat(self.getStyle(elem,"borderRightWidth"))||0));if(tableCell){if(/Gecko|Opera/.test(navigator.userAgent)&&!/Konqueror|AppleWebKit|KHTML/.test(navigator.userAgent)){var borderHeightQuota=0}else{if(/MSIE/.test(navigator.userAgent)){var borderHeightQuota=1}else{var borderHeightQuota=collapse?0.5:1}}}else{var borderHeightQuota=1}originalHeight-=Math.round((parseFloat(self.getStyle(elem,"paddingTop"))||0)+(parseFloat(self.getStyle(elem,"paddingBottom"))||0)+borderHeightQuota*((parseFloat(self.getStyle(elem,"borderTopWidth"))||0)+(parseFloat(self.getStyle(elem,"borderBottomWidth"))||0)))}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})},_getDefaultDisplay:function(elem){var self=MochiKit.Style;var dom=MochiKit.DOM;elem=dom.getElement(elem);if(!elem){return undefined}var tagName=elem.tagName.toUpperCase();return self._defaultDisplay[tagName]||"block"},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;var inlines=["A","ABBR","ACRONYM","B","BASEFONT","BDO","BIG","BR","CITE","CODE","DFN","EM","FONT","I","IMG","KBD","LABEL","Q","S","SAMP","SMALL","SPAN","STRIKE","STRONG","SUB","SUP","TEXTAREA","TT","U","VAR"];this._defaultDisplay={TABLE:"table",THEAD:"table-header-group",TBODY:"table-row-group",TFOOT:"table-footer-group",COLGROUP:"table-column-group",COL:"table-column",TR:"table-row",TD:"table-cell",TH:"table-cell",CAPTION:"table-caption",LI:"list-item",INPUT:"inline-block",SELECT:"inline-block"};if(/MSIE/.test(navigator.userAgent)){for(var k in this._defaultDisplay){var v=this._defaultDisplay[k];if(v.indexOf("table")==0){this._defaultDisplay[k]="block"}}}for(var i=0;i<inlines.length;i++){this._defaultDisplay[inlines[i]]="inline"}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);MochiKit.Base._deps("Async",["Base"]);MochiKit.Async.NAME="MochiKit.Async";MochiKit.Async.VERSION="1.5";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||status==302){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);MochiKit.Base._deps("Signal",["Base","DOM","Style"]);MochiKit.Signal.NAME="MochiKit.Signal";MochiKit.Signal.VERSION="1.5";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"&&this.type()!="mousewheel"){str+=", button: {left: "+repr(this.mouse().button.left)+", middle: "+repr(this.mouse().button.middle)+", right: "+repr(this.mouse().button.right)+"}"}if(this.type()=="mousewheel"){str+=", wheel: "+repr(this.mouse().wheel)}str+="}"}if(this.type()=="mouseover"||this.type()=="mouseout"||this.type()=="mouseenter"||this.type()=="mouseleave"){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(){if(this._event.type==="DOMMouseScroll"){return"mousewheel"}else{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"||this.type()=="mouseenter"){elem=(this._event.relatedTarget||this._event.fromElement)}else{if(this.type()=="mouseout"||this.type()=="mouseleave"){elem=(this._event.relatedTarget||this._event.toElement)}}try{if(elem!==null&&elem.nodeType!==null){this._relatedTarget=elem;return elem}}catch(ignore){}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"&&this.type()!="mousewheel"){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)}}if(this.type()=="mousewheel"){m.wheel=new MochiKit.Style.Coordinates(0,0);if(e.wheelDeltaX||e.wheelDeltaY){m.wheel.x=e.wheelDeltaX/-40||0;m.wheel.y=e.wheelDeltaY/-40||0}else{if(e.wheelDelta){m.wheel.y=e.wheelDelta/-40}else{m.wheel.y=e.detail||0}}}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.bindLate(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)},_browserLacksMouseWheelEvent:function(){return/Gecko\//.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{if(isDOM&&sig=="onmousewheel"&&self._browserLacksMouseWheelEvent()){var listener=self._listener(src,sig,func,obj,isDOM);sig="onDOMMouseScroll"}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;var src=ident.source;var sig=ident.signal;var listener=ident.listener;if(!ident.isDOM){if(typeof(src.__disconnect__)=="function"){src.__disconnect__(ident,sig,ident.objOrFunc,ident.funcOrStr)}return}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);MochiKit.Base._deps("Selector",["Base","DOM","Iter"]);MochiKit.Selector.NAME="MochiKit.Selector";MochiKit.Selector.VERSION="1.5";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(expression){this.params={classNames:[],pseudoClassNames:[]};this.expression=expression.toString().replace(/(^\s+|\s+$)/g,"");this.parseExpression();this.compileMatcher()};MochiKit.Selector.Selector.prototype={__class__:MochiKit.Selector.Selector,parseExpression:function(){function abort(message){throw"Parse error in selector: "+message}if(this.expression==""){abort("empty expression")}var repr=MochiKit.Base.repr;var params=this.params;var expr=this.expression;var match,modifier,clause,rest;while(match=expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!^$*]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)){params.attributes=params.attributes||[];params.attributes.push({name:match[2],operator:match[3],value:match[4]||match[5]||""});expr=match[1]}if(expr=="*"){return this.params.wildcard=true}while(match=expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+(?:\([^)]*\))?)(.*)/i)){modifier=match[1];clause=match[2];rest=match[3];switch(modifier){case"#":params.id=clause;break;case".":params.classNames.push(clause);break;case":":params.pseudoClassNames.push(clause);break;case"":case undefined:params.tagName=clause.toUpperCase();break;default:abort(repr(expr))}expr=rest}if(expr.length>0){abort(repr(expr))}},buildMatchExpression:function(){var repr=MochiKit.Base.repr;var params=this.params;var conditions=[];var clause,i;function childElements(element){return"MochiKit.Base.filter(function (node) { return node.nodeType == 1; }, "+element+".childNodes)"}if(params.wildcard){conditions.push("true")}if(clause=params.id){conditions.push("element.id == "+repr(clause))}if(clause=params.tagName){conditions.push("element.tagName.toUpperCase() == "+repr(clause))}if((clause=params.classNames).length>0){for(i=0;i<clause.length;i++){conditions.push("MochiKit.DOM.hasElementClass(element, "+repr(clause[i])+")")}}if((clause=params.pseudoClassNames).length>0){for(i=0;i<clause.length;i++){var match=clause[i].match(/^([^(]+)(?:\((.*)\))?$/);var pseudoClass=match[1];var pseudoClassArgument=match[2];switch(pseudoClass){case"root":conditions.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":match=pseudoClassArgument.match(/^((?:(\d+)n\+)?(\d+)|odd|even)$/);if(!match){throw"Invalid argument to pseudo element nth-child: "+pseudoClassArgument}var a,b;if(match[0]=="odd"){a=2;b=1}else{if(match[0]=="even"){a=2;b=0}else{a=match[2]&&parseInt(match)||null;b=parseInt(match[3])}}conditions.push("this.nthChild(element,"+a+","+b+","+!!pseudoClass.match("^nth-last")+","+!!pseudoClass.match("of-type$")+")");break;case"first-child":conditions.push("this.nthChild(element, null, 1)");break;case"last-child":conditions.push("this.nthChild(element, null, 1, true)");break;case"first-of-type":conditions.push("this.nthChild(element, null, 1, false, true)");break;case"last-of-type":conditions.push("this.nthChild(element, null, 1, true, true)");break;case"only-child":conditions.push(childElements("element.parentNode")+".length == 1");break;case"only-of-type":conditions.push("MochiKit.Base.filter(function (node) { return node.tagName == element.tagName; }, "+childElements("element.parentNode")+").length == 1");break;case"empty":conditions.push("element.childNodes.length == 0");break;case"enabled":conditions.push("(this.isUIElement(element) && element.disabled === false)");break;case"disabled":conditions.push("(this.isUIElement(element) && element.disabled === true)");break;case"checked":conditions.push("(this.isUIElement(element) && element.checked === true)");break;case"not":var subselector=new MochiKit.Selector.Selector(pseudoClassArgument);conditions.push("!( "+subselector.buildMatchExpression()+")");break}}}if(clause=params.attributes){MochiKit.Base.map(function(attribute){var value="MochiKit.DOM.getNodeAttribute(element, "+repr(attribute.name)+")";var splitValueBy=function(delimiter){return value+".split("+repr(delimiter)+")"};conditions.push(value+" != null");switch(attribute.operator){case"=":conditions.push(value+" == "+repr(attribute.value));break;case"~=":conditions.push("MochiKit.Base.findValue("+splitValueBy(" ")+", "+repr(attribute.value)+") > -1");break;case"^=":conditions.push(value+".substring(0, "+attribute.value.length+") == "+repr(attribute.value));break;case"$=":conditions.push(value+".substring("+value+".length - "+attribute.value.length+") == "+repr(attribute.value));break;case"*=":conditions.push(value+".match("+repr(attribute.value)+")");break;case"|=":conditions.push(splitValueBy("-")+"[0].toUpperCase() == "+repr(attribute.value.toUpperCase()));break;case"!=":conditions.push(value+" != "+repr(attribute.value));break;case"":case undefined:break;default:throw"Unknown operator "+attribute.operator+" in selector"}},clause)}return conditions.join(" && ")},compileMatcher:function(){var code="return (!element.tagName) ? false : "+this.buildMatchExpression()+";";this.match=new Function("element",code)},nthChild:function(element,a,b,reverse,sametag){var siblings=MochiKit.Base.filter(function(node){return node.nodeType==1},element.parentNode.childNodes);if(sametag){siblings=MochiKit.Base.filter(function(node){return node.tagName==element.tagName},siblings)}if(reverse){siblings=MochiKit.Iter.reversed(siblings)}if(a){var actualIndex=MochiKit.Base.findIdentical(siblings,element);return((actualIndex+1-b)/a)%1==0}else{return b==MochiKit.Base.findIdentical(siblings,element)+1}},isUIElement:function(element){return MochiKit.Base.findValue(["input","button","select","option","textarea","object"],element.tagName.toLowerCase())>-1},findElements:function(scope,axis){var element;if(axis==undefined){axis=""}function inScope(element,scope){if(axis==""){return MochiKit.DOM.isChildNode(element,scope)}else{if(axis==">"){return element.parentNode===scope}else{if(axis=="+"){return element===nextSiblingElement(scope)}else{if(axis=="~"){var sibling=scope;while(sibling=nextSiblingElement(sibling)){if(element===sibling){return true}}return false}else{throw"Invalid axis: "+axis}}}}}if(element=MochiKit.DOM.getElement(this.params.id)){if(this.match(element)){if(!scope||inScope(element,scope)){return[element]}}}function nextSiblingElement(node){node=node.nextSibling;while(node&&node.nodeType!=1){node=node.nextSibling}return node}if(axis==""){scope=(scope||MochiKit.DOM.currentDocument()).getElementsByTagName(this.params.tagName||"*")}else{if(axis==">"){if(!scope){throw"> combinator not allowed without preceeding expression"}scope=MochiKit.Base.filter(function(node){return node.nodeType==1},scope.childNodes)}else{if(axis=="+"){if(!scope){throw"+ combinator not allowed without preceeding expression"}scope=nextSiblingElement(scope)&&[nextSiblingElement(scope)]}else{if(axis=="~"){if(!scope){throw"~ combinator not allowed without preceeding expression"}var newscope=[];while(nextSiblingElement(scope)){scope=nextSiblingElement(scope);newscope.push(scope)}scope=newscope}}}}if(!scope){return[]}var results=MochiKit.Base.filter(MochiKit.Base.bind(function(scopeElt){return this.match(scopeElt)},this),scope);return results},repr:function(){return"Selector("+this.expression+")"},toString:MochiKit.Base.forwardCall("repr")};MochiKit.Base.update(MochiKit.Selector,{findChildElements:function(element,expressions){var uniq=function(arr){var res=[];for(var i=0;i<arr.length;i++){if(MochiKit.Base.findIdentical(res,arr[i])<0){res.push(arr[i])}}return res};return MochiKit.Base.flattenArray(MochiKit.Base.map(function(expression){var nextScope="";var reducer=function(results,expr){if(match=expr.match(/^[>+~]$/)){nextScope=match[0];return results}else{var selector=new MochiKit.Selector.Selector(expr);var elements=MochiKit.Iter.reduce(function(elements,result){return MochiKit.Base.extend(elements,selector.findElements(result||element,nextScope))},results,[]);nextScope="";return elements}};var exprs=expression.replace(/(^\s+|\s+$)/g,"").split(/\s+/);return uniq(MochiKit.Iter.reduce(reducer,exprs,[null]))},expressions))},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);MochiKit.Base._deps("Color",["Base","DOM","Style"]);MochiKit.Color.NAME="MochiKit.Color";MochiKit.Color.VERSION="1.5";MochiKit.Color.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]"};MochiKit.Color.toString=function(){return this.__repr__()};MochiKit.Color.Color=function(red,green,blue,alpha){if(typeof(alpha)=="undefined"||alpha===null){alpha=1}this.rgb={r:red,g:green,b:blue,a:alpha}};MochiKit.Color.Color.prototype={__class__:MochiKit.Color.Color,colorWithAlpha:function(alpha){var rgb=this.rgb;var m=MochiKit.Color;return m.Color.fromRGB(rgb.r,rgb.g,rgb.b,alpha)},colorWithHue:function(hue){var hsl=this.asHSL();hsl.h=hue;var m=MochiKit.Color;return m.Color.fromHSL(hsl)},colorWithSaturation:function(saturation){var hsl=this.asHSL();hsl.s=saturation;var m=MochiKit.Color;return m.Color.fromHSL(hsl)},colorWithLightness:function(lightness){var hsl=this.asHSL();hsl.l=lightness;var m=MochiKit.Color;return m.Color.fromHSL(hsl)},darkerColorWithLevel:function(level){var hsl=this.asHSL();hsl.l=Math.max(hsl.l-level,0);var m=MochiKit.Color;return m.Color.fromHSL(hsl)},lighterColorWithLevel:function(level){var hsl=this.asHSL();hsl.l=Math.min(hsl.l+level,1);var m=MochiKit.Color;return m.Color.fromHSL(hsl)},blendedColor:function(other,fraction){if(typeof(fraction)=="undefined"||fraction===null){fraction=0.5}var sf=1-fraction;var s=this.rgb;var d=other.rgb;var df=fraction;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(other){var a=this.asRGB();var b=other.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>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>=1){a=1;rval="hsl("+mid+")"}else{if(a<=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,green,blue,alpha){var Color=MochiKit.Color.Color;if(arguments.length==1){var rgb=red;red=rgb.r;green=rgb.g;blue=rgb.b;if(typeof(rgb.a)=="undefined"){alpha=undefined}else{alpha=rgb.a}}return new Color(red,green,blue,alpha)},fromHSL:function(hue,saturation,lightness,alpha){var m=MochiKit.Color;return m.Color.fromRGB(m.hslToRGB.apply(m,arguments))},fromHSV:function(hue,saturation,value,alpha){var m=MochiKit.Color;return m.Color.fromRGB(m.hsvToRGB.apply(m,arguments))},fromName:function(name){var Color=MochiKit.Color.Color;if(name.charAt(0)=='"'){name=name.substr(1,name.length-2)}var htmlColor=Color._namedColors[name.toLowerCase()];if(typeof(htmlColor)=="string"){return Color.fromHexString(htmlColor)}else{if(name=="transparent"){return Color.transparentColor()}}return null},fromString:function(colorString){var self=MochiKit.Color.Color;var three=colorString.substr(0,3);if(three=="rgb"){return self.fromRGBString(colorString)}else{if(three=="hsl"){return self.fromHSLString(colorString)}else{if(colorString.charAt(0)=="#"){return self.fromHexString(colorString)}}}return self.fromName(colorString)},fromHexString:function(hexCode){if(hexCode.charAt(0)=="#"){hexCode=hexCode.substring(1)}var components=[];var i,hex;if(hexCode.length==3){for(i=0;i<3;i++){hex=hexCode.substr(i,1);components.push(parseInt(hex+hex,16)/255)}}else{for(i=0;i<6;i+=2){hex=hexCode.substr(i,2);components.push(parseInt(hex,16)/255)}}var Color=MochiKit.Color.Color;return Color.fromRGB.apply(Color,components)},_fromColorString:function(pre,method,scales,colorCode){if(colorCode.indexOf(pre)===0){colorCode=colorCode.substring(colorCode.indexOf("(",3)+1,colorCode.length-1)}var colorChunks=colorCode.split(/\s*,\s*/);var colorFloats=[];for(var i=0;i<colorChunks.length;i++){var c=colorChunks[i];var val;var three=c.substring(c.length-3);if(c.charAt(c.length-1)=="%"){val=0.01*parseFloat(c.substring(0,c.length-1))}else{if(three=="deg"){val=parseFloat(c)/360}else{if(three=="rad"){val=parseFloat(c)/(Math.PI*2)}else{val=scales[i]*parseFloat(c)}}}colorFloats.push(val)}return this[method].apply(this,colorFloats)},fromComputedStyle:function(elem,style){var d=MochiKit.DOM;var cls=MochiKit.Color.Color;for(elem=d.getElement(elem);elem;elem=elem.parentNode){var actualColor=MochiKit.Style.getStyle.apply(d,arguments);if(!actualColor){continue}var color=cls.fromString(actualColor);if(!color){break}if(color.asRGB().a>0){return color}}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,scale){v*=scale;if(v<0){return 0}else{if(v>scale){return scale}else{return v}}},_hslValue:function(n1,n2,hue){if(hue>6){hue-=6}else{if(hue<0){hue+=6}}var val;if(hue<1){val=n1+(n2-n1)*hue}else{if(hue<3){val=n2}else{if(hue<4){val=n1+(n2-n1)*(4-hue)}else{val=n1}}}return val},hsvToRGB:function(hue,saturation,value,alpha){if(arguments.length==1){var hsv=hue;hue=hsv.h;saturation=hsv.s;value=hsv.v;alpha=hsv.a}var red;var green;var blue;if(saturation===0){red=value;green=value;blue=value}else{var i=Math.floor(hue*6);var f=(hue*6)-i;var p=value*(1-saturation);var q=value*(1-(saturation*f));var t=value*(1-(saturation*(1-f)));switch(i){case 1:red=q;green=value;blue=p;break;case 2:red=p;green=value;blue=t;break;case 3:red=p;green=q;blue=value;break;case 4:red=t;green=p;blue=value;break;case 5:red=value;green=p;blue=q;break;case 6:case 0:red=value;green=t;blue=p;break}}return{r:red,g:green,b:blue,a:alpha}},hslToRGB:function(hue,saturation,lightness,alpha){if(arguments.length==1){var hsl=hue;hue=hsl.h;saturation=hsl.s;lightness=hsl.l;alpha=hsl.a}var red;var green;var blue;if(saturation===0){red=lightness;green=lightness;blue=lightness}else{var m2;if(lightness<=0.5){m2=lightness*(1+saturation)}else{m2=lightness+saturation-(lightness*saturation)}var m1=(2*lightness)-m2;var f=MochiKit.Color._hslValue;var h6=hue*6;red=f(m1,m2,h6+2);green=f(m1,m2,h6);blue=f(m1,m2,h6-2)}return{r:red,g:green,b:blue,a:alpha}},rgbToHSV:function(red,green,blue,alpha){if(arguments.length==1){var rgb=red;red=rgb.r;green=rgb.g;blue=rgb.b;alpha=rgb.a}var max=Math.max(Math.max(red,green),blue);var min=Math.min(Math.min(red,green),blue);var hue;var saturation;var value=max;if(min==max){hue=0;saturation=0}else{var delta=(max-min);saturation=delta/max;if(red==max){hue=(green-blue)/delta}else{if(green==max){hue=2+((blue-red)/delta)}else{hue=4+((red-green)/delta)}}hue/=6;if(hue<0){hue+=1}if(hue>1){hue-=1}}return{h:hue,s:saturation,v:value,a:alpha}},rgbToHSL:function(red,green,blue,alpha){if(arguments.length==1){var rgb=red;red=rgb.r;green=rgb.g;blue=rgb.b;alpha=rgb.a}var max=Math.max(red,Math.max(green,blue));var min=Math.min(red,Math.min(green,blue));var hue;var saturation;var lightness=(max+min)/2;var delta=max-min;if(delta===0){hue=0;saturation=0}else{if(lightness<=0.5){saturation=delta/(max+min)}else{saturation=delta/(2-max-min)}if(red==max){hue=(green-blue)/delta}else{if(green==max){hue=2+((blue-red)/delta)}else{hue=4+((red-green)/delta)}}hue/=6;if(hue<0){hue+=1}if(hue>1){hue-=1}}return{h:hue,s:saturation,l:lightness,a:alpha}},toColorPart:function(num){num=Math.round(num);var digits=num.toString(16);if(num<16){return"0"+digits}return digits},__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 third=1/3;var colors={black:[0,0,0],blue:[0,0,1],brown:[0.6,0.4,0.2],cyan:[0,1,1],darkGray:[third,third,third],gray:[0.5,0.5,0.5],green:[0,1,0],lightGray:[2*third,2*third,2*third],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 makeColor=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 colors){var name=k+"Color";var bindArgs=m.concat([makeColor,this.Color,name],colors[k]);this.Color[name]=m.bind.apply(null,bindArgs)}var isColor=function(){for(var i=0;i<arguments.length;i++){if(!(arguments[i] instanceof MochiKit.Color.Color)){return false}}return true};var compareColor=function(a,b){return a.compareRGB(b)};m.nameFunctions(this);m.registerComparator(this.Color.NAME,isColor,compareColor);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"};MochiKit.Base._deps("Position",["Base","DOM","Style"]);MochiKit.Position.NAME="MochiKit.Position";MochiKit.Position.VERSION="1.5";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 deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;var deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;this.windowOffset=new MochiKit.Style.Coordinates(deltaX,deltaY)},cumulativeOffset:function(element){var valueT=0;var valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent}while(element);return new MochiKit.Style.Coordinates(valueL,valueT)},realOffset:function(element){var valueT=0;var valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode}while(element);return new MochiKit.Style.Coordinates(valueL,valueT)},within:function(element,x,y){if(this.includeScrollOffsets){return this.withinIncludingScrolloffsets(element,x,y)}this.xcomp=x;this.ycomp=y;this.offset=this.cumulativeOffset(element);if(element.style.position=="fixed"){this.offset.x+=this.windowOffset.x;this.offset.y+=this.windowOffset.y}return(y>=this.offset.y&&y<this.offset.y+element.offsetHeight&&x>=this.offset.x&&x<this.offset.x+element.offsetWidth)},withinIncludingScrolloffsets:function(element,x,y){var offsetcache=this.realOffset(element);this.xcomp=x+offsetcache.x-this.windowOffset.x;this.ycomp=y+offsetcache.y-this.windowOffset.y;this.offset=this.cumulativeOffset(element);return(this.ycomp>=this.offset.y&&this.ycomp<this.offset.y+element.offsetHeight&&this.xcomp>=this.offset.x&&this.xcomp<this.offset.x+element.offsetWidth)},overlap:function(mode,element){if(!mode){return 0}if(mode=="vertical"){return((this.offset.y+element.offsetHeight)-this.ycomp)/element.offsetHeight}if(mode=="horizontal"){return((this.offset.x+element.offsetWidth)-this.xcomp)/element.offsetWidth}},absolutize:function(element){element=MochiKit.DOM.getElement(element);if(element.style.position=="absolute"){return}MochiKit.Position.prepare();var offsets=MochiKit.Position.positionedOffset(element);var width=element.clientWidth;var height=element.clientHeight;var oldStyle={position:element.style.position,left:offsets.x-parseFloat(element.style.left||0),top:offsets.y-parseFloat(element.style.top||0),width:element.style.width,height:element.style.height};element.style.position="absolute";element.style.top=offsets.y+"px";element.style.left=offsets.x+"px";element.style.width=width+"px";element.style.height=height+"px";return oldStyle},positionedOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){p=MochiKit.Style.getStyle(element,"position");if(p=="relative"||p=="absolute"){break}}}while(element);return new MochiKit.Style.Coordinates(valueL,valueT)},relativize:function(element,oldPos){element=MochiKit.DOM.getElement(element);if(element.style.position=="relative"){return}MochiKit.Position.prepare();var top=parseFloat(element.style.top||0)-(oldPos.top||0);var left=parseFloat(element.style.left||0)-(oldPos.left||0);element.style.position=oldPos.position;element.style.top=top+"px";element.style.left=left+"px";element.style.width=oldPos.width;element.style.height=oldPos.height},clone:function(source,target){source=MochiKit.DOM.getElement(source);target=MochiKit.DOM.getElement(target);target.style.position="absolute";var offsets=this.cumulativeOffset(source);target.style.top=offsets.y+"px";target.style.left=offsets.x+"px";target.style.width=source.offsetWidth+"px";target.style.height=source.offsetHeight+"px"},page:function(forElement){var valueT=0;var valueL=0;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body&&MochiKit.Style.getStyle(element,"position")=="absolute"){break}}while(element=element.offsetParent);element=forElement;do{valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0}while(element=element.parentNode);return new MochiKit.Style.Coordinates(valueL,valueT)}});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);MochiKit.Base._exportSymbols(this,MochiKit.Position);MochiKit.Base._deps("Visual",["Base","DOM","Style","Color","Position"]);MochiKit.Visual.NAME="MochiKit.Visual";MochiKit.Visual.VERSION="1.5";MochiKit.Visual.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]"};MochiKit.Visual.toString=function(){return this.__repr__()};MochiKit.Visual._RoundCorners=function(e,options){e=MochiKit.DOM.getElement(e);this._setOptions(options);if(this.options.__unstable__wrapElement){e=this._doWrap(e)}var color=this.options.color;var C=MochiKit.Color.Color;if(this.options.color==="fromElement"){color=C.fromBackground(e)}else{if(!(color instanceof C)){color=C.fromString(color)}}this.isTransparent=(color.asRGB().a<=0);var bgColor=this.options.bgColor;if(this.options.bgColor==="fromParent"){bgColor=C.fromBackground(e.offsetParent)}else{if(!(bgColor instanceof C)){bgColor=C.fromString(bgColor)}}this._roundCornersImpl(e,color,bgColor)};MochiKit.Visual._RoundCorners.prototype={_doWrap:function(e){var parent=e.parentNode;var doc=MochiKit.DOM.currentDocument();if(typeof(doc.defaultView)==="undefined"||doc.defaultView===null){return e}var style=doc.defaultView.getComputedStyle(e,null);if(typeof(style)==="undefined"||style===null){return e}var wrapper=MochiKit.DOM.DIV({style:{display:"block",marginTop:style.getPropertyValue("padding-top"),marginRight:style.getPropertyValue("padding-right"),marginBottom:style.getPropertyValue("padding-bottom"),marginLeft:style.getPropertyValue("padding-left"),padding:"0px"}});wrapper.innerHTML=e.innerHTML;e.innerHTML="";e.appendChild(wrapper);return e},_roundCornersImpl:function(e,color,bgColor){if(this.options.border){this._renderBorder(e,bgColor)}if(this._isTopRounded()){this._roundTopCorners(e,color,bgColor)}if(this._isBottomRounded()){this._roundBottomCorners(e,color,bgColor)}},_renderBorder:function(el,bgColor){var borderValue="1px solid "+this._borderColor(bgColor);var borderL="border-left: "+borderValue;var borderR="border-right: "+borderValue;var style="style='"+borderL+";"+borderR+"'";el.innerHTML="<div "+style+">"+el.innerHTML+"</div>"},_roundTopCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=0;i<this.options.numSlices;i++){corner.appendChild(this._createCornerSlice(color,bgColor,i,"top"))}el.style.paddingTop=0;el.insertBefore(corner,el.firstChild)},_roundBottomCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=(this.options.numSlices-1);i>=0;i--){corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"))}el.style.paddingBottom=0;el.appendChild(corner)},_createCorner:function(bgColor){var dom=MochiKit.DOM;return dom.DIV({style:{backgroundColor:bgColor.toString()}})},_createCornerSlice:function(color,bgColor,n,position){var slice=MochiKit.DOM.SPAN();var inStyle=slice.style;inStyle.backgroundColor=color.toString();inStyle.display="block";inStyle.height="1px";inStyle.overflow="hidden";inStyle.fontSize="1px";var borderColor=this._borderColor(color,bgColor);if(this.options.border&&n===0){inStyle.borderTopStyle="solid";inStyle.borderTopWidth="1px";inStyle.borderLeftWidth="0px";inStyle.borderRightWidth="0px";inStyle.borderBottomWidth="0px";inStyle.height="0px";inStyle.borderColor=borderColor.toString()}else{if(borderColor){inStyle.borderColor=borderColor.toString();inStyle.borderStyle="solid";inStyle.borderWidth="0px 1px"}}if(!this.options.compact&&(n==(this.options.numSlices-1))){inStyle.height="2px"}this._setMargin(slice,n,position);this._setBorder(slice,n,position);return slice},_setOptions:function(options){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false,__unstable__wrapElement:false};MochiKit.Base.update(this.options,options);this.options.numSlices=(this.options.compact?2:4)},_whichSideTop:function(){var corners=this.options.corners;if(this._hasString(corners,"all","top")){return""}var has_tl=(corners.indexOf("tl")!=-1);var has_tr=(corners.indexOf("tr")!=-1);if(has_tl&&has_tr){return""}if(has_tl){return"left"}if(has_tr){return"right"}return""},_whichSideBottom:function(){var corners=this.options.corners;if(this._hasString(corners,"all","bottom")){return""}var has_bl=(corners.indexOf("bl")!=-1);var has_br=(corners.indexOf("br")!=-1);if(has_bl&&has_br){return""}if(has_bl){return"left"}if(has_br){return"right"}return""},_borderColor:function(color,bgColor){if(color=="transparent"){return bgColor}else{if(this.options.border){return this.options.border}else{if(this.options.blend){return bgColor.blendedColor(color)}}}return""},_setMargin:function(el,n,corners){var marginSize=this._marginSize(n)+"px";var whichSide=(corners=="top"?this._whichSideTop():this._whichSideBottom());var style=el.style;if(whichSide=="left"){style.marginLeft=marginSize;style.marginRight="0px"}else{if(whichSide=="right"){style.marginRight=marginSize;style.marginLeft="0px"}else{style.marginLeft=marginSize;style.marginRight=marginSize}}},_setBorder:function(el,n,corners){var borderSize=this._borderSize(n)+"px";var whichSide=(corners=="top"?this._whichSideTop():this._whichSideBottom());var style=el.style;if(whichSide=="left"){style.borderLeftWidth=borderSize;style.borderRightWidth="0px"}else{if(whichSide=="right"){style.borderRightWidth=borderSize;style.borderLeftWidth="0px"}else{style.borderLeftWidth=borderSize;style.borderRightWidth=borderSize}}},_marginSize:function(n){if(this.isTransparent){return 0}var o=this.options;if(o.compact&&o.blend){var smBlendedMarginSizes=[1,0];return smBlendedMarginSizes[n]}else{if(o.compact){var compactMarginSizes=[2,1];return compactMarginSizes[n]}else{if(o.blend){var blendedMarginSizes=[3,2,1,0];return blendedMarginSizes[n]}else{var marginSizes=[5,3,2,1];return marginSizes[n]}}}},_borderSize:function(n){var o=this.options;var borderSizes;if(o.compact&&(o.blend||this.isTransparent)){return 1}else{if(o.compact){borderSizes=[1,0]}else{if(o.blend){borderSizes=[2,1,1,1]}else{if(o.border){borderSizes=[0,2,0,0]}else{if(this.isTransparent){borderSizes=[5,3,2,1]}else{return 0}}}}}return borderSizes[n]},_hasString:function(str){for(var i=1;i<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&&el.childNodes[0].nodeType==3)}};MochiKit.Visual.roundElement=function(e,options){new MochiKit.Visual._RoundCorners(e,options)};MochiKit.Visual.roundClass=function(tagName,className,options){var elements=MochiKit.DOM.getElementsByTagAndClassName(tagName,className);for(var i=0;i<elements.length;i++){MochiKit.Visual.roundElement(elements[i],options)}};MochiKit.Visual.tagifyText=function(element,tagifyStyle){tagifyStyle=tagifyStyle||"position:relative";if(/MSIE/.test(navigator.userAgent)){tagifyStyle+=";zoom:1"}element=MochiKit.DOM.getElement(element);var ma=MochiKit.Base.map;ma(function(child){if(child.nodeType==3){ma(function(character){element.insertBefore(MochiKit.DOM.SPAN({style:tagifyStyle},character==" "?String.fromCharCode(160):character),child)},child.nodeValue.split(""));MochiKit.DOM.removeElement(child)}},element.childNodes)};MochiKit.Visual.forceRerendering=function(element){try{element=MochiKit.DOM.getElement(element);var n=document.createTextNode(" ");element.appendChild(n);element.removeChild(n)}catch(e){}};MochiKit.Visual.multiple=function(elements,effect,options){options=MochiKit.Base.update({speed:0.1,delay:0},options);var masterDelay=options.delay;var index=0;MochiKit.Base.map(function(innerelement){options.delay=index*options.speed+masterDelay;new effect(innerelement,options);index+=1},elements)};MochiKit.Visual.PAIRS={slide:["slideDown","slideUp"],blind:["blindDown","blindUp"],appear:["appear","fade"],size:["grow","shrink"]};MochiKit.Visual.toggle=function(element,effect,options){element=MochiKit.DOM.getElement(element);effect=(effect||"appear").toLowerCase();options=MochiKit.Base.update({queue:{position:"end",scope:(element.id||"global"),limit:1}},options);var v=MochiKit.Visual;v[MochiKit.Style.getStyle(element,"display")!="none"?v.PAIRS[effect][1]:v.PAIRS[effect][0]](element,options)};MochiKit.Visual.Transitions={};MochiKit.Visual.Transitions.linear=function(pos){return pos};MochiKit.Visual.Transitions.sinoidal=function(pos){return 0.5-Math.cos(pos*Math.PI)/2};MochiKit.Visual.Transitions.reverse=function(pos){return 1-pos};MochiKit.Visual.Transitions.flicker=function(pos){return 0.25-Math.cos(pos*Math.PI)/4+Math.random()/2};MochiKit.Visual.Transitions.wobble=function(pos){return 0.5-Math.cos(9*pos*Math.PI)/2};MochiKit.Visual.Transitions.pulse=function(pos,pulses){if(pulses){pos*=2*pulses}else{pos*=10}var decimals=pos-Math.floor(pos);return(Math.floor(pos)%2==0)?decimals:1-decimals};MochiKit.Visual.Transitions.parabolic=function(pos){return pos*pos};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(effect){var timestamp=new Date().getTime();var position=(typeof(effect.options.queue)=="string")?effect.options.queue:effect.options.queue.position;var ma=MochiKit.Base.map;switch(position){case"front":ma(function(e){if(e.state=="idle"){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn}},this.effects);break;case"end":var finish;ma(function(e){var i=e.finishOn;if(i>=(finish||i)){finish=i}},this.effects);timestamp=finish||timestamp;break;case"break":ma(function(e){e.finalize()},this.effects);break}effect.startOn+=timestamp;effect.finishOn+=timestamp;if(!effect.options.queue.limit||this.effects.length<effect.options.queue.limit){this.effects.push(effect)}if(!this.interval){this.interval=this.startLoop(MochiKit.Base.bind(this.loop,this),40)}},startLoop:function(func,interval){return setInterval(func,interval)},remove:function(effect){this.effects=MochiKit.Base.filter(function(e){return e!=effect},this.effects);if(!this.effects.length){this.stopLoop(this.interval);this.interval=null}},stopLoop:function(interval){clearInterval(interval)},loop:function(){var timePos=new Date().getTime();MochiKit.Base.map(function(effect){effect.loop(timePos)},this.effects)}});MochiKit.Visual.Queues={instances:{},get:function(queueName){if(typeof(queueName)!="string"){return queueName}if(!this.instances[queueName]){this.instances[queueName]=new MochiKit.Visual.ScopedQueue()}return this.instances[queueName]}};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(options){var v=MochiKit.Visual;this.options=MochiKit.Base.setdefault(options,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(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){return this.finalize()}var pos=(timePos-this.startOn)/(this.finishOn-this.startOn);var frame=Math.round(pos*this.options.fps*this.options.duration);if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame}}},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(position){},event:function(eventName){if(this.options[eventName+"Internal"]){this.options[eventName+"Internal"](this)}if(this.options[eventName]){this.options[eventName](this)}},repr:function(){return"["+this.__class__.NAME+", options:"+MochiKit.Base.repr(this.options)+"]"}};MochiKit.Visual.Parallel=function(effects,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(effects,options)}this.__init__(effects,options)};MochiKit.Visual.Parallel.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Parallel.prototype,{__class__:MochiKit.Visual.Parallel,__init__:function(effects,options){this.effects=effects||[];this.start(options)},update:function(position){MochiKit.Base.map(function(effect){effect.render(position)},this.effects)},finish:function(){MochiKit.Base.map(function(effect){effect.finalize()},this.effects)}});MochiKit.Visual.Sequence=function(effects,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(effects,options)}this.__init__(effects,options)};MochiKit.Visual.Sequence.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Sequence.prototype,{__class__:MochiKit.Visual.Sequence,__init__:function(effects,options){var defs={transition:MochiKit.Visual.Transitions.linear,duration:0};this.effects=effects||[];MochiKit.Base.map(function(effect){defs.duration+=effect.options.duration},this.effects);MochiKit.Base.setdefault(options,defs);this.start(options)},update:function(position){var time=position*this.options.duration;for(var i=0;i<this.effects.length;i++){var effect=this.effects[i];if(time<=effect.options.duration){effect.render(time/effect.options.duration);break}else{time-=effect.options.duration}}},finish:function(){MochiKit.Base.map(function(effect){effect.finalize()},this.effects)}});MochiKit.Visual.Opacity=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options)}this.__init__(element,options)};MochiKit.Visual.Opacity.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Opacity.prototype,{__class__:MochiKit.Visual.Opacity,__init__:function(element,options){var b=MochiKit.Base;var s=MochiKit.Style;this.element=MochiKit.DOM.getElement(element);if(this.element.currentStyle&&(!this.element.currentStyle.hasLayout)){s.setStyle(this.element,{zoom:1})}options=b.update({from:s.getStyle(this.element,"opacity")||0,to:1},options);this.start(options)},update:function(position){MochiKit.Style.setStyle(this.element,{opacity:position})}});MochiKit.Visual.Move=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options)}this.__init__(element,options)};MochiKit.Visual.Move.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Move.prototype,{__class__:MochiKit.Visual.Move,__init__:function(element,options){this.element=MochiKit.DOM.getElement(element);options=MochiKit.Base.update({x:0,y:0,mode:"relative"},options);this.start(options)},setup:function(){MochiKit.Style.makePositioned(this.element);var s=this.element.style;var originalVisibility=s.visibility;var originalDisplay=s.display;if(originalDisplay=="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(originalDisplay=="none"){s.visibility=originalVisibility;s.display=originalDisplay}},update:function(position){MochiKit.Style.setStyle(this.element,{left:Math.round(this.options.x*position+this.originalLeft)+"px",top:Math.round(this.options.y*position+this.originalTop)+"px"})}});MochiKit.Visual.Scale=function(element,percent,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,percent,options)}this.__init__(element,percent,options)};MochiKit.Visual.Scale.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Scale.prototype,{__class__:MochiKit.Visual.Scale,__init__:function(element,percent,options){this.element=MochiKit.DOM.getElement(element);options=MochiKit.Base.update({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:percent},options);this.start(options)},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 fontSize=MochiKit.Style.getStyle(this.element,"font-size")||"100%";ma(b(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType}},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(position){var currentScale=(this.options.scaleFrom/100)+(this.factor*position);if(this.options.scaleContent&&this.fontSize){MochiKit.Style.setStyle(this.element,{fontSize:this.fontSize*currentScale+this.fontSizeType})}this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale)},finish:function(){if(this.restoreAfterFinish){MochiKit.Style.setStyle(this.element,this.originalStyle)}},setDimensions:function(height,width){var d={};var r=Math.round;if(/MSIE/.test(navigator.userAgent)){r=Math.ceil}if(this.options.scaleX){d.width=r(width)+"px"}if(this.options.scaleY){d.height=r(height)+"px"}if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-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-leftd+"px"}}else{if(this.options.scaleY){d.top=-topd+"px"}if(this.options.scaleX){d.left=-leftd+"px"}}}MochiKit.Style.setStyle(this.element,d)}});MochiKit.Visual.Highlight=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options)}this.__init__(element,options)};MochiKit.Visual.Highlight.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Highlight.prototype,{__class__:MochiKit.Visual.Highlight,__init__:function(element,options){this.element=MochiKit.DOM.getElement(element);options=MochiKit.Base.update({startcolor:"#ffff99"},options);this.start(options)},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(position){var m="#";MochiKit.Base.map(MochiKit.Base.bind(function(i){m+=MochiKit.Color.toColorPart(Math.round(this._base[i]+this._delta[i]*position))},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(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options)}this.__init__(element,options)};MochiKit.Visual.ScrollTo.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.ScrollTo.prototype,{__class__:MochiKit.Visual.ScrollTo,__init__:function(element,options){this.element=MochiKit.DOM.getElement(element);this.start(options)},setup:function(){var p=MochiKit.Position;p.prepare();var offsets=p.cumulativeOffset(this.element);if(this.options.offset){offsets.y+=this.options.offset}var max;if(window.innerHeight){max=window.innerHeight-window.height}else{if(document.documentElement&&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=(offsets.y>max?max:offsets.y)-this.scrollStart},update:function(position){var p=MochiKit.Position;p.prepare();window.scrollTo(p.windowOffset.x,this.scrollStart+(position*this.delta))}});MochiKit.Visual.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;MochiKit.Visual.Morph=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options)}this.__init__(element,options)};MochiKit.Visual.Morph.prototype=new MochiKit.Visual.Base();MochiKit.Base.update(MochiKit.Visual.Morph.prototype,{__class__:MochiKit.Visual.Morph,__init__:function(element,options){this.element=MochiKit.DOM.getElement(element);this.start(options)},setup:function(){var b=MochiKit.Base;var style=this.options.style;this.styleStart={};this.styleEnd={};this.units={};var value,unit;for(var s in style){value=style[s];s=b.camelize(s);if(MochiKit.Visual.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);unit=(components.length==3)?components[2]:null;this.styleEnd[s]=value;this.units[s]=unit;value=MochiKit.Style.getStyle(this.element,s);components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);this.styleStart[s]=value}else{if(/[Cc]olor$/.test(s)){var c=MochiKit.Color.Color;value=c.fromString(value);if(value){this.units[s]="color";this.styleEnd[s]=value.toHexString();value=MochiKit.Style.getStyle(this.element,s);this.styleStart[s]=c.fromString(value).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])}}else{this.element.style[s]=value}}}},update:function(position){var value;for(var s in this.styleStart){if(this.units[s]=="color"){var m="#";var start=this.styleStart[s];var end=this.styleEnd[s];MochiKit.Base.map(MochiKit.Base.bind(function(i){m+=MochiKit.Color.toColorPart(Math.round(start[i]+(end[i]-start[i])*position))},this),[0,1,2]);this.element.style[s]=m}else{value=this.styleStart[s]+Math.round((this.styleEnd[s]-this.styleStart[s])*position*1000)/1000+this.units[s];this.element.style[s]=value}}}});MochiKit.Visual.fade=function(element,options){var s=MochiKit.Style;var oldOpacity=s.getStyle(element,"opacity");options=MochiKit.Base.update({from:s.getStyle(element,"opacity")||1,to:0,afterFinishInternal:function(effect){if(effect.options.to!==0){return}s.hideElement(effect.element);s.setStyle(effect.element,{opacity:oldOpacity})}},options);return new MochiKit.Visual.Opacity(element,options)};MochiKit.Visual.appear=function(element,options){var s=MochiKit.Style;var v=MochiKit.Visual;options=MochiKit.Base.update({from:(s.getStyle(element,"display")=="none"?0:s.getStyle(element,"opacity")||0),to:1,afterFinishInternal:function(effect){v.forceRerendering(effect.element)},beforeSetupInternal:function(effect){s.setStyle(effect.element,{opacity:effect.options.from});s.showElement(effect.element)}},options);return new v.Opacity(element,options)};MochiKit.Visual.puff=function(element,options){var s=MochiKit.Style;var v=MochiKit.Visual;element=MochiKit.DOM.getElement(element);var elementDimensions=MochiKit.Style.getElementDimensions(element,true);var oldStyle={position:s.getStyle(element,"position"),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height,opacity:s.getStyle(element,"opacity")};options=MochiKit.Base.update({beforeSetupInternal:function(effect){MochiKit.Position.absolutize(effect.effects[0].element)},afterFinishInternal:function(effect){s.hideElement(effect.effects[0].element);s.setStyle(effect.effects[0].element,oldStyle)},scaleContent:true,scaleFromCenter:true},options);return new v.Parallel([new v.Scale(element,200,{sync:true,scaleFromCenter:options.scaleFromCenter,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},scaleContent:options.scaleContent,restoreAfterFinish:true}),new v.Opacity(element,{sync:true,to:0})],options)};MochiKit.Visual.blindUp=function(element,options){var d=MochiKit.DOM;var s=MochiKit.Style;element=d.getElement(element);var elementDimensions=s.getElementDimensions(element,true);var elemClip=s.makeClipping(element);options=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},restoreAfterFinish:true,afterFinishInternal:function(effect){s.hideElement(effect.element);s.undoClipping(effect.element,elemClip)}},options);return new MochiKit.Visual.Scale(element,0,options)};MochiKit.Visual.blindDown=function(element,options){var d=MochiKit.DOM;var s=MochiKit.Style;element=d.getElement(element);var elementDimensions=s.getElementDimensions(element,true);var elemClip;options=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},restoreAfterFinish:true,afterSetupInternal:function(effect){elemClip=s.makeClipping(effect.element);s.setStyle(effect.element,{height:"0px"});s.showElement(effect.element)},afterFinishInternal:function(effect){s.undoClipping(effect.element,elemClip)}},options);return new MochiKit.Visual.Scale(element,100,options)};MochiKit.Visual.switchOff=function(element,options){var d=MochiKit.DOM;var s=MochiKit.Style;element=d.getElement(element);var elementDimensions=s.getElementDimensions(element,true);var oldOpacity=s.getStyle(element,"opacity");var elemClip;options=MochiKit.Base.update({duration:0.7,restoreAfterFinish:true,beforeSetupInternal:function(effect){s.makePositioned(element);elemClip=s.makeClipping(element)},afterFinishInternal:function(effect){s.hideElement(element);s.undoClipping(element,elemClip);s.undoPositioned(element);s.setStyle(element,{opacity:oldOpacity})}},options);var v=MochiKit.Visual;return new v.Sequence([new v.appear(element,{sync:true,duration:0.57*options.duration,from:0,transition:v.Transitions.flicker}),new v.Scale(element,1,{sync:true,duration:0.43*options.duration,scaleFromCenter:true,scaleX:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},scaleContent:false,restoreAfterFinish:true})],options)};MochiKit.Visual.dropOut=function(element,options){var d=MochiKit.DOM;var s=MochiKit.Style;element=d.getElement(element);var oldStyle={top:s.getStyle(element,"top"),left:s.getStyle(element,"left"),opacity:s.getStyle(element,"opacity")};options=MochiKit.Base.update({duration:0.5,distance:100,beforeSetupInternal:function(effect){s.makePositioned(effect.effects[0].element)},afterFinishInternal:function(effect){s.hideElement(effect.effects[0].element);s.undoPositioned(effect.effects[0].element);s.setStyle(effect.effects[0].element,oldStyle)}},options);var v=MochiKit.Visual;return new v.Parallel([new v.Move(element,{x:0,y:options.distance,sync:true}),new v.Opacity(element,{sync:true,to:0})],options)};MochiKit.Visual.shake=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var s=MochiKit.Style;element=d.getElement(element);var oldStyle={top:s.getStyle(element,"top"),left:s.getStyle(element,"left")};options=MochiKit.Base.update({duration:0.5,afterFinishInternal:function(effect){s.undoPositioned(element);s.setStyle(element,oldStyle)}},options);return new v.Sequence([new v.Move(element,{sync:true,duration:0.1*options.duration,x:20,y:0}),new v.Move(element,{sync:true,duration:0.2*options.duration,x:-40,y:0}),new v.Move(element,{sync:true,duration:0.2*options.duration,x:40,y:0}),new v.Move(element,{sync:true,duration:0.2*options.duration,x:-40,y:0}),new v.Move(element,{sync:true,duration:0.2*options.duration,x:40,y:0}),new v.Move(element,{sync:true,duration:0.1*options.duration,x:-20,y:0})],options)};MochiKit.Visual.slideDown=function(element,options){var d=MochiKit.DOM;var b=MochiKit.Base;var s=MochiKit.Style;element=d.getElement(element);if(!element.firstChild){throw new Error("MochiKit.Visual.slideDown must be used on a element with a child")}d.removeEmptyTextNodes(element);var oldInnerBottom=s.getStyle(element.firstChild,"bottom")||0;var elementDimensions=s.getElementDimensions(element,true);var elemClip;options=b.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},restoreAfterFinish:true,afterSetupInternal:function(effect){s.makePositioned(effect.element);s.makePositioned(effect.element.firstChild);if(/Opera/.test(navigator.userAgent)){s.setStyle(effect.element,{top:""})}elemClip=s.makeClipping(effect.element);s.setStyle(effect.element,{height:"0px"});s.showElement(effect.element)},afterUpdateInternal:function(effect){var elementDimensions=s.getElementDimensions(effect.element,true);s.setStyle(effect.element.firstChild,{bottom:(effect.dims[0]-elementDimensions.h)+"px"})},afterFinishInternal:function(effect){s.undoClipping(effect.element,elemClip);if(/MSIE/.test(navigator.userAgent)){s.undoPositioned(effect.element);s.undoPositioned(effect.element.firstChild)}else{s.undoPositioned(effect.element.firstChild);s.undoPositioned(effect.element)}s.setStyle(effect.element.firstChild,{bottom:oldInnerBottom})}},options);return new MochiKit.Visual.Scale(element,100,options)};MochiKit.Visual.slideUp=function(element,options){var d=MochiKit.DOM;var b=MochiKit.Base;var s=MochiKit.Style;element=d.getElement(element);if(!element.firstChild){throw new Error("MochiKit.Visual.slideUp must be used on a element with a child")}d.removeEmptyTextNodes(element);var oldInnerBottom=s.getStyle(element.firstChild,"bottom");var elementDimensions=s.getElementDimensions(element,true);var elemClip;options=b.update({scaleContent:false,scaleX:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(effect){s.makePositioned(effect.element);s.makePositioned(effect.element.firstChild);if(/Opera/.test(navigator.userAgent)){s.setStyle(effect.element,{top:""})}elemClip=s.makeClipping(effect.element);s.showElement(effect.element)},afterUpdateInternal:function(effect){var elementDimensions=s.getElementDimensions(effect.element,true);s.setStyle(effect.element.firstChild,{bottom:(effect.dims[0]-elementDimensions.h)+"px"})},afterFinishInternal:function(effect){s.hideElement(effect.element);s.undoClipping(effect.element,elemClip);s.undoPositioned(effect.element.firstChild);s.undoPositioned(effect.element);s.setStyle(effect.element.firstChild,{bottom:oldInnerBottom})}},options);return new MochiKit.Visual.Scale(element,0,options)};MochiKit.Visual.squish=function(element,options){var d=MochiKit.DOM;var b=MochiKit.Base;var s=MochiKit.Style;var elementDimensions=s.getElementDimensions(element,true);var elemClip;options=b.update({restoreAfterFinish:true,scaleMode:{originalHeight:elementDimensions.w,originalWidth:elementDimensions.h},beforeSetupInternal:function(effect){elemClip=s.makeClipping(effect.element)},afterFinishInternal:function(effect){s.hideElement(effect.element);s.undoClipping(effect.element,elemClip)}},options);return new MochiKit.Visual.Scale(element,/Opera/.test(navigator.userAgent)?1:0,options)};MochiKit.Visual.grow=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var s=MochiKit.Style;element=d.getElement(element);options=MochiKit.Base.update({direction:"center",moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.full,scaleContent:true,scaleFromCenter:false},options);var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:s.getStyle(element,"opacity")};var dims=s.getElementDimensions(element,true);var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case"top-left":initialMoveX=initialMoveY=moveX=moveY=0;break;case"top-right":initialMoveX=dims.w;initialMoveY=moveY=0;moveX=-dims.w;break;case"bottom-left":initialMoveX=moveX=0;initialMoveY=dims.h;moveY=-dims.h;break;case"bottom-right":initialMoveX=dims.w;initialMoveY=dims.h;moveX=-dims.w;moveY=-dims.h;break;case"center":initialMoveX=dims.w/2;initialMoveY=dims.h/2;moveX=-dims.w/2;moveY=-dims.h/2;break}var optionsParallel=MochiKit.Base.update({beforeSetupInternal:function(effect){s.setStyle(effect.effects[0].element,{height:"0px"});s.showElement(effect.effects[0].element)},afterFinishInternal:function(effect){s.undoClipping(effect.effects[0].element);s.undoPositioned(effect.effects[0].element);s.setStyle(effect.effects[0].element,oldStyle)}},options);return new v.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetupInternal:function(effect){s.hideElement(effect.element);s.makeClipping(effect.element);s.makePositioned(effect.element)},afterFinishInternal:function(effect){new v.Parallel([new v.Opacity(effect.element,{sync:true,to:1,from:0,transition:options.opacityTransition}),new v.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new v.Scale(effect.element,100,{scaleMode:{originalHeight:dims.h,originalWidth:dims.w},sync:true,scaleFrom:/Opera/.test(navigator.userAgent)?1:0,transition:options.scaleTransition,scaleContent:options.scaleContent,scaleFromCenter:options.scaleFromCenter,restoreAfterFinish:true})],optionsParallel)}})};MochiKit.Visual.shrink=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var s=MochiKit.Style;element=d.getElement(element);options=MochiKit.Base.update({direction:"center",moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.none,scaleContent:true,scaleFromCenter:false},options);var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:s.getStyle(element,"opacity")};var dims=s.getElementDimensions(element,true);var moveX,moveY;switch(options.direction){case"top-left":moveX=moveY=0;break;case"top-right":moveX=dims.w;moveY=0;break;case"bottom-left":moveX=0;moveY=dims.h;break;case"bottom-right":moveX=dims.w;moveY=dims.h;break;case"center":moveX=dims.w/2;moveY=dims.h/2;break}var elemClip;var optionsParallel=MochiKit.Base.update({beforeStartInternal:function(effect){s.makePositioned(effect.effects[0].element);elemClip=s.makeClipping(effect.effects[0].element)},afterFinishInternal:function(effect){s.hideElement(effect.effects[0].element);s.undoClipping(effect.effects[0].element,elemClip);s.undoPositioned(effect.effects[0].element);s.setStyle(effect.effects[0].element,oldStyle)}},options);return new v.Parallel([new v.Opacity(element,{sync:true,to:0,from:1,transition:options.opacityTransition}),new v.Scale(element,/Opera/.test(navigator.userAgent)?1:0,{scaleMode:{originalHeight:dims.h,originalWidth:dims.w},sync:true,transition:options.scaleTransition,scaleContent:options.scaleContent,scaleFromCenter:options.scaleFromCenter,restoreAfterFinish:true}),new v.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],optionsParallel)};MochiKit.Visual.pulsate=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var b=MochiKit.Base;var oldOpacity=MochiKit.Style.getStyle(element,"opacity");options=b.update({duration:3,from:0,afterFinishInternal:function(effect){MochiKit.Style.setStyle(effect.element,{opacity:oldOpacity})}},options);var transition=options.transition||v.Transitions.sinoidal;options.transition=function(pos){return transition(1-v.Transitions.pulse(pos,options.pulses))};return new v.Opacity(element,options)};MochiKit.Visual.fold=function(element,options){var d=MochiKit.DOM;var v=MochiKit.Visual;var s=MochiKit.Style;element=d.getElement(element);var elementDimensions=s.getElementDimensions(element,true);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};var elemClip=s.makeClipping(element);options=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},afterFinishInternal:function(effect){new v.Scale(element,1,{scaleContent:false,scaleY:false,scaleMode:{originalHeight:elementDimensions.h,originalWidth:elementDimensions.w},afterFinishInternal:function(effect){s.hideElement(effect.element);s.undoClipping(effect.element,elemClip);s.setStyle(effect.element,oldStyle)}})}},options);return new v.Scale(element,5,options)};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","Sequence","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);MochiKit.Base._deps("DragAndDrop",["Base","Iter","DOM","Signal","Visual","Position"]);MochiKit.DragAndDrop.NAME="MochiKit.DragAndDrop";MochiKit.DragAndDrop.VERSION="1.5";MochiKit.DragAndDrop.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]"};MochiKit.DragAndDrop.toString=function(){return this.__repr__()};MochiKit.DragAndDrop.EXPORT=["Droppable","Draggable"];MochiKit.DragAndDrop.EXPORT_OK=["Droppables","Draggables"];MochiKit.DragAndDrop.Droppables={drops:[],remove:function(element){this.drops=MochiKit.Base.filter(function(d){return d.element!=MochiKit.DOM.getElement(element)},this.drops)},register:function(drop){this.drops.push(drop)},unregister:function(drop){this.drops=MochiKit.Base.filter(function(d){return d!=drop},this.drops)},prepare:function(element){MochiKit.Base.map(function(drop){if(drop.isAccepted(element)){if(drop.options.activeclass){MochiKit.DOM.addElementClass(drop.element,drop.options.activeclass)}drop.options.onactive(drop.element,element)}},this.drops)},findDeepestChild:function(drops){deepest=drops[0];for(i=1;i<drops.length;++i){if(MochiKit.DOM.isChildNode(drops[i].element,deepest.element)){deepest=drops[i]}}return deepest},show:function(point,element){if(!this.drops.length){return}var affected=[];if(this.last_active){this.last_active.deactivate()}MochiKit.Iter.forEach(this.drops,function(drop){if(drop.isAffected(point,element)){affected.push(drop)}});if(affected.length>0){drop=this.findDeepestChild(affected);MochiKit.Position.within(drop.element,point.page.x,point.page.y);drop.options.onhover(element,drop.element,MochiKit.Position.overlap(drop.options.overlap,drop.element));drop.activate()}},fire:function(event,element){if(!this.last_active){return}MochiKit.Position.prepare();if(this.last_active.isAffected(event.mouse(),element)){this.last_active.options.ondrop(element,this.last_active.element,event)}},reset:function(element){MochiKit.Base.map(function(drop){if(drop.options.activeclass){MochiKit.DOM.removeElementClass(drop.element,drop.options.activeclass)}drop.options.ondesactive(drop.element,element)},this.drops);if(this.last_active){this.last_active.deactivate()}}};MochiKit.DragAndDrop.Droppable=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options)}this.__init__(element,options)};MochiKit.DragAndDrop.Droppable.prototype={__class__:MochiKit.DragAndDrop.Droppable,__init__:function(element,options){var d=MochiKit.DOM;var b=MochiKit.Base;this.element=d.getElement(element);this.options=b.update({greedy:true,hoverclass:null,activeclass:null,hoverfunc:b.noop,accept:null,onactive:b.noop,ondesactive:b.noop,onhover:b.noop,ondrop:b.noop,containment:[],tree:false},options);this.options._containers=[];b.map(MochiKit.Base.bind(function(c){this.options._containers.push(d.getElement(c))},this),this.options.containment);MochiKit.Style.makePositioned(this.element);MochiKit.DragAndDrop.Droppables.register(this)},isContained:function(element){if(this.options._containers.length){var containmentNode;if(this.options.tree){containmentNode=element.treeNode}else{containmentNode=element.parentNode}return MochiKit.Iter.some(this.options._containers,function(c){return containmentNode==c})}else{return true}},isAccepted:function(element){return((!this.options.accept)||MochiKit.Iter.some(this.options.accept,function(c){return MochiKit.DOM.hasElementClass(element,c)}))},isAffected:function(point,element){return((this.element!=element)&&this.isContained(element)&&this.isAccepted(element)&&MochiKit.Position.within(this.element,point.page.x,point.page.y))},deactivate:function(){if(this.options.hoverclass){MochiKit.DOM.removeElementClass(this.element,this.options.hoverclass)}this.options.hoverfunc(this.element,false);MochiKit.DragAndDrop.Droppables.last_active=null},activate:function(){if(this.options.hoverclass){MochiKit.DOM.addElementClass(this.element,this.options.hoverclass)}this.options.hoverfunc(this.element,true);MochiKit.DragAndDrop.Droppables.last_active=this},destroy:function(){MochiKit.DragAndDrop.Droppables.unregister(this)},repr:function(){return"["+this.__class__.NAME+", options:"+MochiKit.Base.repr(this.options)+"]"}};MochiKit.DragAndDrop.Draggables={drags:[],register:function(draggable){if(this.drags.length===0){var conn=MochiKit.Signal.connect;this.eventMouseUp=conn(document,"onmouseup",this,this.endDrag);this.eventMouseMove=conn(document,"onmousemove",this,this.updateDrag);this.eventKeypress=conn(document,"onkeypress",this,this.keyPress)}this.drags.push(draggable)},unregister:function(draggable){this.drags=MochiKit.Base.filter(function(d){return d!=draggable},this.drags);if(this.drags.length===0){var disc=MochiKit.Signal.disconnect;disc(this.eventMouseUp);disc(this.eventMouseMove);disc(this.eventKeypress)}},activate:function(draggable){window.focus();this.activeDraggable=draggable},deactivate:function(){this.activeDraggable=null},updateDrag:function(event){if(!this.activeDraggable){return}var pointer=event.mouse();if(this._lastPointer&&(MochiKit.Base.repr(this._lastPointer.page)==MochiKit.Base.repr(pointer.page))){return}this._lastPointer=pointer;this.activeDraggable.updateDrag(event,pointer)},endDrag:function(event){if(!this.activeDraggable){return}this._lastPointer=null;this.activeDraggable.endDrag(event);this.activeDraggable=null},keyPress:function(event){if(this.activeDraggable){this.activeDraggable.keyPress(event)}},notify:function(eventName,draggable,event){MochiKit.Signal.signal(this,eventName,draggable,event)}};MochiKit.DragAndDrop.Draggable=function(element,options){var cls=arguments.callee;if(!(this instanceof cls)){return new cls(element,options)}this.__init__(element,options)};MochiKit.DragAndDrop.Draggable.prototype={__class__:MochiKit.DragAndDrop.Draggable,__init__:function(element,options){var v=MochiKit.Visual;var b=MochiKit.Base;options=b.update({handle:false,starteffect:function(innerelement){this._savedOpacity=MochiKit.Style.getStyle(innerelement,"opacity")||1;new v.Opacity(innerelement,{duration:0.2,from:this._savedOpacity,to:0.7})},reverteffect:function(innerelement,top_offset,left_offset){var dur=Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;return new v.Move(innerelement,{x:-left_offset,y:-top_offset,duration:dur})},endeffect:function(innerelement){new v.Opacity(innerelement,{duration:0.2,from:0.7,to:this._savedOpacity})},onchange:b.noop,zindex:1000,revert:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false},options);var d=MochiKit.DOM;this.element=d.getElement(element);if(options.handle&&(typeof(options.handle)=="string")){this.handle=d.getFirstElementByTagAndClassName(null,options.handle,this.element)}if(!this.handle){this.handle=d.getElement(options.handle)}if(!this.handle){this.handle=this.element}if(options.scroll&&!options.scroll.scrollTo&&!options.scroll.outerHTML){options.scroll=d.getElement(options.scroll);this._isScrollChild=MochiKit.DOM.isChildNode(this.element,options.scroll)}MochiKit.Style.makePositioned(this.element);this.delta=this.currentDelta();this.options=options;this.dragging=false;this.eventMouseDown=MochiKit.Signal.connect(this.handle,"onmousedown",this,this.initDrag);MochiKit.DragAndDrop.Draggables.register(this)},destroy:function(){MochiKit.Signal.disconnect(this.eventMouseDown);MochiKit.DragAndDrop.Draggables.unregister(this)},currentDelta:function(){var s=MochiKit.Style.getStyle;return[parseInt(s(this.element,"left")||"0"),parseInt(s(this.element,"top")||"0")]},initDrag:function(event){if(!event.mouse().button.left){return}var src=event.target();var tagName=(src.tagName||"").toUpperCase();if(tagName==="INPUT"||tagName==="SELECT"||tagName==="OPTION"||tagName==="BUTTON"||tagName==="TEXTAREA"){return}if(this._revert){this._revert.cancel();this._revert=null}var pointer=event.mouse();var pos=MochiKit.Position.cumulativeOffset(this.element);this.offset=[pointer.page.x-pos.x,pointer.page.y-pos.y];MochiKit.DragAndDrop.Draggables.activate(this);event.stop()},startDrag:function(event){this.dragging=true;if(this.options.selectclass){MochiKit.DOM.addElementClass(this.element,this.options.selectclass)}if(this.options.zindex){this.originalZ=parseInt(MochiKit.Style.getStyle(this.element,"z-index")||"0");this.element.style.zIndex=this.options.zindex}if(this.options.ghosting){this._clone=this.element.cloneNode(true);this.ghostPosition=MochiKit.Position.absolutize(this.element);this.element.parentNode.insertBefore(this._clone,this.element)}if(this.options.scroll){if(this.options.scroll==window){var where=this._getWindowScroll(this.options.scroll);this.originalScrollLeft=where.left;this.originalScrollTop=where.top}else{this.originalScrollLeft=this.options.scroll.scrollLeft;this.originalScrollTop=this.options.scroll.scrollTop}}MochiKit.DragAndDrop.Droppables.prepare(this.element);MochiKit.DragAndDrop.Draggables.notify("start",this,event);if(this.options.starteffect){this.options.starteffect(this.element)}},updateDrag:function(event,pointer){if(!this.dragging){this.startDrag(event)}MochiKit.Position.prepare();MochiKit.DragAndDrop.Droppables.show(pointer,this.element);MochiKit.DragAndDrop.Draggables.notify("drag",this,event);this.draw(pointer);this.options.onchange(this);if(this.options.scroll){this.stopScrolling();var p,q;if(this.options.scroll==window){var s=this._getWindowScroll(this.options.scroll);p=new MochiKit.Style.Coordinates(s.left,s.top);q=new MochiKit.Style.Coordinates(s.left+s.width,s.top+s.height)}else{p=MochiKit.Position.page(this.options.scroll);p.x+=this.options.scroll.scrollLeft;p.y+=this.options.scroll.scrollTop;p.x+=(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0);p.y+=(window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0);q=new MochiKit.Style.Coordinates(p.x+this.options.scroll.offsetWidth,p.y+this.options.scroll.offsetHeight)}var speed=[0,0];if(pointer.page.x>(q.x-this.options.scrollSensitivity)){speed[0]=pointer.page.x-(q.x-this.options.scrollSensitivity)}else{if(pointer.page.x<(p.x+this.options.scrollSensitivity)){speed[0]=pointer.page.x-(p.x+this.options.scrollSensitivity)}}if(pointer.page.y>(q.y-this.options.scrollSensitivity)){speed[1]=pointer.page.y-(q.y-this.options.scrollSensitivity)}else{if(pointer.page.y<(p.y+this.options.scrollSensitivity)){speed[1]=pointer.page.y-(p.y+this.options.scrollSensitivity)}}this.startScrolling(speed)}if(/AppleWebKit/.test(navigator.appVersion)){window.scrollBy(0,0)}event.stop()},finishDrag:function(event,success){var dr=MochiKit.DragAndDrop;this.dragging=false;if(this.options.selectclass){MochiKit.DOM.removeElementClass(this.element,this.options.selectclass)}if(this.options.ghosting){MochiKit.Position.relativize(this.element,this.ghostPosition);MochiKit.DOM.removeElement(this._clone);this._clone=null}if(success){dr.Droppables.fire(event,this.element)}dr.Draggables.notify("end",this,event);var revert=this.options.revert;if(revert&&typeof(revert)=="function"){revert=revert(this.element)}var d=this.currentDelta();if(revert&&this.options.reverteffect){this._revert=this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0])}else{this.delta=d}if(this.options.zindex){this.element.style.zIndex=this.originalZ}if(this.options.endeffect){this.options.endeffect(this.element)}dr.Draggables.deactivate();dr.Droppables.reset(this.element)},keyPress:function(event){if(event.key().string!="KEY_ESCAPE"){return}this.finishDrag(event,false);event.stop()},endDrag:function(event){if(!this.dragging){return}this.stopScrolling();this.finishDrag(event,true);event.stop()},draw:function(point){var pos=MochiKit.Position.cumulativeOffset(this.element);var d=this.currentDelta();pos.x-=d[0];pos.y-=d[1];if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){pos.x-=this.options.scroll.scrollLeft-this.originalScrollLeft;pos.y-=this.options.scroll.scrollTop-this.originalScrollTop}var p=[point.page.x-pos.x-this.offset[0],point.page.y-pos.y-this.offset[1]];if(this.options.snap){if(typeof(this.options.snap)=="function"){p=this.options.snap(p[0],p[1])}else{if(this.options.snap instanceof Array){var i=-1;p=MochiKit.Base.map(MochiKit.Base.bind(function(v){i+=1;return Math.round(v/this.options.snap[i])*this.options.snap[i]},this),p)}else{p=MochiKit.Base.map(MochiKit.Base.bind(function(v){return Math.round(v/this.options.snap)*this.options.snap},this),p)}}}var style=this.element.style;if((!this.options.constraint)||(this.options.constraint=="horizontal")){style.left=p[0]+"px"}if((!this.options.constraint)||(this.options.constraint=="vertical")){style.top=p[1]+"px"}if(style.visibility=="hidden"){style.visibility=""}},stopScrolling:function(){if(this.scrollInterval){clearInterval(this.scrollInterval);this.scrollInterval=null;MochiKit.DragAndDrop.Draggables._lastScrollPointer=null}},startScrolling:function(speed){if(!speed[0]&&!speed[1]){return}this.scrollSpeed=[speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];this.lastScrolled=new Date();this.scrollInterval=setInterval(MochiKit.Base.bind(this.scroll,this),10)},scroll:function(){var current=new Date();var delta=current-this.lastScrolled;this.lastScrolled=current;if(this.options.scroll==window){var s=this._getWindowScroll(this.options.scroll);if(this.scrollSpeed[0]||this.scrollSpeed[1]){var dm=delta/1000;this.options.scroll.scrollTo(s.left+dm*this.scrollSpeed[0],s.top+dm*this.scrollSpeed[1])}}else{this.options.scroll.scrollLeft+=this.scrollSpeed[0]*delta/1000;this.options.scroll.scrollTop+=this.scrollSpeed[1]*delta/1000}var d=MochiKit.DragAndDrop;MochiKit.Position.prepare();d.Droppables.show(d.Draggables._lastPointer,this.element);d.Draggables.notify("drag",this);if(this._isScrollChild){d.Draggables._lastScrollPointer=d.Draggables._lastScrollPointer||d.Draggables._lastPointer;d.Draggables._lastScrollPointer.x+=this.scrollSpeed[0]*delta/1000;d.Draggables._lastScrollPointer.y+=this.scrollSpeed[1]*delta/1000;if(d.Draggables._lastScrollPointer.x<0){d.Draggables._lastScrollPointer.x=0}if(d.Draggables._lastScrollPointer.y<0){d.Draggables._lastScrollPointer.y=0}this.draw(d.Draggables._lastScrollPointer)}this.options.onchange(this)},_getWindowScroll:function(win){var vp,w,h;MochiKit.DOM.withWindow(win,function(){vp=MochiKit.Style.getViewportPosition(win.document)});if(win.innerWidth){w=win.innerWidth;h=win.innerHeight}else{if(win.document.documentElement&&win.document.documentElement.clientWidth){w=win.document.documentElement.clientWidth;h=win.document.documentElement.clientHeight}else{w=win.document.body.offsetWidth;h=win.document.body.offsetHeight}}return{top:vp.y,left:vp.x,width:w,height:h}},repr:function(){return"["+this.__class__.NAME+", options:"+MochiKit.Base.repr(this.options)+"]"}};MochiKit.DragAndDrop.__new__=function(){MochiKit.Base.nameFunctions(this);this.EXPORT_TAGS={":common":this.EXPORT,":all":MochiKit.Base.concat(this.EXPORT,this.EXPORT_OK)}};MochiKit.DragAndDrop.__new__();MochiKit.Base._exportSymbols(this,MochiKit.DragAndDrop);MochiKit.Base._deps("Sortable",["Base","Iter","DOM","Position","DragAndDrop"]);MochiKit.Sortable.NAME="MochiKit.Sortable";MochiKit.Sortable.VERSION="1.5";MochiKit.Sortable.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]"};MochiKit.Sortable.toString=function(){return this.__repr__()};MochiKit.Sortable.EXPORT=[];MochiKit.Sortable.EXPORT_OK=[];MochiKit.Base.update(MochiKit.Sortable,{sortables:{},_findRootElement:function(element){while(element.tagName.toUpperCase()!="BODY"){if(element.id&&MochiKit.Sortable.sortables[element.id]){return element}element=element.parentNode}},_createElementId:function(element){if(element.id==null||element.id==""){var d=MochiKit.DOM;var id;var count=1;while(d.getElement(id="sortable"+count)!=null){count+=1}d.setNodeAttribute(element,"id",id)}},options:function(element){element=MochiKit.Sortable._findRootElement(MochiKit.DOM.getElement(element));if(!element){return}return MochiKit.Sortable.sortables[element.id]},destroy:function(element){var s=MochiKit.Sortable.options(element);var b=MochiKit.Base;var d=MochiKit.DragAndDrop;if(s){MochiKit.Signal.disconnect(s.startHandle);MochiKit.Signal.disconnect(s.endHandle);b.map(function(dr){d.Droppables.remove(dr)},s.droppables);b.map(function(dr){dr.destroy()},s.draggables);delete MochiKit.Sortable.sortables[s.element.id]}},create:function(element,options){element=MochiKit.DOM.getElement(element);var self=MochiKit.Sortable;self._createElementId(element);options=MochiKit.Base.update({element:element,tag:"li",dropOnEmpty:false,tree:false,treeTag:"ul",overlap:"vertical",constraint:"vertical",containment:[element],handle:false,only:false,hoverclass:null,ghosting:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:/^[^_]*_(.*)$/,onChange:MochiKit.Base.noop,onUpdate:MochiKit.Base.noop,accept:null},options);self.destroy(element);var options_for_draggable={revert:true,ghosting:options.ghosting,scroll:options.scroll,scrollSensitivity:options.scrollSensitivity,scrollSpeed:options.scrollSpeed,constraint:options.constraint,handle:options.handle};if(options.starteffect){options_for_draggable.starteffect=options.starteffect}if(options.reverteffect){options_for_draggable.reverteffect=options.reverteffect}else{if(options.ghosting){options_for_draggable.reverteffect=function(innerelement){innerelement.style.top=0;innerelement.style.left=0}}}if(options.endeffect){options_for_draggable.endeffect=options.endeffect}if(options.zindex){options_for_draggable.zindex=options.zindex}var options_for_droppable={overlap:options.overlap,containment:options.containment,hoverclass:options.hoverclass,onhover:self.onHover,tree:options.tree,accept:options.accept};var options_for_tree={onhover:self.onEmptyHover,overlap:options.overlap,containment:options.containment,hoverclass:options.hoverclass,accept:options.accept};MochiKit.DOM.removeEmptyTextNodes(element);options.draggables=[];options.droppables=[];if(options.dropOnEmpty||options.tree){new MochiKit.DragAndDrop.Droppable(element,options_for_tree);options.droppables.push(element)}MochiKit.Base.map(function(e){var handle=options.handle?MochiKit.DOM.getFirstElementByTagAndClassName(null,options.handle,e):e;options.draggables.push(new MochiKit.DragAndDrop.Draggable(e,MochiKit.Base.update(options_for_draggable,{handle:handle})));new MochiKit.DragAndDrop.Droppable(e,options_for_droppable);if(options.tree){e.treeNode=element}options.droppables.push(e)},(self.findElements(element,options)||[]));if(options.tree){MochiKit.Base.map(function(e){new MochiKit.DragAndDrop.Droppable(e,options_for_tree);e.treeNode=element;options.droppables.push(e)},(self.findTreeElements(element,options)||[]))}self.sortables[element.id]=options;options.lastValue=self.serialize(element);options.startHandle=MochiKit.Signal.connect(MochiKit.DragAndDrop.Draggables,"start",MochiKit.Base.partial(self.onStart,element));options.endHandle=MochiKit.Signal.connect(MochiKit.DragAndDrop.Draggables,"end",MochiKit.Base.partial(self.onEnd,element))},onStart:function(element,draggable){var self=MochiKit.Sortable;var options=self.options(element);options.lastValue=self.serialize(options.element)},onEnd:function(element,draggable){var self=MochiKit.Sortable;self.unmark();var options=self.options(element);if(options.lastValue!=self.serialize(options.element)){options.onUpdate(options.element)}},findElements:function(element,options){return MochiKit.Sortable.findChildren(element,options.only,options.tree,options.tag)},findTreeElements:function(element,options){return MochiKit.Sortable.findChildren(element,options.only,options.tree?true:false,options.treeTag)},findChildren:function(element,only,recursive,tagName){if(!element.hasChildNodes()){return null}tagName=tagName.toUpperCase();if(only){only=MochiKit.Base.flattenArray([only])}var elements=[];MochiKit.Base.map(function(e){if(e.tagName&&e.tagName.toUpperCase()==tagName&&(!only||MochiKit.Iter.some(only,function(c){return MochiKit.DOM.hasElementClass(e,c)}))){elements.push(e)}if(recursive){var grandchildren=MochiKit.Sortable.findChildren(e,only,recursive,tagName);if(grandchildren&&grandchildren.length>0){elements=elements.concat(grandchildren)}}},element.childNodes);return elements},onHover:function(element,dropon,overlap){if(MochiKit.DOM.isChildNode(dropon,element)){return}var self=MochiKit.Sortable;if(overlap>0.33&&overlap<0.66&&self.options(dropon).tree){return}else{if(overlap>0.5){self.mark(dropon,"before");if(dropon.previousSibling!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,dropon);if(dropon.parentNode!=oldParentNode){self.options(oldParentNode).onChange(element)}self.options(dropon.parentNode).onChange(element)}}else{self.mark(dropon,"after");var nextElement=dropon.nextSibling||null;if(nextElement!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,nextElement);if(dropon.parentNode!=oldParentNode){self.options(oldParentNode).onChange(element)}self.options(dropon.parentNode).onChange(element)}}}},_offsetSize:function(element,type){if(type=="vertical"||type=="height"){return element.offsetHeight}else{return element.offsetWidth}},onEmptyHover:function(element,dropon,overlap){var oldParentNode=element.parentNode;var self=MochiKit.Sortable;var droponOptions=self.options(dropon);if(!MochiKit.DOM.isChildNode(dropon,element)){var index;var children=self.findElements(dropon,{tag:droponOptions.tag,only:droponOptions.only});var child=null;if(children){var offset=self._offsetSize(dropon,droponOptions.overlap)*(1-overlap);for(index=0;index<children.length;index+=1){if(offset-self._offsetSize(children[index],droponOptions.overlap)>=0){offset-=self._offsetSize(children[index],droponOptions.overlap)}else{if(offset-(self._offsetSize(children[index],droponOptions.overlap)/2)>=0){child=index+1<children.length?children[index+1]:null;break}else{child=children[index];break}}}}dropon.insertBefore(element,child);self.options(oldParentNode).onChange(element);droponOptions.onChange(element)}},unmark:function(){var m=MochiKit.Sortable._marker;if(m){MochiKit.Style.hideElement(m)}},mark:function(dropon,position){var d=MochiKit.DOM;var self=MochiKit.Sortable;var sortable=self.options(dropon.parentNode);if(sortable&&!sortable.ghosting){return}if(!self._marker){self._marker=d.getElement("dropmarker")||document.createElement("DIV");MochiKit.Style.hideElement(self._marker);d.addElementClass(self._marker,"dropmarker");self._marker.style.position="absolute";document.getElementsByTagName("body").item(0).appendChild(self._marker)}var offsets=MochiKit.Position.cumulativeOffset(dropon);self._marker.style.left=offsets.x+"px";self._marker.style.top=offsets.y+"px";if(position=="after"){if(sortable.overlap=="horizontal"){self._marker.style.left=(offsets.x+dropon.clientWidth)+"px"}else{self._marker.style.top=(offsets.y+dropon.clientHeight)+"px"}}MochiKit.Style.showElement(self._marker)},_tree:function(element,options,parent){var self=MochiKit.Sortable;var children=self.findElements(element,options)||[];for(var i=0;i<children.length;++i){var match=children[i].id.match(options.format);if(!match){continue}var child={id:encodeURIComponent(match?match[1]:null),element:element,parent:parent,children:[],position:parent.children.length,container:self._findChildrenElement(children[i],options.treeTag.toUpperCase())};if(child.container){self._tree(child.container,options,child)}parent.children.push(child)}return parent},_findChildrenElement:function(element,containerTag){if(element&&element.hasChildNodes){containerTag=containerTag.toUpperCase();for(var i=0;i<element.childNodes.length;++i){if(element.childNodes[i].tagName.toUpperCase()==containerTag){return element.childNodes[i]}}}return null},tree:function(element,options){element=MochiKit.DOM.getElement(element);var sortableOptions=MochiKit.Sortable.options(element);options=MochiKit.Base.update({tag:sortableOptions.tag,treeTag:sortableOptions.treeTag,only:sortableOptions.only,name:element.id,format:sortableOptions.format},options||{});var root={id:null,parent:null,children:new Array,container:element,position:0};return MochiKit.Sortable._tree(element,options,root)},setSequence:function(element,newSequence,options){var self=MochiKit.Sortable;var b=MochiKit.Base;element=MochiKit.DOM.getElement(element);options=b.update(self.options(element),options||{});var nodeMap={};b.map(function(n){var m=n.id.match(options.format);if(m){nodeMap[m[1]]=[n,n.parentNode]}n.parentNode.removeChild(n)},self.findElements(element,options));b.map(function(ident){var n=nodeMap[ident];if(n){n[1].appendChild(n[0]);delete nodeMap[ident]}},newSequence)},_constructIndex:function(node){var index="";do{if(node.id){index="["+node.position+"]"+index}}while((node=node.parent)!=null);return index},sequence:function(element,options){element=MochiKit.DOM.getElement(element);var self=MochiKit.Sortable;var options=MochiKit.Base.update(self.options(element),options||{});return MochiKit.Base.map(function(item){return item.id.match(options.format)?item.id.match(options.format)[1]:""},MochiKit.DOM.getElement(self.findElements(element,options)||[]))},serialize:function(element,options){element=MochiKit.DOM.getElement(element);var self=MochiKit.Sortable;options=MochiKit.Base.update(self.options(element),options||{});var name=encodeURIComponent(options.name||element.id);if(options.tree){return MochiKit.Base.flattenArray(MochiKit.Base.map(function(item){return[name+self._constructIndex(item)+"[id]="+encodeURIComponent(item.id)].concat(item.children.map(arguments.callee))},self.tree(element,options).children)).join("&")}else{return MochiKit.Base.map(function(item){return name+"[]="+encodeURIComponent(item)},self.sequence(element,options)).join("&")}}});MochiKit.Sortable.Sortable=MochiKit.Sortable;MochiKit.Sortable.__new__=function(){MochiKit.Base.nameFunctions(this);this.EXPORT_TAGS={":common":this.EXPORT,":all":MochiKit.Base.concat(this.EXPORT,this.EXPORT_OK)}};MochiKit.Sortable.__new__();MochiKit.Base._exportSymbols(this,MochiKit.Sortable);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.3.1";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,level,info){this.num=num;this.level=level;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(minLevel){var self=MochiKit.Logging;if(typeof(minLevel)=="string"){minLevel=self.LogLevel[minLevel]}return function(msg){var msgLevel=msg.level;if(typeof(msgLevel)=="string"){msgLevel=self.LogLevel[msgLevel]}return msgLevel>=minLevel}},isLogMessage:function(){var LogMessage=MochiKit.Logging.LogMessage;for(var i=0;i<arguments.length;i++){if(!(arguments[i] instanceof LogMessage)){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(maxSize){this.counter=0;if(typeof(maxSize)=="undefined"||maxSize===null){maxSize=-1}this.maxSize=maxSize;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"&&window.console&&window.console.log){window.console.log(msg)}else{if(typeof(opera)!="undefined"&&opera.postError){opera.postError(msg)}else{if(typeof(printfire)=="function"){printfire(msg)}}}},dispatchListeners:function(msg){for(var k in this.listeners){var pair=this.listeners[k];if(pair.ident!=k||(pair[0]&&!pair[0](msg))){continue}pair[1](msg)}},addListener:function(ident,filter,listener){if(typeof(filter)=="string"){filter=MochiKit.Logging.logLevelAtLeast(filter)}var entry=[filter,listener];entry.ident=ident;this.listeners[ident]=entry},removeListener:function(ident){delete this.listeners[ident]},baseLog:function(level,message){var msg=new MochiKit.Logging.LogMessage(this.counter,level,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>=0&&this._messages.length>this.maxSize){this._messages.shift()}},getMessages:function(howMany){var firstMsg=0;if(!(typeof(howMany)=="undefined"||howMany===null)){firstMsg=Math.max(0,this._messages.length-howMany)}return this._messages.slice(firstMsg)},getMessageText:function(howMany){if(typeof(howMany)=="undefined"||howMany===null){howMany=30}var messages=this.getMessages(howMany);if(messages.length){var lst=map(function(m){return"\n  ["+m.num+"] "+m.level+": "+m.info.join(" ")},messages);lst.unshift("LAST "+messages.length+" MESSAGES:");return lst.join("")}return""},debuggingBookmarklet:function(inline){if(typeof(MochiKit.LoggingPane)=="undefined"){alert(this.getMessageText())}else{MochiKit.LoggingPane.createLoggingPane(inline||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 partial=m.partial;var Logger=this.Logger;var baseLog=Logger.prototype.baseLog;m.update(this.Logger.prototype,{debug:partial(baseLog,"DEBUG"),log:partial(baseLog,"INFO"),error:partial(baseLog,"ERROR"),fatal:partial(baseLog,"FATAL"),warning:partial(baseLog,"WARNING")});var self=this;var connectLog=function(name){return function(){self.logger[name].apply(self.logger,arguments)}};this.log=connectLog("log");this.logError=connectLog("error");this.logDebug=connectLog("debug");this.logFatal=connectLog("fatal");this.logWarning=connectLog("warning");this.logger=new Logger();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"&&typeof(document)!="undefined"&&document.createEvent&&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 MochiKit.Visual!="undefined"){MochiKit.Base.update(MochiKit.Visual.ScrollTo.prototype,{setup:function(){var p=MochiKit.Position;p.prepare();var offsets=p.cumulativeOffset(this.element);if(this.options.offset){offsets.y+=this.options.offset}var max=window.innerHeight?window.height-window.innerHeight:document.documentElement.scrollHeight-(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight);this.scrollStart=p.windowOffset.y;this.delta=(offsets.y>max?max:offsets.y)-this.scrollStart}})}if(!IS_DEV){var IS_DEV=false}if(IS_DEV){var LOG={};if("console" in window){LOG.error=console.error}else{LOG.error=noop}}if(typeof(Meetup)=="undefined"){Meetup={}}if(typeof(Meetup.Data)=="undefined"){Meetup.Data={}}Meetup.Layout={};(function(){var self=Meetup.Layout;var redrawFuncs=[];var positionedElements=[];var reposition=function(p){var rect=self.getBoundingRect(p.positionBy);if(!p.edge){setStyle(p.el,{top:(rect.y+rect.h+p.offset.y)+"px",left:(rect.x+p.offset.x)+"px"})}else{setEdgeStyle(p.el,rect,p.edge,p.offset)}};var doSameHeight=function(els,now){forEach(els,function(el){setStyle(el,{"min-height":"",_height:""})});var tallestH=listMax(map(function(o){return elementDimensions(o).h},els));var doSetHeight=function(){forEach(els,function(el){setStyle(el,{"min-height":tallestH+"px",_height:tallestH+"px"})})};if(now){doSetHeight()}else{setTimeout(doSetHeight,1500)}};var doSetPageHeight=function(){var navEl=$("C_nav");var pageEl=$("C_context");var contentEl=$("C_document");if(navEl&&pageEl){var n=(navEl)?navEl.offsetHeight:0;var c=contentEl.offsetHeight;var h=Math.max(n,c);if(typeof(document.body.style.maxHeight)!="undefined"){pageEl.style.minHeight=h+"px"}else{pageEl.style.height=h+"px"}}};self.getBoundingRect=function(elements){var els=flattenArguments(arguments);var allRects=map(self.getElementRect,els);if(allRects.length==0){return null}if(allRects.length==1){return allRects[0]}var rect={x:listMin(map(itemgetter("x"),allRects)),y:listMax(map(itemgetter("y"),allRects))};rect.w=listMax(map(_computeRightEdge,allRects))-rect.x;rect.h=listMax(map(_computeBottomEdge,allRects))-rect.y;return rect};self.getElementRect=function(el){try{return merge(getElementPosition(el),getElementDimensions(el))}catch(e){return null}};self.setElementRect=function(el,rect){setElementDimensions(el,{w:rect.w,h:rect.h});setElementPosition(el,{x:rect.x,y:rect.y})};self.registerResizeFunc=function(fn){redrawFuncs.push(fn)};self.adjustPageHeight=function(now){(now)?doSetPageHeight():setTimeout(doSetPageHeight,500)};self.makeSameHeight=function(elm1,elm2){var els=flattenArguments(extend(null,arguments,0));if(els.length<2){LOG.error("makeSameHeight needs at least two elements to compare!!!");return}var fn=partial(doSameHeight,els);self.registerResizeFunc(fn);doSameHeight(els,true)};self.makeSameWidth=function(elm1,elm2){var els=flattenArguments(extend(null,arguments,0));if(els.length<2){LOG.error("makeSameWidth needs at least two elements to compare!!!");return}var fn=partial(doSameWidth,els);self.registerResizeFunc(fn)};self.redraw=function(){forEach(redrawFuncs,function(fn){fn()});self.adjustPageHeight();forEach(positionedElements,reposition)};var _overlay=function(overlayEl,underEls){self.setElementRect(overlayEl,self.getBoundingRect(underEls))};self.overlay=function(overlayEl,underEls){var overlayEl=overlayEl||DIV();if(!isChildNode(overlayEl,document.body)){document.body.appendChild(overlayEl)}var els=flattenArguments(extend(null,arguments,1));var fn=partial(_overlay,overlayEl,els);fn();self.registerResizeFunc(fn);return overlayEl};self.positionOnElementEdge=function(el,positionBy,edge,offset){if(!el||typeof(el)=="undefined"){return false}var rect=self.getBoundingRect(positionBy);var offset=offset||{x:0,y:0};positionedElements.push({el:el,positionBy:positionBy,offset:offset,edge:edge});document.body.appendChild(el);setEdgeStyle(el,rect,edge,offset)};self.positionOnElementEdge2=function(elEdge1,elEdge2){if(elEdge1.element.style.display=="none"){return}var targetRect=self.getBoundingRect(elEdge1.element);var positionedRect=self.getElementRect(elEdge2.element);switch(edge){case self.SOUTHWEST:setStyle(el,{top:(rect.y+rect.h+offset.y)+"px",left:(rect.x+offset.x)+"px"});break;case self.NORTHEAST:setStyle(el,{top:(rect.y+offset.y)+"px",left:(rect.x+rect.w+offset.x)+"px"});break;case self.NORTHWEST:setStyle(el,{top:(rect.y+offset.y)+"px",left:(rect.x+offset.x)+"px"});break;case self.NORTH:case self.SOUTH:case self.EAST:case self.WEST:case self.SOUTHEAST:setStyle(el,{top:(rect.y+rect.h+offset.y)+"px",left:(rect.x+rect.w+offset.x)+"px"});break;default:LOG.error("placement on specified edge ["+edge+"] not yet supported");return;break}};var _computeRightEdge=function(rect){return(rect.x+rect.w)};var _computeBottomEdge=function(rect){return(rect.y+rect.h)};var _overlay=function(overlayEl,underEls){self.setElementRect(overlayEl,self.getBoundingRect(underEls))};var setEdgeStyle2=function(el,rect,edge,offset){};var setEdgeStyle=function(el,rect,edge,offset){if(!el||el.style.display=="none"){return}var dims=getElementDimensions(el);try{switch(edge){case self.SOUTHWEST:setStyle(el,{top:(rect.y+rect.h+offset.y)+"px",left:((rect.x+offset.x)-dims.w)+"px"});break;case self.NORTHEAST:setStyle(el,{top:(rect.y+offset.y)+"px",left:(rect.x+rect.w+offset.x)+"px"});break;case self.NORTHWEST:setStyle(el,{top:(rect.y+offset.y)+"px",left:(rect.x+offset.x)+"px"});break;case self.NORTH:case self.SOUTH:case self.EAST:case self.WEST:case self.SOUTHEAST:setStyle(el,{top:(rect.y+rect.h+offset.y)+"px",left:(rect.x+rect.w-offset.x)+"px"});break;default:LOG.error("placement on specified edge ["+edge+"] not yet supported");return;break}}catch(e){}};update(self,{NORTH:1,SOUTH:2,EAST:3,WEST:4,NORTHEAST:5,NORTHWEST:6,SOUTHWEST:7,SOUTHEAST:8})})();connect(window,"onresize",Meetup.Layout.redraw);connect(window,"onload",partial(Meetup.Layout.redraw,true));Meetup.Global=function(){if(typeof(IS_DEV)=="undefined"){this.IS_DEV=false}if(typeof(IS_QA)=="undefined"){this.IS_QA=false}if(typeof(LOG)=="undefined"){this.LOG={info:noop,error:noop};this.inspect=function(){}}};Meetup.Global.prototype={object:function(o){var obj=clone(o);bindMethods(obj);return obj},namespace:function(ns){var comps=ns.split(".");if(comps.length==1){if(typeof(Meetup[comps[0]])=="undefined"){Meetup[comps[0]]={}}}else{LOG.error("Meetup.Global.namespace() inexplicably fails to support nested namespaces. FIXME!")}},stringHas:function(lookIn,lookFor){return every(flattenArguments(extend(null,arguments,1)),function(str){return(lookIn.indexOf(str)>-1)})},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++){if(array[i]==elem){return i}}return -1},pickRandom:function(){if(isArrayLike(arguments[0])&&typeof(arguments[1])=="undefined"){return pickRandomArrayItem(arguments[0])}else{var arr=[];var args=flattenArguments(arguments);for(a in args){if(isArrayLike(args[a])){arr.concat(args[a])}else{if(typeof(args[a])=="object"){for(z in args[a]){arr.push(args[a][z])}}else{arr.push(args[a])}}}return pickRandomArrayItem(arr)}},pickRandomArrayItem:function(arr){return arr[Math.floor(Math.random()*(arr.length))]},inDoc:function(el){return every(flattenArguments(arguments),function(elm){return(elm&&elm.parentNode)})},inFrame:function(){var _inFrame=false;var topUrl;try{topUrl=top.location.href;if(isUndefinedOrNull(topUrl)){_inFrame=true}}catch(e){_inFrame=true}if((!_inFrame)&&(window.location.href!=topUrl)){_inFrame=true}return _inFrame},visible:function(el){return every(flattenArguments(arguments),function(elm){return(elm.style.display!="none"&&elm.style.visibility!="hidden"&&getNodeAttribute(elm,"type")!="hidden")})},intersects:function(el1,el2){if(!inDoc(arguments)){LOG.error("Meetup.Global.interects(): one or more elements are not in the document");return false}if(!visible(arguments)){return false}var getPos=elementPosition,getDim=elementDimensions;var pos1=getPos(el1),dim1=getDim(el1),pos2=getPos(el2),dim2=getDim(el2);var sign=function(v){if(v>0){return"+"}else{if(v<0){return"-"}else{return 0}}};if(pos1&&pos2){return((sign(pos1.y-(pos2.y+dim2.h))!=sign((pos1.y+dim1.h)-pos2.y))&&(sign(pos1.x-(pos2.x+dim2.w))!=sign((pos1.x+dim1.w)-pos2.x)))}else{return false}},LOG:{info:function(str){logDebug(str)},warning:function(str){logWarning(str)},error:function(str){logError(str);if(typeof(DEVTOOLS)!="undefined"){DEVTOOLS.flagError(str)}},fatal:function(str){logFatal(str)}},unescapeHTML:function(str){var reg=new RegExp("&lt;([^&]*)&gt;","g");return str.replace(reg,"<$1>").replace(/&amp;/g,"&")},unescapeElementHTML:function(elm){elm.innerHTML=unescapeHTML(elm)},inspect:function(obj){for(var um in obj){}},hideSelects:function(hide){if(hide){removeElementClass(document.body,"hideSelects");addElementClass(document.body,"hideSelects")}else{removeElementClass(document.body,"hideSelects")}},hideSomeSelects:function(elm,hide){var selects=document.getElementsByTagName("select");forEach(selects,function(sel){if(hide){if(intersects(sel,elm)&&!isChildNode(sel,elm)){addElementClass(sel,"selectHide")}}else{if(hasElementClass(sel,"selectHide")){removeElementClass(sel,"selectHide");sel.style.visibility=""}}})},$tagClass:MochiKit.DOM.getElementsByTagAndClassName,get1st:MochiKit.DOM.getFirstElementByTagAndClassName,addCommas:function(numberAsString){var sRegExp=new RegExp("(-?[0-9]+)([0-9]{3})");while(sRegExp.test(numberAsString)){var commaStr=",";if(Meetup.Language.substring(0,2)=="it"){commaStr="."}numberAsString=numberAsString.replace(sRegExp,"$1"+commaStr+"$2")}return numberAsString},returnFormValue:function(formElm){if(!formElm){return false}for(var i=0;i<formElm.length;i++){if(formElm[i].checked){return formElm[i].value}}return false},returnSelectValue:function(select){return select[select.selectedIndex].innerHTML},setCookie:function(name,value,expires,path,domain,secure,noEscape){var today=new Date();if(expires){expires=expires*1000*60*60*24}var expires_date=new Date(today.getTime()+(expires));var cookieStr=name+"="+(noEscape?value:escape(value))+((expires)?";expires="+expires_date.toGMTString():"")+((path)?";path="+path:"")+((domain)?";domain="+domain:"")+((secure)?";secure":"");document.cookie=cookieStr;return cookieStr},removeCookie:function(name,domain,path){if(!domain){domain=(IS_DEV)?".meetup.com":".meetup.com"}if(!path){path="/"}this.setCookie(name,"",0,path,domain)},getCookie:function(name){var start=document.cookie.indexOf(name+"=");var len=start+name.length+1;if((!start)&&(name!=document.cookie.substring(0,name.length))){return null}if(start==-1){return null}var end=document.cookie.indexOf(";",len);if(end==-1){end=document.cookie.length}return unescape(document.cookie.substring(len,end))},cleanWhitespace:function(node){var notWhitespace=/\S/;for(var x=0;x<node.childNodes.length;x++){var childNode=node.childNodes[x];if((childNode.nodeType==3)&&(!notWhitespace.test(childNode.nodeValue))){node.removeChild(node.childNodes[x]);x--}if(childNode.nodeType==1){cleanWhitespace(childNode)}}},setHTML:function(el,htmlStr){el.innerHTML=htmlStr;return el},setPageHeight:Meetup.Layout.adjustPageHeight,addEvent:function(obj,evType,fn){if(obj.addEventListener){obj.addEventListener(evType,fn,false);return true}else{if(obj.attachEvent){var r=obj.attachEvent("on"+evType,fn);return r}else{return false}}},trim:function(str){return str.replace(/^\s+|\s+$/g,"")},ltrim:function(str){return str.replace(/^\s+/,"")},rtrim:function(str){return str.replace(/\s+$/,"")},submitForm:function(formEl){var fakeSubmitEl=INPUT({type:"submit",style:"display: none;"});appendChildNodes(formEl,fakeSubmitEl);setTimeout(function(){fakeSubmitEl.click();removeElement(fakeSubmitEl)},1)},submitOnChange:function(el){connect(el,"onchange",function(e){submitForm(el.form)})},applySortLinks:function(id){forEach($tagClass("A","J_sort",id),function(lnk){lnk.href=lnk.title;lnk.title=""})}};(function(){update(window,new Meetup.Global())})();Meetup.urlify=function(string){string=string.replace(/([ \s]{1,})/g," ");string=string.replace(/^[ \s]/g,"");string=string.replace(/[ \s]$/g,"");string=string.replace(/[ \s]/g,"-");string=string.replace(/[']/g,"");if(string.match(/[\u00c0-\u00ff]/)){string=string.replace(/[\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5]/g,"A");string=string.replace(/[\u00c6]/g,"AE");string=string.replace(/[\u00c7]/g,"C");string=string.replace(/[\u00c8\u00c9\u00ca\u00cb\u00d0]/g,"E");string=string.replace(/[\u00cc\u00cd\u00ce\u00cf]/g,"I");string=string.replace(/[\u00d1]/g,"N");string=string.replace(/[\u00d2\u00d3\u00d4\u00d5\u00d6\u00d8]/g,"O");string=string.replace(/[\u00d9\u00da\u00db\u00dc]/g,"U");string=string.replace(/[\u00dd]/g,"Y");string=string.replace(/[\u00df]/g,"ss");string=string.replace(/[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]/g,"a");string=string.replace(/[\u00e6]/g,"ae");string=string.replace(/[\u00e7]/g,"c");string=string.replace(/[\u00e8\u00e9\u00ea\u00eb\u00f0]/g,"e");string=string.replace(/[\u00ec\u00ed\u00ee\u00ef]/g,"i");string=string.replace(/[\u00f1]/g,"n");string=string.replace(/[\u00f2\u00f3\u00f4\u00f5\u00f6\u00f8]/g,"o");string=string.replace(/[\u00f9\u00fa\u00fb\u00fc]/g,"u");string=string.replace(/[\u00fd\u00ff]/g,"y")}string=string.replace(/[^a-zA-Z0-9-]+/g,"-");string=string.replace(/-+/g,"-");string=string.replace(/^-+/g,"");string=string.replace(/-+$/g,"");return string};Meetup.UserAgent={};(function(){var UA=Meetup.UserAgent;UA.inString=partial(stringHas,navigator.userAgent.toLowerCase());UA.isIE=function(){return(UA.inString("msie")&&!UA.inString("opera"))};IS_IE=UA.isIE();UA.isGecko=function(){return UA.inString("gecko")&&!UA.inString("khtml")};UA.isSafari=partial(UA.inString,"applewebkit");UA.isKHTML=function(){return UA.inString("khtml")&&!UA.inString("applewebkit")};UA.hasBadJs=partial(UA.inString,"mac","msie");UA.isIE6=function(){var v=navigator.userAgent.match(/MSIE\s([^;]*)/);if(v&&v[1]){var ieVersion=parseFloat(v[1])}if(ieVersion&&ieVersion<7){return true}return false}})();Meetup.DOM={};(function(){var self=Meetup.DOM;self.isButton=function(element){if(element.tagName.toLowerCase()=="button"){return true}else{if(element.tagName.toLowerCase()=="input"&&getNodeAttribute(element,"type")=="submit"){return true}else{return false}}};self.hasElementClassOr=function(elm,classes){for(i=0;i<classes.length;i++){if(hasElementClass(elm,classes[i])){return true}}return false}})();Meetup.URI=function(strURI){this._uri=strURI?strURI:document.location.href;bindMethods(this);this._parse()};Meetup.URI.prototype={valid:false,_parse:function(){var parts=this._uri.split("?");var q=(parts.length>1)?parts[1]:false;var parts=parts[0].split("://");if(parts.length<2){LOG.error("unable to parse URI because scheme is missing ("+this._uri+")");return false}var p=parts[0];parts=parts[1].split("/");if(parts.length<2){LOG.error("unable to parse URI because no slashes ("+this._uri+")");return false}this.valid=true;this.scheme=p;this.domainName=parts[0];this.path=parts.slice(1);this.querystring=q?q.split("&"):[]},addToQuerystring:function(name,value){if(some(this.path,function(p){return(p=="/r/")})){return}if(!this.querystring){this.querystring=[name+"="+value]}else{this.querystring[this.querystring.length]=name+"="+value}},toString:function(){return this.scheme+"://"+this.domainName+"/"+this.path.join("/")+((this.querystring&&this.querystring.length>0)?("?"+this.querystring.join("&")):"")},__repr__:function(){return"{_uri: '"+this._uri+"', scheme: '"+this.scheme+"', domainName: '"+this.domainName+"', path: '"+this.path.join("/")+"', querystring: '"+(this.querystring?("?"+this.querystring.join("&")):"")+"'}"}};Meetup.DomDeco={};Meetup.DomDeco._log=[];Meetup.DomDeco._logIt=function(selector,deco,matchCount){var d=new deco();Meetup.DomDeco._log.push({deco:repr(d),matchString:selector||null,matchCount:matchCount||0});d=null};Meetup.DomDeco.applyTo=function(els,deco,opts){Meetup.DomDeco._apply(deco,(isArrayLike(els)?els:[els]),null,opts)};Meetup.DomDeco.applyByTagAndClass=function(tagName,className,deco,opts){Meetup.DomDeco._apply(deco,$tagClass(tagName,className),tagName+"."+className,opts)};Meetup.DomDeco.applyByClass=function(className,deco,opts){Meetup.DomDeco._apply(deco,$tagClass(null,className),"."+className,opts)};Meetup.DomDeco.applyById=function(elId,deco,opts){if($(elId)){Meetup.DomDeco._apply(deco,$(elId),"#"+elId,opts)}};Meetup.DomDeco._applier=function(decorator,opts,el){var d=new decorator();bindMethods(d);if(!d.decorate){LOG.error("NON-DECORATOR PASSED IN TO Meetup.DomDeco._applier()")}d.decorate(el,opts)};Meetup.DomDeco._apply=function(deco,els,selector,opts){if(!deco){LOG.error("No DomDecorator passed in to Meetup.DomDeco._apply for selector '"+selector+"'");return}if(!isArrayLike(els)){els=[els]}if(IS_DEV){Meetup.DomDeco._logIt(selector,deco,els.length)}var fn=Meetup.DomDeco._buildDecoFunc(deco,els,opts);(opts&&opts.deferred)?connect(window,"onload",fn):fn()};Meetup.DomDeco._buildDecoFunc=function(deco,matches,opts){var applier=function(){forEach(matches,partial(Meetup.DomDeco._applier,deco,opts))};var validators=[];if(IS_DEV&&opts){if(opts.requireAtLeast){validators[validators.length]=function(){var minMatch=opts.requireAtLeast;if(matches.length<minMatch){LOG.error("Expected at least "+minMatch+" matches, but only got "+matches.length+". [decorator: "+repr(deco.prototype)+"]")}}}}return function(){applier();forEach(validators,function(v){v()})}};MochiKit.Base.registerRepr("decorator",function(o){return(o.decorate&&typeof(o.decorate)=="function")},function(o){var _name=null;if(o.NAME){_name=o.NAME}else{for(var decoName in Meetup.DomDeco){if(o==Meetup.DomDeco[decoName]){_name="Meetup.DomDeco."+decoName;break}}}return(_name||"Unknown DomDeco object")});Meetup.DomDeco.TextInputTip=function(){};Meetup.DomDeco.TextInputTip.prototype={decorate:function(el,opts){var self=this;self._textEl=el;if(opts&&opts.tip){self._tipText=opts.tip}else{self._tipText=self._textEl.title;self._textEl.title=""}if(this._textEl.value==""){setNodeAttribute(this._textEl,"autocomplete","off")}this._tipEl=DIV({"class":"textInputTipText",style:"display: none; 						position: absolute; 						font-size: "+computedStyle(this._textEl,"fontSize")+";						font-family: "+computedStyle(this._textEl,"fontFamily")+";						line-height: "+computedStyle(this._textEl,"height")+";						overflow: hidden;						color: #888;"},this._tipText);appendChildNodes(document.body,this._tipEl);self._reTip();connect(self._tipEl,"onclick",self._focus);connect(self._textEl,"onfocus",self._focus);connect(self._textEl,"onblur",self._blur);connect(self._textEl,"retip",self._reTip)},_focus:function(e){this._textEl.focus();this._hasFocus=true;this._reTip()},_blur:function(e){this._hasFocus=false;this._reTip()},_reTip:function(){var getSide=function(el,side){var b=parseInt(computedStyle(el,"border"+side+"Width").replace("px",""));var p=parseInt(computedStyle(el,"padding"+side).replace("px",""));return b+p};if(!this._hasFocus&&this._textEl.value==""&&this._textEl.offsetWidth){if(!this._offsetPosition){var dim=getElementDimensions(this._textEl);setStyle(this._tipEl,{width:dim.w+"px",height:dim.h+"px"});this._offsetPosition={x:dim.w+getSide(this._textEl,"Top"),y:-1*(dim.h)+getSide(this._textEl,"Left")};Meetup.Layout.positionOnElementEdge(this._tipEl,this._textEl,Meetup.Layout.SOUTHWEST,this._offsetPosition)}showElement(this._tipEl);Meetup.Layout.redraw()}else{hideElement(this._tipEl)}},_offset:{},_offsetPosition:null,_textEl:null,_tipEl:null,_hasFocus:null,_tipText:null};Meetup.DomDeco.Dialog=function(){bindMethods(this)};Meetup.DomDeco.Dialog.prototype._closeEl=null;Meetup.DomDeco.Dialog.prototype._escEvent=null;Meetup.DomDeco.Dialog.prototype._interstitialblock=null;Meetup.DomDeco.Dialog.prototype._mainEl=null;Meetup.DomDeco.Dialog.prototype.isShowing=false;Meetup.DomDeco.Dialog.prototype.evPointerWindow=null;Meetup.DomDeco.Dialog.prototype._shadow=null;Meetup.DomDeco.Dialog.prototype.noCloseEl=false;Meetup.DomDeco.Dialog.prototype.__repr__=function(){return"Meetup.DomDeco.Dialog"};Meetup.DomDeco.Dialog.buildDimBack=function(){var div=DIV(),ds=div.style;ds.position="absolute";ds.left="0px";ds.top="0px";ds.width=document.documentElement.scrollWidth+"px";ds.height=document.documentElement.scrollHeight+"px";ds.backgroundColor="#FFF";ds.opacity="0.6";ds.filter="alpha(opacity=60)";ds.display="none";return div};Meetup.DomDeco.Dialog.prototype.decorate=function(el){if(!el){LOG.error("no element passed in to Meetup.DomDeco.Dialog.decorate()");return}var MKB=MochiKit.Base,MKD=MochiKit.DOM,MKS=MochiKit.Signal;this._interstitialblock=$("interstitialblock");if(this._interstitialblock===null){this._interstitialblock=Meetup.DomDeco.Dialog.buildDimBack()}else{this._interstitialblock.parentNode.removeChild(this._interstitialblock)}document.body.appendChild(this._interstitialblock);if(el.parentNode==document.body){this._mainEl=el}else{this._mainEl=(inDoc(el))?MKD.removeElement(el):el;document.body.appendChild(this._mainEl)}var ttl;if(Meetup.Copy.dlogCloseThis){ttl=Meetup.Copy.dlogCloseThis}else{ttl="Close this"}if(!hasElementClass(el,"noClose")){this.noCloseEl=true;this._closeEl=DIV({"class":"D_dialog_close"},DIV({title:ttl},"x"));this._mainEl.appendChild(this._closeEl);MKS.connect(this._closeEl,"onclick",this._signalDismiss);this._escEvent=MKS.connect(document,"onkeyup",this.onDocumentKeyUp)}MKS.connect(this._mainEl,"appear",this._appear);MKS.connect(this._mainEl,"dismiss",this._dismiss);MKS.connect(this._mainEl,"resize",this._resize);this._docFormEls=MKB.concat(MKD.getElementsByTagAndClassName("input"),MKD.getElementsByTagAndClassName("select"));if(MKD.hasElementClass(el,"D_showOnLoad")){this._appear()}};Meetup.DomDeco.Dialog.prototype._appear=function(e){this._mainEl.style.display="block";this.isShowing=true;this.evPointerWindow=MochiKit.Signal.connect(window,"onresize",this.onWindowResize);var dialogTop,tmp,isInFrame=inFrame(),MKS=MochiKit.Style,MKD=MochiKit.DOM,MSG=MochiKit.Signal,MKB=MochiKit.Base,MKI=MochiKit.Iter,dialogSize=MKS.getElementDimensions(this._mainEl),viewportSize=MKS.getViewportDimensions(),viewportPos=MKS.getViewportPosition(),halfViewportSizeH=viewportSize.h/2,halfDialogSizeH=dialogSize.h/2;if(MKS.getStyle(this._mainEl,"width")===null){var ms=this._mainEl.style;ms.border="2px solid #555";ms.borderRadius="5px";ms.left="50%";ms.top="200px";ms.width="500px";ms.padding="3px";if(!this.noCloseEl){var ps=this._closeEl.style;ps.position="absolute";ps.width="1em";ps.height="1em";ps.right="0.5em";ps.top="0.5em";ps.padding="0.25em";ps.border="1px solid #CCC";ps.cursor="pointer";ps.backgroundColor="#EEE";ps.colorRadius="2px";ps.textAlign="center"}}this._mainEl.style.zIndex="4501";if((dialogSize.w>viewportSize.w*0.8)){tmp=Math.round(viewportSize.w*0.6);this._mainEl.style.width=tmp+"px";dialogSize.w=tmp}if(dialogSize.h<viewportSize.h*0.2){tmp=Math.round(viewportSize.h*0.3);this._mainEl.style.height=tmp+"px";dialogSize.h=tmp}if(isInFrame){dialogTop=this._getHackyAsHellSpecialCaseTop(this._mainEl.id)}else{dialogTop=halfViewportSizeH-halfDialogSizeH+viewportPos.y}if(dialogTop<0){dialogTop=100}this._mainEl.style.top=dialogTop+"px";if(isInFrame){this._mainEl.scrollIntoView()}MKD.addElementClass(document.body,"interstitial");this._interstitialblock.style.height=this._getHeight()+"px";if(Meetup.UserAgent.isIE()){var touchesSuggs=MKB.bind(this.excludePromt,this);this._hidden=(touchesSuggs.length>0)?MKB.filter(touchesSuggs,this._docFormEls):null;if(this._hidden){MKI.forEach(this._hidden,Meetup.DomDeco.Dialog.hideItem)}}this.resetPosition();this._mainEl.style.height="auto";var tippedInputs=$tagClass("INPUT","textInputTip",this._mainEl);forEach(tippedInputs,function(t){signal(t,"retip")});this._hideFlash(true)};Meetup.DomDeco.Dialog.prototype._getHeight=function(){var pgBody=$("C_pageBody"),pgHeadr=$("C_header"),pgFootr=$("C_footer"),naturalHeight=(pgBody?pgBody.offsetHeight:0)+(pgHeadr?pgHeadr.offsetHeight:0)+(pgFootr?pgFootr.offsetHeight:0),widgetHeight=MochiKit.Style.getViewportPosition().y+this._mainEl.offsetHeight;if(widgetHeight>naturalHeight){return widgetHeight}else{return naturalHeight}};Meetup.DomDeco.Dialog.prototype._hideFlash=function(hide){var objs=(Meetup.UserAgent.isIE())?document.getElementsByTagName("EMBED"):document.getElementsByTagName("OBJECT");var len=objs.length;for(var i=0;i<len;i++){objs[i].style.visibility=(hide)?"hidden":"visible"}};Meetup.DomDeco.Dialog.prototype._getHackyAsHellSpecialCaseTop=function(elId){var result=0,venueThingRect=Meetup.Layout.getBoundingRect($("mp_addevent"));switch(elId){case"deleteVenue":case"shareVenue":case"venueInUse":result=venueThingRect.y+150;break;case"addAtts":result=venueThingRect.y+venueThingRect.h-100;break}return result};Meetup.DomDeco.Dialog.prototype._signalDismiss=function(){MochiKit.Signal.signal(this._mainEl,"dismiss")};Meetup.DomDeco.Dialog.prototype._resize=function(){if(this._shadow){this._shadow.reposition()}};Meetup.DomDeco.Dialog.prototype._dismiss=function(){this.isShowing=false;if(Meetup.UserAgent.isIE()){if(this._hidden){forEach(this._hidden,Meetup.DomDeco.Dialog.unhideItem)}}MochiKit.Signal.disconnect(this.evPointerWindow);MochiKit.Signal.disconnect(this._escEvent);this._mainEl.style.display="none";this._interstitialblock.style.display="none";MochiKit.DOM.removeElementClass(document.body,"interstitial");if(this._shadow){this._shadow.dismiss()}var tippedInputs=$tagClass("INPUT","textInputTip",this._mainEl);forEach(tippedInputs,function(t){signal(t,"retip")});this._hideFlash(false)};Meetup.DomDeco.Dialog.prototype.resetPosition=function(ev){if(this.isShowing){var ibs=this._interstitialblock.style;ibs.display="none";var winW=document.documentElement.scrollWidth;var winH=document.documentElement.scrollHeight;var dim=MochiKit.Style.getElementDimensions(this._mainEl);this._mainEl.style.position="absolute";this._mainEl.style.left="50%";this._mainEl.style.marginLeft=["-",Math.round(dim.w/2),"px"].join("");ibs.width=(winW+6)+"px";ibs.height=winH+"px";ibs.display="block";if(this._shadow){this._shadow.reposition()}}};Meetup.DomDeco.Dialog.prototype.onWindowResize=function(ev){this.resetPosition()};Meetup.DomDeco.Dialog.prototype.onDocumentKeyUp=function(ev){if(ev.key().string==="KEY_ESCAPE"){this._signalDismiss()}};Meetup.DomDeco.Dialog.prototype.excludePromt=function(el){var str_id=el.id;if(str_id.indexOf("PROMPT_")<0&&!isChildNode(el,this._mainEl)&&str_id!="co"&&str_id!="zip"&&el.name!="submitButton"){return intersects(el,this._mainEl)}};Meetup.DomDeco.Dialog.hideItem=function(item){var MKD=MochiKit.DOM,str_type=""+item.getAttribute("type"),visibility=MochiKit.Style.getStyle(item,"visibility");if(str_type==="hidden"){return}if(visibility==="hidden"){MKD.addElementClass(item,"PROMPT_keepHidden")}else{item.style.visibility="hidden"}};Meetup.DomDeco.Dialog.unhideItem=function(item){var MKS=MochiKit.Style;if(MKS.hasElementClass(item,"PROMPT_keepHidden")){MKS.removeElementClass(item,"PROMPT_keepHidden")}else{item.style.visibility="visible"}};Meetup.DomDeco.Signal=function(){bindMethods(this)};Meetup.DomDeco.Signal.prototype={decorate:function(el){if(!el){LOG.error("no element passed in to Meetup.DomDeco.Signal.decorate()");return}if(el.className.indexOf("_toClass_")>-1){var lenMatch=el.className.match(/.*?D_signal_(\w+)_toClass_(\w+)/);if(lenMatch&&lenMatch[1]&&lenMatch[2]){connect(el,"onclick",this._doSignalMap);this._signalString=lenMatch[1];this._elementId=lenMatch[2]}}else{var lenMatch=el.className.match(/.*?D_signal_(\w+)_to_(\w+)/);if(lenMatch&&lenMatch[1]&&lenMatch[2]){connect(el,"onclick",this._doSignal);this._signalString=lenMatch[1];this._elementId=lenMatch[2]}}},_doSignal:function(e){if(!hasElementClass(e.src(),"D_signal_allowDefault")){e.stop()}signal($(this._elementId),this._signalString)},_doSignalMap:function(e){if(!hasElementClass(e.src(),"D_signal_allowDefault")){e.stop()}var els=$$("."+this._elementId);for(var i in els){signal(els[i],this._signalString)}},_signalString:null,_elementId:null,__repr__:function(){return"Meetup.DomDeco.Signal"}};Meetup.DomDeco.CharCounter=function(){bindMethods(this)};Meetup.DomDeco.CharCounter.prototype={decorate:function(el){if(!el){LOG.error("no element passed in to Meetup.DomDeco.CharCounter.decorate()");return}this._inputEl=el;this._customPlacement=this._inputEl.className.match(/.*?maxLenPlacement_(\S+)/)||false;this._siblingNode=this._customPlacement[1]||this._inputEl;var lenMatch=this._inputEl.className.match(/.*?maxChars(\d+)/);if(lenMatch&&lenMatch[1]){this._maxLen=lenMatch[1]}var hasHint=(hasElementClass(el,"hint-text"));var curStatusEls=getElementsByTagAndClassName("span","limit",this._inputEl.parentNode);forEach(curStatusEls,function(el){try{if(typeof(el)!="undefined"&&(el.id=="charCount_"+this._inputEl.id)){disconnectAll(this._inputEl,"onkeyup");removeElement(getFirstParentByTagAndClassName(el,"div","limit-container"))}}catch(e){}},this);if(this._inputEl.id.length>0){this._statusEl=SPAN({"class":"limit",id:"charCount_"+this._inputEl.id})}else{this._statusEl=SPAN({"class":"limit"})}this._msgEl=DIV({style:"display: none","class":"limit-container"},this._statusEl);insertSiblingNodesAfter(this._siblingNode,this._msgEl);this._check();if(hasHint){this._useMaxMsg();this._show()}else{if(this._getLen(this._inputEl.value)>=this._maxLen){this._show()}else{this._hide()}}connect(this._inputEl,"onkeyup",this._check);connect(this._inputEl,"reset",this._check)},_hidden:false,_inputEl:null,_statusEl:null,_maxLen:0,_hide:function(){this._msgEl.style.display="none";this._hidden=true},_show:function(){this._msgEl.style.display="";this._hidden=false;Meetup.Layout.redraw()},_useMaxMsg:function(){var newEl=this._statusEl.cloneNode(true);newEl.innerHTML=Meetup.Copy.CharCounter.upToXChars.replace("{CHAR_COUNT}",this._maxLen);newEl.className="limit";newEl.style.color="";this._msgEl.replaceChild(newEl,this._statusEl);if(this._hidden){this._show()}this._statusEl=newEl},_check:function(e){var newEl=this._statusEl.cloneNode(true);var inputStr=this._inputEl.value;var currentLen=this._getLen(inputStr);if(currentLen>this._maxLen){remVal=this._maxLen-currentLen;if(this._maxLen-currentLen==-1){newEl.innerHTML=Meetup.Copy.characterOver}else{newEl.innerHTML=Meetup.Copy.charactersOver.replace("{NUM_CHARS}",(-remVal).toString())}newEl.className="limit error";newEl.style.color="red"}else{if(currentLen==this._maxLen){newEl.innerHTML=Meetup.Copy.noCharactersLeft;newEl.className="limit warning";newEl.style.color="red"}else{if(currentLen<this._maxLen){remVal=this._maxLen-currentLen;if(this._maxLen-currentLen==1){newEl.innerHTML=Meetup.Copy.characterLeft}else{newEl.innerHTML=Meetup.Copy.charactersLeft.replace("{NUM_CHARS}",remVal.toString())}newEl.className="limit";newEl.style.color=""}}}this._msgEl.replaceChild(newEl,this._statusEl);if(this._hidden){this._show()}this._statusEl=newEl},_getLen:function(inputStr){if(!inputStr.match(/(\r\n)/)){if(inputStr.match(/(\r)/)){inputStr=inputStr.replace(/(\r)/g,"xx")}else{if(inputStr.match(/(\n)/)){inputStr=inputStr.replace(/(\n)/g,"xx")}}}return inputStr.length},__repr__:function(){return"Meetup.DomDeco.CharCounter"}};Meetup.Cache={};(function(){var buckets={};var defaultKey="_";var self=Meetup.Cache;self.get=function(bucket,key){return self.has(bucket,key)?_getBucket(bucket)[key]:null};self.update=function(bucket,obj){update(_getBucket(bucket),obj);return obj};self.bustCache=function(bucket){buckets[bucket]={}};self.has=function(bucket,key){return(bucket in buckets&&key in buckets[bucket])};self.put=function(bucket,key,obj){var _bucket=_getBucket(bucket||defaultKey);_bucket[key]=obj;return(obj)};self.bindToBucket=function(bucket){return{get:partial(self.get,bucket),has:partial(self.has,bucket),put:partial(self.put,bucket),update:partial(self.update,bucket)}};var _getBucket=function(bucketKey){return(buckets[bucketKey])||_newBucket(bucketKey)};var _newBucket=function(bucketKey){var _bucket=buckets[bucketKey]={};return _bucket};self.__repr__=function(){return"Meetup.Cache"}})();Meetup.Http={};(function(){var _deferreds=[];var _http=Meetup.Http;var _cache=Meetup.Cache.bindToBucket("http");_http.abortAll=function(){forEach(_deferreds,function(d){d.cancel()});_deferreds=[]};_http.get=function(url){var cached=_cache.get(url);if(cached){return succeed(cached)}else{var d=doXHR(url);_deferreds.push[d];d.addCallbacks(_http.sniff,_http.error);d.addCallback(partial(_cache.put,url));return d}};_http.post=function(url,payload){var d=doXHR(url,{method:"POST",sendContent:payload,headers:{"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"}});_deferreds.push[d];d.addCallbacks(_http.sniff,_http.error);return d};_http.error=function(response){LOG.error("http request failed. i don't know why: "+response);return response};_http.sniff=function(response){var mimeType=response.getResponseHeader("Content-Type");if(mimeType.indexOf("application/json")>-1){return evalJSONRequest(response)}else{return response}};_http.rpcURL=function(method,args){return"/api/"+((method||args)?"?"+queryString(update({method:method},(args||{}))):"")};_http.webAJAX=function(fragment){return(Chapter.groupURL||"")+"?__fragment="+fragment};_http.formatRpcDate=function(dt){var d=dt?dt:new Date();var pad=function(num){return(num<10)?"0"+num:num};return d.getFullYear()+"-"+pad(d.getMonth()+1)+"-"+pad(d.getDate())+" "+pad(d.getHours())+":"+pad(d.getMinutes())+":"+pad(d.getSeconds())+" EDT"};_http.__repr__=function(){return"Meetup.Http"}})();Meetup.DomDeco.TopicSuggest=function(){bindMethods(this);this._dataPager=object(Meetup.TopicSuggestionData)};Meetup.DomDeco.TopicSuggest.prototype={_offset:0,_lastOffset:0,_pageSize:10,_saved_search:"",_suggsEl:null,_suggsBoxEl:null,_highlightEl:null,_deferredHide:null,_method:"suggestions",_suggClassName:"suggestion",_defaultToFirst:false,_query:null,_el:null,decorate:function(el,opts){if(!el){LOG.error("no element passed in to Meetup.DomDeco.TopicSuggest.decorate()");return}if(opts&&opts.method){this._method=opts.method}if(opts&&opts.delim){this._delim=[opts.delim]}if(opts&&opts.clearOnHide){this._clearOnHide=[opts.clearOnHide]}this._el=el;this._query=this._el.value;connect(el,"onkeyup",this._keyup);connect(el,"onkeydown",this._keydown);connect(el,"onblur",this._blur);this._stopActivity()},_blur:function(e){this._deferredHide=wait(0.25).addCallback(this._hide)},_suggest:function(search){if(search.length>0){this._startActivity();this._dataPager.abortAll();this._saved_search=search;var def=this._dataPager.getPage(search,this._offset,this._method);def.addCallbacks(this._showSuggs,this._requestFailed)}else{this._hide()}},_cancelHide:function(){if(this._deferredHide){this._deferredHide.cancel();this._deferredHide=null}},_goPrevPage:function(){this._cancelHide();this._lastOffset=this._offset;this._offset=(this._offset>1?this._offset-1:0);this._suggest(this._saved_search)},_goNextPage:function(){this._cancelHide();this._lastOffset=this._offset;this._offset+=1;this._suggest(this._saved_search)},_hide:function(){this._stopActivity();if(this._clearOnHide){this._el.value="";signal(this._el,"retip")}this._dataPager.abortAll();this._deferredHide=null;if(this._suggsBoxEl){this._cleanUpSuggs();if(IS_IE){hideSomeSelects()}removeElement(this._suggsBoxEl);this._suggsBoxEl=null;this._suggsEl=null}this._offset=0;this._lastOffset=0},_clickSugg:function(e){var t=e.src();this._selectSugg(t)},_selectSugg:function(el){this._el.value=(this._delim&&this._query?this._query+" "+unescapeHTML(el.innerHTML):unescapeHTML(el.innerHTML));this._hide();this._el.focus()},_clearHighlight:function(){var highlightEl=this._highlightEl||getFirstElementByTagAndClassName("DIV","selected",this._suggsEl);if(highlightEl){forEach(["selected","marked"],partial(removeElementClass,highlightEl))}this._highlightEl=null},_hoverSugg:function(e){var t=e.src();this._highlightSugg(t)},_highlightSugg:function(el){this._clearHighlight();this._highlightEl=el;addElementClass(this._highlightEl,"marked selected");this._el.focus()},_startActivity:function(){},_stopActivity:function(){},_DOM_sugg:function(sugg){return DIV({"class":this._suggClassName},sugg.name)},_DOM_previous:function(){if(this._offset>0){var prevDiv=DIV({"class":"suggest_prev"},IMG({src:"//img1.meetupstatic.com/img/725241163197637394255/membersearch/search_up.png"}));connect(prevDiv,"onclick",this._goPrevPage);return prevDiv}else{return null}},_DOM_more:function(suggs){if(suggs.length>this._pageSize){var moreDiv=DIV({"class":"suggest_more"},IMG({src:"//img1.meetupstatic.com/img/6989426032356839367205/membersearch/search_down.png"}));connect(moreDiv,"onclick",this._goNextPage);return moreDiv}else{return null}},_prevSuggEl:function(){return this._highlightEl?this._highlightEl.previousSibling:null},_nextSuggEl:function(el){return this._highlightEl?this._highlightEl.nextSibling:null},_lastSuggEl:function(){var last=this._suggsEl?this._suggsEl.lastChild:null;if(last&&hasElementClass(last,"suggest_more")){last=last.previousSibling}return last},_firstSuggEl:function(){var first=this._suggsEl?this._suggsEl.firstChild:null;if(first&&this._offset>0){first=first.nextSibling}return first},_cleanUpSuggs:function(){disconnectAll(this._suggsEl);this._highlightEl=null},_handleEmptySuggs:function(){if(this._defaultToFirst){this._unSetDefault()}this._hide()},_buildBox:function(){var suggsBoxEl=DIV({"class":"J_suggestions"});var rect=Meetup.Layout.getBoundingRect(this._el);setStyle(suggsBoxEl,{"z-index":4502,top:(rect.y+rect.h)+"px",width:(rect.w-2)+"px",left:rect.x+"px"});if(this._suggsBoxEl){this._cleanUpSuggs();this._suggsBoxEl=swapDOM(this._suggsBoxEl,suggsBoxEl)}else{this._suggsBoxEl=document.body.appendChild(suggsBoxEl)}if(IS_IE){hideSomeSelects(this._suggsBoxEl,true)}},_showSuggs:function(suggs){this._stopActivity();if(suggs==null){return}if(this._saved_search==""){return}if(suggs.length>0){this._hasViableSuggs=true;suggs[0].first=true;var suggsArr=[];forEach(suggs.slice(0,this._pageSize),function(s){var sugg=this._DOM_sugg(s);if(this._defaultToFirst&&s.first){this._setDefault(sugg)}connect(sugg,"onclick",this._clickSugg);connect(sugg,"onmouseover",this._hoverSugg);suggsArr.push(sugg)},this);var suggsEl=DIV({"class":"D_suggestions_wrap"},this._DOM_previous(),suggsArr,this._DOM_more(suggs));this._buildBox();this._suggsEl=suggsEl;appendChildNodes(this._suggsBoxEl,this._suggsEl);if(IS_IE){hideSomeSelects(this._suggsEl,true)}}else{this._handleEmptySuggs()}if(this._offset<this._lastOffset){this._highlightSugg(this._lastSuggEl())}else{if(this._offset>this._lastOffset){this._highlightSugg(this._firstSuggEl())}}this._el.focus()},_requestFailed:function(message){this._stopActivity();if(this._offset>0){this._goPrevPage()}LOG.error("REQUEST FAILED! Probably scrolled past last page... backing up.")},_keyup:function(e){var kbd=Meetup.Keyboard;var code=e.key().code;if(code==kbd.ESCAPE||code==kbd.ENTER||code==kbd.UP||code==kbd.DOWN||code==kbd.TAB||code==kbd.PAGE_UP||code==kbd.PAGE_DOWN){return}this._offset=0;this._lastOffset=0;var query=this._el.value;if(this._delim){query=this._getDelimedQuery(query)}if(this._defaultToFirst){this._unSetDefault()}this._suggest(query)},_keydown:function(e){if(!this._suggsEl){return}var kbd=Meetup.Keyboard;var code=e.key().code;switch(code){case kbd.UP:var prev=this._prevSuggEl();if(!prev){this._clearHighlight()}else{if(hasElementClass(prev,"suggest_prev")){this._goPrevPage()}else{this._highlightSugg(prev)}}break;case kbd.DOWN:var next=this._nextSuggEl();if(!next){if(!this._highlightEl){this._highlightSugg(this._firstSuggEl())}}else{if(hasElementClass(next,"suggest_more")){this._goNextPage()}else{this._highlightSugg(next)}}break;case kbd.PAGE_UP:e.stop();this._goPrevPage();break;case kbd.PAGE_DOWN:e.stop();this._goNextPage();break;case kbd.ENTER:if(this._hasViableSuggs){if(!this._highlightEl){this._highlightSugg(this._firstSuggEl())}this._selectSugg(this._highlightEl)}case kbd.TAB:if(this._highlightEl){if(code==kbd.ENTER){e.stop()}if(hasElementClass(this._highlightEl,"suggest_more")){this._goNextPage()}else{if(hasElementClass(this._highlightEl,"suggest_prev")){this._goPrevPage()}else{this._selectSugg(this._highlightEl)}}}break;case kbd.ESCAPE:this._hide();break}this._el.focus()},_getDelimedQuery:function(q){var query=q;var delim=null;var last=null;for(var i=0;i<this._delim.length;i++){delim=query.lastIndexOf(this._delim[i]);if(delim>last){last=delim}}if(last){var start=last+1;this._query=query.substring(0,start);query=ltrim(query.substr(start))}else{if(query.indexOf(this._query)<0){this._query=null}}return query},_setDefault:function(sugg){this._highlightSugg(sugg)},_unSetDefault:function(){this._clearHighlight()},__repr__:function(){return"Meetup.DomDeco.TopicSuggest"}};Meetup.TopicSuggestionData={deferreds:[],lastReqMillisec:0,_cache:Meetup.Cache.bindToBucket("TopicSuggestData"),abortAll:function(){forEach(this.deferreds,function(d){d.cancel()});this.deferreds=[]},_buildDeferred:function(method,qsObj){return Meetup.Http.post(Meetup.Http.rpcURL(method),queryString(qsObj))},getPage:function(search,offset,method){var key=trim(search)+":"+offset;var cached=this._cache.get(key);var now=new Date().getTime();if(cached){return succeed(cached)}else{if(this.lastReqMillisec!=0&&((now-this.lastReqMillisec)<100)){return succeed(null)}else{var d=this._buildDeferred(method,{arg_offset:offset,arg_token:trim(search),arg_language:Meetup.Language,arg_urlDecode:true});this.deferreds.push[d];d.addCallback(partial(this._cache.put,key));this.lastReqMillisec=now;return d}}},__repr__:function(){return"Meetup.TopicSuggestionData"}};Meetup.DomDeco.MemberLiveSearch=function(){bindMethods(this);this._dataPager=object(Meetup.MemberSuggestionData)};Meetup.DomDeco.MemberLiveSearch.prototype=new Meetup.DomDeco.TopicSuggest();update(Meetup.DomDeco.MemberLiveSearch.prototype,{_clearOnHide:true,_clearOnHide:true,_method:"memberSuggestions",_popupWidth:0,_pageSize:5,_suggClassName:"D_memberSugg suggestion",_startActivity:function(){this._el.style.backgroundImage="url(http://img1.meetupstatic.com/img/467445229433893/spinner_ffffff.gif)"},_stopActivity:function(){this._el.style.backgroundImage="url(http://img1.meetupstatic.com/img/8388601600571312/thirdparty/fff/silk/magnifier.png)"},_DOM_sugg:function(sugg){var memUrl=this._memberUrl?this._memberUrl:String(Meetup.MemberSuggestionData._chapterBaseUrl)+"members/"+String(sugg.id)+"/";var highlightTerm=function(subject,term){var pipedTerm=term.replace(/\s+/g,"|");var highlightRegex=new RegExp("\\b("+pipedTerm+")","gi");var spanEl=SPAN(null);spanEl.innerHTML=subject.replace(highlightRegex,"<strong>$1</strong>");return spanEl};nameEl=highlightTerm(trim(sugg.name),trim(this._el.value));titleEl=highlightTerm(trim(sugg.title),trim(this._el.value));return DIV({"class":this._suggClassName+" clr",id:sugg.id},DIV({"class":"D_suggElement image"},IMG({src:sugg.photo})),DIV({"class":"D_suggElement info"},DIV(null,A({"class":"memberLink",href:memUrl},SPAN({id:"member_name"},nameEl))),DIV(null,SPAN({"class":"D_less"},titleEl))))},_selectSugg:function(el){window.location=getNodeAttribute(getFirstElementByTagAndClassName("a","memberLink",el),"href")},_handleEmptySuggs:function(){var noMatchEl=getFirstElementByTagAndClassName("DIV","D_suggest_noResults",this._suggsBoxEl);if(!noMatchEl){noMatchEl=DIV({"class":"D_suggest_noResults"});if(!this._suggsBoxEl){this._buildBox();appendChildNodes(this._suggsBoxEl,noMatchEl)}else{insertSiblingNodesBefore(this._suggsBoxEl.firstChild,noMatchEl)}}var inner=SPAN({"class":"sprite bullet_error_icon spritebg"});var p=P({"class":"spritebg_left"});replaceChildNodes(noMatchEl,inner,p);p.innerHTML=Meetup.Copy.noMembersFound.replace("__MEMBER_NAME__",String(this._el.value))}});Meetup.MemberSuggestionData=clone(Meetup.TopicSuggestionData);update(Meetup.MemberSuggestionData,{_currentMemberId:"",_currentChapterId:"",_cache:Meetup.Cache.bindToBucket("MemberSuggest"),_buildDeferred:function(method,qsObj){update(qsObj,{method:method,arg_memberId:Meetup.MemberSuggestionData._currentMemberId,arg_chapter:Meetup.MemberSuggestionData._currentChapterId});if(method=="memberSuggestionsExclude"){update(qsObj,{arg_excludeMemberIds:Meetup.MemberSuggestionData._excludeIds})}return loadJSONDoc(String(Meetup.MemberSuggestionData._chapterBaseUrl)+"api/",qsObj)},__repr__:function(){return"Meetup.MemberSuggestionData"}});Meetup.DomDeco.LocationLiveSearch=function(){bindMethods(this);this._dataPager=object(Meetup.LocationSuggestionData)};Meetup.DomDeco.LocationLiveSearch.prototype=new Meetup.DomDeco.TopicSuggest();update(Meetup.DomDeco.LocationLiveSearch.prototype,{_method:"getLocationMatches",_suggClassName:"D_locationSugg",_defaultToFirst:true,_extendedDecoration:[],_DOM_sugg:function(sugg){var highlightTerm=function(subject,term){var pipedTerm=term.replace(/\s+/g,"|");var highlightRegex=new RegExp("\\b("+pipedTerm+")","gi");var spanEl=SPAN(null);spanEl.innerHTML=subject.replace(highlightRegex,"<strong>$1</strong>");return spanEl};nameEl=highlightTerm(sugg.name,this._el.value);return DIV({"class":"D_locationSugg suggestion",id:sugg.id,title:sugg.name},nameEl)},_selectSugg:function(el){this._el.value=el.title;this._el.form.mcId.value=el.id;this._el.form.mcName.value=el.title;this._el.form.lat.value="";this._el.form.lon.value="";this._hide();this._el.focus()},_setDefault:function(sugg){this._highlightSugg(sugg);this._el.form.mcId.value=sugg.id;this._el.form.mcName.value=sugg.name;this._el.form.lat.value="";this._el.form.lon.value=""},_unSetDefault:function(){this._clearHighlight();this._el.form.mcId.value="";this._el.form.mcName.value="";this._el.form.lat.value="";this._el.form.lon.value=""},_handleEmptySearchField:function(){this._hasViableSuggs=false;this._unSetDefault()},_handleEmptySuggs:function(){this._hasViableSuggs=false;this._unSetDefault();var possibleCA=this._el.value+("A1A 1A1").substring(this._el.value.length);var possibleUK6=this._el.value+("KA7 2NU").substring(this._el.value.length);var possibleUK7=this._el.value+("SW11 1AA").substring(this._el.value.length);var mightBePostal=((this._el.value.length<5)&&this._el.value.match(/^\d{1,5}$/)||(this._el.value.length<7)&&possibleCA.match(/^[A-Z]{1}\d{1}[A-Z]{1} \d{1}[A-Z]{1}\d{1}$/i)||(this._el.value.length<7)&&possibleUK6.match(/^[A-Z]{2}[0-9][0-9A-Z]? [0-9][A-Z]{2}$/i)||(this._el.value.length<8)&&possibleUK7.match(/^[A-Z]{2}[0-9][0-9A-Z]? [0-9][A-Z]{2}$/i))?true:false;var noMatchEl=getFirstElementByTagAndClassName("DIV","D_suggest_noResults",this._suggsBoxEl);if(!noMatchEl){noMatchEl=DIV({"class":"D_suggest_noResults"});if(!this._suggsBoxEl){this._buildBox();appendChildNodes(this._suggsBoxEl,noMatchEl)}else{if(mightBePostal){replaceChildNodes(this._suggsBoxEl,noMatchEl)}else{insertSiblingNodesBefore(this._suggsBoxEl.firstChild,noMatchEl)}}}var msgEl=DIV({"class":"suggest_msg"});if(mightBePostal){msgEl.innerHTML="<span class='D_empty'>Looking up your postal code&hellip; keep typing.</span>"}else{var inner=SPAN({"class":"sprite spritebg_right bullet_error_icon spritebg"});msgEl.innerHTML="No matches for <strong class='D_searchTerm'>"+String(this._el.value)+"</strong>."}replaceChildNodes(noMatchEl,inner,msgEl)}});Meetup.LocationSuggestionData=clone(Meetup.TopicSuggestionData);Meetup.LocationSuggestionData._currentLocationId="";update(Meetup.LocationSuggestionData,{_cache:Meetup.Cache.bindToBucket("LocationSuggest"),_buildDeferred:function(method,qsObj){update(qsObj,{method:method,arg_lat:Meetup.GeoLat,arg_lon:Meetup.GeoLon});return loadJSONDoc("/api/",qsObj)},__repr__:function(){return"Meetup.LocationSuggestionData"}});namespace("UI");Meetup.UI.Dialog={};(function(){var self=Meetup.UI.Dialog;var lay=Meetup.Layout;var _defaultBlockedElementId="C_pageBody";var _blockingDiv=null;var _dialogs={};self.showModal=function(dialogEl,blocksEl,requiredFields){var dialogBodyEl=getElement(dialogEl);var dialog={element:_makeDialog(dialogBodyEl),blocks:(getElement(blocksEl)||getElement(_defaultBlockedElementId)),deferred:new Deferred(),required:(requiredFields||[])};dialog.id=dialog.deferred.id;if(!dialog.element||!dialog.blocks){LOG.error("missing required element for modal dialog!");return}connect(get1st("div","D_dialogActions",dialog.element),"onclick",partial(_handleActionClick,dialog));connect(get1st("div","D_dialogBody",dialog.element),"onclick",partial(_handleBodyClick,dialog));connect(dialog.element,"onkeydown",partial(_handleKeyDown,dialog));setStyle(dialog.element,{position:"absolute",display:"none"});appendChildNodes(document.body,dialog.element);_dialogs[dialog.id]=dialog;_appear(dialog);return dialog.deferred};self.kill=function(dialogId){var dialog=_dialogs[dialogId];if(dialog){if("deferred" in dialog){dialog.deferred.cancel();delete dialog.deferred}_hide(dialog);_disposeOfTheBody(dialog)}};self.killAll=function(){for(var dialogId in _dialogs){self.kill(dialogId)}};var _handleActionClick=function(dialog,e){e.stop();var targ=e.target();if(hasElementClass(targ,"D_dialog_close")||hasElementClass(targ.parentNode,"D_dialog_close")){_dismiss(dialog)}else{_return(dialog)}};var _handleBodyClick=function(dialog,e){var clickEl=e.target();if(Meetup.DOM.isButton(clickEl)){e.stop();_return(dialog)}else{if(hasElementClass(clickEl,"cancel-link")){e.stop();_dismiss(dialog)}}};var _makeDialog=function(dialogBodyEl){if(!dialogBodyEl.id){dialogBodyEl.id="dialog"+_nextNum()}if(isChildNode(dialogBodyEl,document.body)){removeElement(dialogBodyEl)}return DIV({"class":"D_dialog"},DIV({"class":"D_dialogActions"},DIV({"class":"D_dialog_close"},DIV({title:"Close this"},"x"))),DIV({"class":"D_dialogBody"},dialogBodyEl))};var _nextNum=counter();var _handleKeyDown=function(dialog,e){switch(e.key().code){case Meetup.Keyboard.ENTER:_return(dialog);break;default:break}};var _getTargetRect=function(dialog){var dialogRect=lay.getBoundingRect(dialog.element);var blocksElRect=lay.getBoundingRect(dialog.blocks);return{x:((blocksElRect.w-dialogRect.w)/2)+blocksElRect.x,y:((blocksElRect.h-dialogRect.h)/2)+blocksElRect.y,w:dialogRect.w,h:dialogRect.h}};var _appear=function(dialog){var dialogRect=_getTargetRect(dialog);setElementPosition(dialog.element,{x:dialogRect.x,y:dialogRect.y});dialog.element.style.display="block";var escEvent=connect(document,"onkeyup",function(e){if(e.key().code==Meetup.Keyboard.ESCAPE){disconnect(escEvent);_dismiss(dialog)}});_blockingDiv=DIV({style:"z-index:1001;width: 100%; height:100%; background-color:#999; top: 0; left: 0; position:fixed"});setOpacity(_blockingDiv,0.4);document.body.appendChild(_blockingDiv);addElementClass(dialog.blocks,"blocked-by-modal")};var _hide=function(dialog){if("element" in dialog){hideElement(dialog.element);removeElementClass(dialog.blocks,"blocked-by-modal");removeElement(_blockingDiv)}};var _disposeOfTheBody=function(dialog){if("element" in dialog){disconnectAll(dialog.element);disconnectAll(get1st("div","D_dialogActions",dialog.element));disconnectAll(get1st("div","D_dialogBody",dialog.element));removeElement(dialog.element);delete dialog.element}};var _return=function(dialog){_hide(dialog);dialog.deferred.callback(parseQueryString(queryString(formContents(dialog.element))));_disposeOfTheBody(dialog)};var _dismiss=function(dialog,e){_hide(dialog);dialog.deferred.callback();_disposeOfTheBody(dialog)}})();Meetup.UI.Success={};(function(){var self=Meetup.UI.Success;var successElm=function(txt,foot){var successBox=DIV({"class":"D_box success",style:"display:none"},DIV({"class":"D_boxbody"},DIV({id:"success_box","class":"D_boxhead"},H2(null,null)),(foot?DIV({"class":"D_boxfoot"},null):null)));var h2=get1st("h2",null,successBox);h2.innerHTML=txt;if(foot){var f=get1st("DIV","D_boxfoot",successBox);f.innerHTML=foot}return successBox};self.addSuccess=function(txt,foot){var f=foot||null;var doc=$("C_document");if(!doc||!txt){return false}var successBox=$("success_box");if(successBox){removeElement(successBox.parentNode.parentNode)}successBoxContainer=doc.insertBefore(successElm(txt,f),doc.firstChild);if(typeof(Meetup.Tweener)!="undefined"){setOpacity(successBoxContainer,0);successBoxContainer.style.display="block";Meetup.Tweener.addTween(successBoxContainer,{opacity:1,time:0.4})}else{successBoxContainer.style.display="block"}return successBoxContainer}})();if(typeof(Meetup.LocPicker)=="undefined"){Meetup.LocPicker={}}Meetup.LocPicker.Location={country:null,zip:null,set:function(co,zip){this.country=co;this.zip=zip},hasPostalCodes:function(){return(this.country=="us"||this.country=="ca"||this.country=="gb")},hasStates:function(){return(this.country=="it")},getZipLabel:function(){if(this.country=="us"){return Meetup.Copy.locPickerZipCode}else{if(this.country=="ca"){return Meetup.Copy.locPickerPostalCode}else{if(this.country=="gb"){return Meetup.Copy.locPickerPostcode}else{return Meetup.Copy.locPickerCity}}}},getLocZip:function(){return this.zip},getLocCountry:function(){return this.country}};Meetup.LocPicker.Menu={CONTAINER_ID:"locMenu",COUNTRY_MENU_ID:"co",ZIP_FIELD_ID:"zip",ZIP_LABEL_ID:"zipLabel",READY_ID:"ready",REF_FIELD_ID:"locationPickerRef",INVALID_ID:"NOTME",POST_DOM:null,PROV_DOM:null,CITY_DOM:null,MAIN_EL_ID:"locPicker",ELEM_TAG:"",ELEM_CLS:"",DOM_ASSOC:{it:this.PROV_DOM,us:this.POST_DOM,ca:this.POST_DOM,gb:this.POST_DOM},setWaiting:function(){document.getElementById(this.CONTAINER_ID).style.cursor="wait";document.getElementById(this.ZIP_LABEL_ID).innerHTML=Meetup.Copy.locPickerloadingCities},setReady:function(){document.getElementById(this.CONTAINER_ID).style.cursor="";document.getElementById(this.ZIP_LABEL_ID).innerHTML=Meetup.LocPicker.Location.getZipLabel();Meetup.LocPicker.doLocPickerReadyCallback()},showZipField:function(){var mainEl=document.getElementById(this.MAIN_EL_ID);mainEl.innerHTML="";var clonedEl=mainEl.appendChild(this.POST_DOM.cloneNode(true));Meetup.LocPicker.Events.findConnectibles();signal(mainEl,"fieldshow")},showCityMenu:function(){var mainEl=document.getElementById(this.MAIN_EL_ID);mainEl.innerHTML="";var clonedEl=mainEl.appendChild(this.CITY_DOM.cloneNode(true));Meetup.LocPicker.Events.findConnectibles();signal(mainEl,"fieldshow")},showStateMenu:function(){var mainEl=document.getElementById(this.MAIN_EL_ID);mainEl.innerHTML="";var clonedEl=mainEl.appendChild(this.PROV_DOM.cloneNode(true));Meetup.LocPicker.Events.findConnectibles();signal(mainEl,"fieldshow")},rebuildCityMenu:function(cities){var P=Meetup.LocPicker;this.showCityMenu();var citySel=document.getElementById("locSwitchable").getElementsByTagName("select")[0];for(var i=0;i<cities.length;i++){if(cities[i].code!=null){var newOpt=citySel.appendChild(document.createElement("option"));newOpt.setAttribute("value",cities[i].code);if(cities[i].code==Meetup.LocPicker.initialZip){newOpt.selected="selected";newOpt.setAttribute("selected","selected");P.initialZip=""}newOpt.innerHTML=cities[i].name}}this.setReady();citySel.onchange=Meetup.LocPicker.updateZip;Meetup.LocPicker.updateZip()},rebuildStatesMenu:function(states){this.showStateMenu();var provSel=document.getElementById("locSwitchable").getElementsByTagName("select")[0];var provCitySel=document.getElementById("locSwitchable").getElementsByTagName("select")[1];var newOpt=provSel.appendChild(document.createElement("option"));newOpt.setAttribute("value",Meetup.LocPicker.Menu.INVALID_ID);newOpt.innerHTML=Meetup.Copy.locPickerSelectProvince;for(var i=0;i<states.length;i++){if(states[i].code!=null){var newOpt=provSel.appendChild(document.createElement("option"));newOpt.setAttribute("value",states[i].code);if(states[i].code==Meetup.LocPicker.initialState){newOpt.selected="selected";newOpt.setAttribute("selected","selected")}newOpt.innerHTML=states[i].name}}provSel.onchange=Meetup.LocPicker.switchState;this.setReady();if(Meetup.LocPicker.initialState.length>0){Meetup.LocPicker.initialState="";Meetup.LocPicker.switchState()}},rebuildStateCitiesMenu:function(cities){var P=Meetup.LocPicker;var zipEl=document.getElementById("locSwitchable").getElementsByTagName("select")[1];var citySel=zipEl.cloneNode(true);Meetup.LocPicker.Events.makeConnectible(citySel);while(citySel.hasChildNodes()){citySel.removeChild(citySel.firstChild)}var newOpt=citySel.appendChild(document.createElement("option"));newOpt.setAttribute("value",Meetup.LocPicker.Menu.INVALID_ID);newOpt.innerHTML=Meetup.Copy.locPickerSelectCity;for(var i=0;i<cities.length;i++){if(cities[i].code!=null){var newOpt=document.createElement("option");newOpt.setAttribute("value",cities[i].code);if(cities[i].code==Meetup.LocPicker.initialZip){newOpt.selected="selected";newOpt.setAttribute("selected","selected");P.initialZip=""}newOpt.innerHTML=cities[i].name;citySel.appendChild(newOpt)}}zipEl.parentNode.replaceChild(citySel,zipEl);this.setReady();citySel.onchange=Meetup.LocPicker.updateZip;Meetup.LocPicker.updateZip()},getCountry:function(){var menu=document.getElementById(this.COUNTRY_MENU_ID);return menu[menu.selectedIndex].value},getZip:function(){var zipField;if((zipField=document.getElementById(this.ZIP_FIELD_ID))!=null){return zipField.value}else{return Meetup.LocPicker.Location.zip}},getLocationDOM:function(){if(this.getCountry()=="us"){return A({href:""},this.getZip())}else{return A({href:""},this.getZip(),", ",this.getCountry())}},setZip:function(z){document.getElementById(this.ZIP_FIELD_ID).value=String(z)},addClass:function(clsNm,el){if(el==null){return}el.className=el.className+" "+String(clsNm)},removeClass:function(clsNm,el){if(typeof(el)=="string"){el=document.getElementById(el)}if(el==null){return}var classes=el.className.split(" ");var newCls="";for(var i in classes){if(classes[i].length>0&&classes[i]!=clsNm){newCls+=classes[i]+" "}}el.className=newCls},init:function(){if(this.ELEM_TAG.length<1){return}var mc=Meetup.Copy;var html;var initZip=Meetup.LocPicker.initialZip;this.POST_DOM=document.createElement(this.ELEM_TAG);this.POST_DOM.setAttribute("id","locSwitchable");html='<span class="label"><label for="zip" id="'+this.ZIP_LABEL_ID+'">'+mc.locPickerCity+"</label></span>";html+='<span class="input"><input type="text" id="zip" name="zip" value="'+((initZip.indexOf("meetup")>-1)?"":initZip)+'" class="locNameUpdateZip"  /></span>';this.POST_DOM.innerHTML=html;this.PROV_DOM=document.createElement(this.ELEM_TAG);this.PROV_DOM.setAttribute("id","locSwitchable");html='<div class="pickerUnit"><span class="label"><label for="state">'+mc.locPickerProvince+"</label></span>";html+='<span class="input"><select name="state" id="stateSel" class="locNameUpdateState"></select></span></div>';html+='<div class="pickerUnit"><span class="label"><label for="city" id="'+this.ZIP_LABEL_ID+'">'+mc.locPickerCity+"</label></span>";html+='<span class="input"><select name="zip" id="zip" class="locNameUpdateZip locNameUpdateCity"></select></span></div>';this.PROV_DOM.innerHTML=html;this.CITY_DOM=document.createElement(this.ELEM_TAG);this.CITY_DOM.setAttribute("id","locSwitchable");html='<span class="label"><label for="zip" id="'+this.ZIP_LABEL_ID+'">'+mc.locPickerCity+"</label></span>";html+='<span class="input"><select name="zip" id="zip" class="locNameUpdateZip locNameUpdateCity"></select></span>';this.CITY_DOM.innerHTML=html}};Meetup.LocPicker.doLocPickerReadyCallback=function(){};Meetup.LocPicker.Events={evTypes:{onblur:[],onfocus:[]},connect:function(obj,ev,func){if(typeof this.evTypes[ev]=="undefined"){return false}this.evTypes[ev].push({obj:obj,func:func})},makeConnectible:function(el){scope=this;el.onblur=this.blur;el.onfocus=this.focus},findConnectibles:function(el){obj=this;var connectThese=function(els){for(i in els){obj.makeConnectible(els[i])}};connectThese(document.getElementById("locSwitchable").getElementsByTagName("select"));connectThese(document.getElementById("locSwitchable").getElementsByTagName("input"))},blur:function(){for(f in scope.evTypes.onblur){scope.evTypes.onblur[f].func.call(scope.evTypes.onblur[f].obj)}},focus:function(){for(f in scope.evTypes.onfocus){scope.evTypes.onfocus[f].func.call(scope.evTypes.onfocus[f].obj)}}};Meetup.LocPicker.DataGetter={doRemote:function(obj,url,success,error){if(window.XMLHttpRequest){req=new XMLHttpRequest()}else{if(window.ActiveXObject){req=new ActiveXObject("Microsoft.XMLHTTP")}}try{req.onreadystatechange=function(){if(req.readyState==4){if(req.status==200){success.call(obj,req)}else{error.call(obj,req)}}};req.open("GET",url,true);req.send(null)}catch(e){}}};Meetup.LocPicker.CityObjectDataGetter={cache:{},callbacks:[],userActivityHandler:function(){var P=Meetup.LocPicker;if(this.callbacks.length>0&&P.Location.country){this.getCityObj(P.Location.country,P.Location.zip)}},parseZip:function(co,zip){var z=""+zip;if(co=="us"){if(z.length>=5){z=z.substring(0,5)}else{return false}}else{if(co=="ca"){z=z.replace(/\s/,"");if(z.length==6&&z.indexOf(" ")==-1){z=z.substring(0,3)+" "+z.substring(3)}else{return false}}else{if(co=="gb"){z=z.replace(/\s/g,"");if((z.length==6||z.length==7)&&z.indexOf(" ")==-1){z=z.substring(0,z.length-3)+" "+z.substring(z.length-3)}else{return false}}else{if(co=="it"){if(z=="NOTME"){return false}}}}}return z},addCallback:function(obj,func){this.callbacks.push({obj:obj,func:func})},getCityObj:function(co,zip){if(this.cache[zip]){Meetup.LocPicker.Menu.rebuildCityMenu(this.cache[co]);return}var P=Meetup.LocPicker;var co=co;var zip=this.parseZip(co,zip);var url="/api/?method=getCityName&arg_country="+co+"&arg_zip="+zip;var success=function(req){var city;if(req.responseText&&(city=eval("("+req.responseText+")"))){P.LocaleDataGetter.cache[zip]=city;for(c in this.callbacks){this.callbacks[c].func.call(this.callbacks[c].obj,city)}}else{}};var error=function(req){};if(co&&zip){Meetup.LocPicker.DataGetter.doRemote(this,url,success,error)}else{if(co){var req="{'country':"+co+"}";success(req)}else{}}}};Meetup.LocPicker.LocaleDataGetter={cache:{},deserialize:function(str){var cis=str.split("||");var retArray=new Array();for(var i=0;i<cis.length;i++){var iCi=cis[i].split("::");if(iCi[0]&&iCi[1]){retArray[retArray.length]={name:iCi[0].replace(/^\s*|\s*$/g,""),code:iCi[1].replace(/^\s*|\s*$/g,"")}}}return retArray},getCities:function(co){if(this.cache[co]){Meetup.LocPicker.Menu.rebuildCityMenu(this.cache[co]);return}var P=Meetup.LocPicker;var co=co;var url="/get-loc-data.jsp?co="+co;var success=function(req){if(req.responseText){var locs=req.responseText;if(locs.length<1){}else{var cities=P.LocaleDataGetter.deserialize(locs);P.LocaleDataGetter.cache[co]=cities;P.Menu.rebuildCityMenu(cities);P.Menu.setReady()}}else{}P.Menu.setReady()};var error=function(req){P.Menu.setReady()};Meetup.LocPicker.DataGetter.doRemote(this,url,success,error)},getStates:function(co){var P=Meetup.LocPicker;var co=co;var url="/get-loc-data.jsp?co="+co;var success=function(req){if(req.responseText){var locs=req.responseText;if(locs.length<1){}else{if(P.TESTING){var states=[{code:"1",name:"Albequerque"},{code:"1",name:"Heavens to Betsy"},{code:"1",name:"Gilgamesh"}]}else{var states=P.LocaleDataGetter.deserialize(locs)}P.LocaleDataGetter.cache[co]=states;P.Menu.rebuildStatesMenu(states);P.Menu.setReady()}}else{}P.Menu.setReady()};var error=function(req){P.Menu.setReady()};Meetup.LocPicker.DataGetter.doRemote(this,url,success,error)},getStateCities:function(){var P=Meetup.LocPicker;var co=P.Menu.getCountry();var provSel=document.getElementById("locSwitchable").getElementsByTagName("select")[0];var stateName=provSel.options[provSel.selectedIndex].value;var url="/get-loc-data.jsp?co="+co+"&st="+stateName;var success=function(req){if(req.responseText){var locs=req.responseText;if(locs.length<1){}else{var cities=P.LocaleDataGetter.deserialize(locs);P.LocaleDataGetter.cache[co]=cities;P.Menu.rebuildStateCitiesMenu(cities);P.Menu.setReady()}}else{}P.Menu.setReady()};var error=function(req){P.Menu.setReady()};Meetup.LocPicker.DataGetter.doRemote(this,url,success,error)}};Meetup.LocPicker.switchCountry=function(){var P=Meetup.LocPicker;if(P.Location.hasPostalCodes()){P.Menu.showZipField();P.Menu.removeClass("doWrap","locMenu");if(P.initialZip&&P.initialZip.length>0){if((P.Location.country=="us"&&!isNaN(P.initialZip))||(P.Location.country=="ca"&&P.initialZip.replace(/[ ]*/g,"").length==6&&!(/[^0-9a-zA-Z ]/g.test(P.initialZip)))||(P.Location.country=="gb"&&(P.initialZip.replace(/[ ]*/g,"").length==6||P.initialZip.replace(/[ ]*/g,"").length==7)&&!(/[^0-9a-zA-Z ]/g.test(P.initialZip)))){P.Menu.setZip(P.initialZip)}P.initialZip=""}var zipEl=document.getElementById("locSwitchable").getElementsByTagName("input")[0];zipEl.onkeyup=Meetup.LocPicker.updateZip;P.Menu.setReady()}else{if(P.Location.hasStates()){P.Menu.showStateMenu();P.Menu.setWaiting();P.Menu.addClass("doWrap","locMenu");P.LocaleDataGetter.getStates(P.Location.country)}else{P.Menu.showCityMenu();P.Menu.setWaiting();P.Menu.removeClass("doWrap","locMenu");P.LocaleDataGetter.getCities(P.Location.country)}}};Meetup.LocPicker.switchState=function(){var P=Meetup.LocPicker;P.LocaleDataGetter.getStateCities()};Meetup.LocPicker.updateZip=function(){var P=Meetup.LocPicker;P.Location.set(P.Menu.getCountry(),P.Menu.getZip());P.CityObjectDataGetter.userActivityHandler()};Meetup.LocPicker.__init__=function(){var P=Meetup.LocPicker;P.Menu.init();P.Location.set(P.initialCountry,P.initialZip);var co=document.getElementById("co");if(Meetup.UserAgent&&Meetup.UserAgent.isSafari()&&co!=undefined){for(var i in co.options){if(co.options[i].value==P.Location.country){co.options[i].selected="selected"}else{co.options[i].selected=""}}}P.initialCountry="";var countryMenu=document.getElementById(P.Menu.COUNTRY_MENU_ID);Meetup.LocPicker.Events.makeConnectible(countryMenu);countryMenu.onchange=function(){var P=Meetup.LocPicker;P.Location.set(P.Menu.getCountry(),P.Menu.getZip());P.switchCountry()};P.switchCountry()};Meetup.Keyboard={UP:38,ESCAPE:27,DOWN:40,ENTER:13,PAGE_UP:33,PAGE_DOWN:34,TAB:9};Meetup.DomDeco.PNGrite=function(){};Meetup.DomDeco.PNGrite.prototype={decorate:function(el){if(!el){LOG.error("No element passed into Meetup.DomDeco.PNGrite!?");return false}var imgEl=el;var imgUrl=(Meetup.isSecure)?"https://secure.meetup.com/img/94038890976300987/clear.gif":"http://img1.meetupstatic.com/img/94038890976300987/clear.gif";if(IS_IE){imgEl.style.padding="0!important";imgEl.style.width=imgEl.offsetWidth+"px";imgEl.style.height=imgEl.offsetHeight+"px";imgEl.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+imgEl.src+"',sizingMethod='scale')";imgEl.src=imgUrl}}};Meetup.DomDeco.NewFeature=function(){bindMethods(this)};Meetup.DomDeco.NewFeature.prototype={decorate:function(el){if(!el){LOG.error("no element passed in to Meetup.DomDeco.NewFeature.decorate()");return}this._barId=$("barId").value;connect("hideNewFeatures","onclick",this._hideHandler);var elm=removeElement("featureBalloons");Meetup.Layout.positionOnElementEdge(elm,"newFeatureBox",Meetup.Layout.NORTHEAST,{x:-43,y:-8});elm.style.display="block"},_hideHandler:function(e){setCookie("NewFeature_"+this._barId,"true",14,"/",COOKIE_DOMAIN,false);hideElement("newFeatureBox");hideElement("featureBalloons")},_barId:null,__repr__:function(){return"Meetup.DomDeco.NewFeature"}};if(typeof(Meetup.Copy)!="object"){Meetup.Copy={}}if(!Meetup.Copy.i18NShortMonthNames){Meetup.Copy.i18NShortMonthNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}if(!Meetup.Copy.i18NMonthNames){Meetup.Copy.i18NMonthNames=["January","February","March","April","May","June","July","August","September","October","November","December"]}if(!Meetup.Copy.i18NDayNames){Meetup.Copy.i18NDayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}Meetup.i18N=(function(){var locales=[];locales.en_US={dateStyle:{shortDate:"m/d/y",mediumDate:"M D, Y",longDate:"M D, Y",fullDate:"E, M D, Y"},timeStyle:{shortTime:"h:mm T",mediumTime:"h:mm:ss T"},commaStr:",",decimalStr:"."};locales.it={dateStyle:{shortDate:"d/m/y",mediumDate:"D-M-Y",longDate:"D M Y",fullDate:"E D M Y"},timeStyle:{shortTime:"H.mm",mediumTime:"H.mm.ss"},commaStr:".",decimalStr:","};locales.de={dateStyle:{shortDate:"d.m.y",mediumDate:"d.m.Y",longDate:"D. M Y",fullDate:"E, D. M Y"},timeStyle:{shortTime:"HH:mm",mediumTime:"HH:mm:ss"},commaStr:".",decimalStr:","};locales.es={dateStyle:{shortDate:"D/m/y",mediumDate:"d-M-Y",longDate:"D #de# M #de# Y",fullDate:"E D #de# M #de# Y"},timeStyle:{shortTime:"H:mm",mediumTime:"H:mm:ss"},commaStr:".",decimalStr:","};locales.fr={dateStyle:{shortDate:"d/m/y",mediumDate:"D M Y",longDate:"D M Y",fullDate:"E D M Y"},timeStyle:{shortTime:"HH:mm",mediumTime:"HH:mm:ss"},commaStr:".",decimalStr:","};locales.pt={dateStyle:{shortDate:"d-m-Y",mediumDate:"D/M/Y",longDate:"D #de# M #de# Y",fullDate:"E, D #de# M #de# Y"},timeStyle:{shortTime:"H:mm",mediumTime:"H:mm:ss"},commaStr:".",decimalStr:","};var pad=function(num){return(num<10)?"0"+num:num};return{convertCurrency:function(number){var amount=parseFloat(number).toFixed(2);var isFloat=new RegExp("(-?[0-9]+)(.)([0-9]{2})");var sRegExp=new RegExp("(-?[0-9]+)([0-9]{3})");var dollars=amount.replace(isFloat,"$1");var decimals=amount.replace(isFloat,"$3");while(sRegExp.test(dollars)){var commaStr=locales[Meetup.Language].commaStr;dollars=dollars.replace(sRegExp,"$1"+commaStr+"$2")}var decimalStr=locales[Meetup.Language].decimalStr;return dollars+decimalStr+decimals},formatNumber:function(number){var decimalStr=locales[Meetup.Language].decimalStr;var commaStr=locales[Meetup.Language].commaStr;nStr=number.toString();x=nStr.split(".");x1=x[0];x2=x.length>1?decimalStr+x[1]:"";var rgx=/(\d+)(\d{3})/;while(rgx.test(x1)){x1=x1.replace(rgx,"$1"+commaStr+"$2")}return x1+x2},toFloat:function(number){var commaStr=locales[Meetup.Language].commaStr;return number.replace(commaStr,"")},parseFloat:function(number){var decimalStr=locales[Meetup.Language].decimalStr;number=this.toFloat(number);number=number.replace(/^s+|\s+$/g,"");if(number.match(/^-?\d*\.?\d*$/)){return parseFloat(number)}else{if(number.match(/^-?\d*,?\d*$/)){number=number.replace(decimalStr,".");return parseFloat(number)}}return 0},formatDate:function(date,style){var dateStyle=style+"Date";var dateFormat=locales[Meetup.Language].dateStyle[dateStyle];var formated="";for(var j=0;j<dateFormat.length;j++){switch(dateFormat.charAt(j)){case"#":j++;while(dateFormat.charAt(j)!="#"){formated+=dateFormat.charAt(j);j++}break;case"d":formated+=pad(date.getDate());break;case"D":formated+=date.getDate();break;case"m":formated+=pad(date.getMonth()+1);break;case"M":formated+=this.getMonthName(date.getMonth(),style);break;case"y":formated+=pad(date.getYear()%100);break;case"Y":formated+=date.getFullYear();break;case"E":formated+=this.getDayName(date.getDay());break;default:formated+=dateFormat.charAt(j)}}return formated},formatTime:function(date,style){var timeStyle=style+"Time",timeFormat=locales[Meetup.Language].timeStyle[timeStyle],formated="",s=null,l=timeFormat.length;for(var j=0;j<l;j++){s=timeFormat.charAt(j);if(s===timeFormat.charAt(j+1)){s+=timeFormat.charAt(j+1);j++}switch(s){case"H":formated+=date.getHours();break;case"HH":formated+=pad(date.getHours());break;case"h":formated+=(date.getHours()%12||12);break;case"hh":formated+=pad((date.getHours()%12||12));break;case"m":formated+=date.getMinutes();break;case"mm":formated+=pad(date.getMinutes());break;case"s":formated+=date.getSeconds();break;case"ss":formated+=pad(date.getSeconds());break;case"T":formated+=date.getHours()>11?"PM":"AM";break;default:formated+=timeFormat.charAt(j)}}return formated},convertDateShort:function(month,day,year){var dateString=null;if(Meetup.Language=="en_US"){dateString=month+" "+day+", "+year}else{dateString=day+"-"+month+"-"+year}return dateString},getMonthNames:function(style){return(style=="full"||style=="long"?Meetup.Copy.i18NMonthNames:style=="short"||style=="medium"?Meetup.Copy.i18NShortMonthNames:null)},getMonthName:function(month,style){return(style=="full"||style=="long"?Meetup.Copy.i18NMonthNames[month]:style=="short"||style=="medium"?Meetup.Copy.i18NShortMonthNames[month]:null)},getDayName:function(day){return Meetup.Copy.i18NDayNames[day]}}})();Meetup.Chart={};Meetup.Chart.simpleEncoding="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";Meetup.Chart.simpleEncode=function(valueArray,maxValue){var chartData="s:";var str="";if(valueArray.length&&typeof valueArray[0]=="object"){for(var i=0,dln=valueArray.length;i<dln;i++){str+=","+this.simpleEncode(valueArray[i],maxValue)}return chartData+str.substring(1)}else{for(var i=0;i<valueArray.length;i++){var currentValue=valueArray[i];if(!isNaN(currentValue)&&currentValue>=0){str+=(Meetup.Chart.simpleEncoding.charAt(Math.round((Meetup.Chart.simpleEncoding.length-1)*currentValue/maxValue)))}else{str+="_"}}return str}};Meetup.InlineRegistration=(function(){var container,togglers;var init=function(){container=$("inline_reg");togglers=getElementsByTagAndClassName("a","inline_reg_toggle",$("inline_reg"));forEach(togglers,function(item){connect(item,"onclick",reset)})};var toggle=function(){if(hasElementClass(container,"register")){swapElementClass(container,"register","login");$("inlineRegMode").value="login"}else{swapElementClass(container,"login","register");$("inlineRegMode").value="signup"}MochiKit.Visual.Highlight(container,["#ffff99","#ffffff"])};var reset=function(e){e.stop();var elements=getElementsByTagAndClassName(null,"error",$("inline_reg"));for(var i=0,len=elements.length;i<len;i++){if(elements[i].tagName=="P"){removeElement(elements[i])}else{removeElementClass(elements[i],"error")}}toggle()};return{init:init}})();Meetup.GAT={};(function(){var self=Meetup.GAT;var domain=(IS_DEV||IS_QA)?".meetup.com":".meetup.com";var GA_cookie=(IS_DEV||IS_QA)?"MEETUP_GA_DEV":"MEETUP_GA";var successTypes=["ic","gj","rv","rg","mb","ph"];var successCodes={ic:"GRPSTART",gj:"GRPJOIN",rg:"REGISTER",rv:"RSVP",mb:"MBPOST",ph:"PHOTO"};var successSubCodes={NEW_GRPS:"ic",NEW_HAND:"ic",ORG_HAND:"ic",ORG_GRPS:"ic",PH_TAG:"ph",PH_CMNT:"ph"};var ga_segment;if(IS_DEV){self.successes=[];self.trackingCodes=[];self.startingVals=[];var cookie=getCookie(GA_cookie);if(cookie){var cArr=cookie.split("&");forEach(cArr,function(c){var val=c.split("=");self.startingVals.push({name:val[0],value:val[1]})})}}self.triggerSuccess=function(code){if(code.indexOf(",")==-1){_successTrack(code)}else{var successArr=code.split(",");var len=successArr.length;for(var i=0;i<len;i++){_successTrack(successArr[i])}}};self.setTrackCode=function(code,value){if(code==null){return}if(typeof(Chapter)!="undefined"&&Chapter.domain&&Chapter.domain!=""){domain=Chapter.domain}var cv=self.getTrackCode(true);if(cv!=null){cv[code]=value;var qs=queryString(cv)}else{var qs=code+"="+value}if(IS_DEV){self.trackingCodes.push({code:code,value:value})}setCookie(GA_cookie,decodeURI(qs),730,"/",domain,false)};self.clearTrackCode=function(code){self.setTrackCode(code,null)};self.getTrackCode=function(parse){var c=getCookie(GA_cookie);if(c==null){return}return(parse)?parseQueryString(c):c};self.returnSuccessCode=function(code){return(typeof(successCodes[code])!="undefined")?successCodes[code]:"NOCODE"};self.checkUrl=function(){var qstr=document.location.search;if(qstr){var len=successTypes.length;var qs=parseQueryString(qstr);for(var i=0;len>i;i++){var st=successTypes[i];if(qs[st]){Meetup.GAT.setTrackCode(st,qs[st])}}}};var _successTrack=function(success){var c=self.getTrackCode(true);if(!c){return}if(c[success]=="NOTRACK"){self.clearTrackCode(success);return}var originCode=(c[success])?c[success]:"NONE";var successCode=(self.successCode&&successSubCodes[self.successCode]==success)?self.successCode:self.returnSuccessCode(success);if(IS_DEV){self.successes.push({code:originCode,value:successCode})}Meetup.Http.post(Meetup.Http.rpcURL("saveSuccessTrack"),queryString({arg_memberId:Member.id,arg_originCode:originCode,arg_successCode:successCode}));if(successCode=="NEW_GRPS"){self.setTrackCode("ic","NOTRACK")}else{self.clearTrackCode(success)}};self.init=function(){self.checkUrl();if(typeof(Member)!="undefined"){self.setTrackCode("id",Member.id)}}})();Meetup.GA=(function(){var segment;var gaGranularPageUrl;var gaAggregatePageUrl;var groupCode;var groupDomain;var mt=Meetup.GAT;var scriptNode=function(s,p_gaGranularPageUrl,p_gaAggregatePageUrl,p_groupCode,p_groupDomain){segment=s;mt.setTrackCode("segment",segment);gaGranularPageUrl=p_gaGranularPageUrl;gaAggregatePageUrl=p_gaAggregatePageUrl;groupCode=p_groupCode;groupDomain=p_groupDomain;var gaJsHost=(("https:"==document.location.protocol)?"https://ssl.":"http://www.");var script=document.createElement("script");script.type="text/javascript";script.src=gaJsHost+"google-analytics.com/ga.js";var head=document.getElementsByTagName("head")[0];head.appendChild(script);_poll()};var _poll=function(){if(window._gat){_track()}else{setTimeout(arguments.callee,240)}};var _track=function(){mt.code=mt.getTrackCode();mt.pn2=(gaAggregatePageUrl=="")?Meetup.pageName.replace(/:/," ").replace(/\s+/g,"_"):gaAggregatePageUrl;mt.pn=(gaGranularPageUrl=="")?null:gaGranularPageUrl;try{var granularPT=_gat._getTracker("UA-3226337-1");granularPT._setDomainName("meetup.com");granularPT._setVar(mt.code);granularPT._trackPageview(mt.pn)}catch(e){LOG.error("granularPT failed -- "+e)}try{Meetup.pageTracker=_gat._getTracker("UA-3226337-4");Meetup.pageTracker._setDomainName("meetup.com");Meetup.pageTracker._setVar(mt.code);Meetup.pageTracker._trackPageview(mt.pn2)}catch(e){LOG.error("Meetup.pageTracker failed -- "+e)}if(groupCode){try{var pageTracker=_gat._getTracker(groupCode);if(groupDomain){pageTracker._setDomainName(groupDomain)}else{pageTracker._setDomainName("meetup.com")}pageTracker._setVar(segment);pageTracker._trackPageview(mt.pn)}catch(e){LOG.error("pageTracker failed -- "+e)}}};return{load:scriptNode,track:_poll}})();Meetup.Dispatcher=(function(){var register={};var dispatch=function(e){var i,z,type="on"+e.type().toString(),reg=register[e.src().id],cls=e.target().className;if(cls.indexOf("J_onClick")!=-1||cls.indexOf("omnCamp")!=-1){var cls=e.target().className.split(" ");for(i in cls){var func=reg[type][cls[i]];if(typeof(func)!="undefined"){for(z in func){if(typeof(func[z])=="function"){func[z](e)}}}}}};return{init:function(elm){var baseElm=$(elm);if(baseElm&&!register[baseElm.id]){register[baseElm.id]={}}return{registerFunc:function(cls,func,type){if(!baseElm){LOG.error("Element '"+elm+"' not in page -- Don't freak out though! As long as stuff is working, it's cool.");return false}if(!type){var type="onclick"}if(!register[baseElm.id][type]){register[baseElm.id][type]={};connect(baseElm,type,dispatch)}if(!register[baseElm.id][type][cls]){register[baseElm.id][type][cls]=[func]}else{register[baseElm.id][type][cls].push(func)}}}}}})();Meetup.Script=(function(){var rId=0,requests={},requested=[],loaded=[],head=document.getElementsByTagName("head")[0];var queue=function(src,fn){if(!src){LOG.error("src is undefined :(");return false}requests[++rId]={n:0,src:(src.constructor==Array)?src:[src],fn:fn,success:[]};load(rId,requests[rId].src,requests[rId].n)};var scriptNode=function(src){return createDOM("script",{type:"text/javascript",src:src})};var next=function(id,src,n){if(src[++n]){return load(id,src,n)}finish(id)};var load=function(id,src,n){var url=src[n];if(findValue(requested,url)!=-1){return next(id,src,n)}requested.push(url);var script=scriptNode(url);head.appendChild(script);script.onload=script.onreadystatechange=function(){if(!this.readyState||this.readyState=="loaded"||this.readyState=="complete"){requests[id].success.push(url);loaded.push(url);next(id,src,n);script.onload=script.onreadystatechange=null}}};var finish=function(id){if(requests[id].success.length>0){if(requests[id].fn){requests[id].fn()}}else{if(requests[id].fn){requests[id].fn()}}};return{include:queue}})();Meetup.DOMReady=(function(){var _attached,_isReady=false;var _callbacks=[];_attach=function(fn){if(_attached){return}_attached=true;if(Meetup.UserAgent.isIE()){(function(){if(_isReady){return}try{document.documentElement.doScroll("left")}catch(error){setTimeout(arguments.callee,0);return}_ready()})();document.onreadystatechange=function(){if(_isReady){return}if(document.readyState=="complete"){document.onreadystatechange=null;_ready()}}}else{if(Meetup.UserAgent.isKHTML()){(function(){if(_isReady){return}if(/loaded|complete/.test(document.readyState)){_ready()}else{setTimeout(arguments.callee,0)}})()}else{connect(document,"onDOMContentLoaded",function(){disconnect(document,"onDOMContentLoaded");if(_isReady){return}_ready()})}}connect(window,"onload",function(){disconnect(document,"onload");if(_isReady){return}_ready()})};var _ready=function(){if(!_isReady){_isReady=true;if(_callbacks){forEach(_callbacks,function(fn){fn.call(document)});_callbacks=null}}};return{ready:function(fn){_attach();if(_isReady){fn.call(document)}else{_callbacks.push(fn)}}}})();Meetup.splainBoxes=[];Meetup.DomDeco.Splain=function(){bindMethods(this)};Meetup.DomDeco.Splain.prototype={decorate:function(el){if(!el){LOG.error("no element passed in to Meetup.DomDeco.Splain.decorate()");return}if(hasElementClass(el,"splainRegistered")){return}else{addElementClass(el,"splainRegistered")}this.box=get1st("*","splainBox",el);var over=get1st("*","splainOver",el);var out=get1st("*","splainClose",el);Meetup.splainBoxes.push(this.box);Meetup.activeSplain=null;if(hasElementClass(this.box,"splainBoxRight")){Meetup.Layout.positionOnElementEdge(this.box,over,7,{x:-24,y:-60})}else{Meetup.Layout.positionOnElementEdge(this.box,over,8,{x:12,y:-60})}connect(over,"onclick",this._toggleSplain);connect(out,"onclick",this._toggleSplain);if(this.box.id){var self=this;connect(this.box,"dismiss",function(){self._toggleSplain(null,true)})}},_close:function(el){Meetup.activeSplain=null;swapElementClass(el,"D_swap_in","D_swap_out");disconnect(this.con);if(IS_IE){hideSelects(false)}},_open:function(el){if(Meetup.activeSplain){this._close(Meetup.activeSplain)}Meetup.activeSplain=el;swapElementClass(el,"D_swap_out","D_swap_in");Meetup.Layout.redraw();var self=this;setTimeout(function(){self.con=connect("C_page","onclick",function(e){e.stop();self._toggleSplain()})},100)},_toggleSplain:function(e,dismiss){if(e){e.stop()}if(hasElementClass(this.box,"D_swap_out")&&!dismiss){this._open(this.box)}else{this._close(this.box)}}};Meetup.omnCamp=function(e){var cls=e.target().className.split(" "),len=cls.length;for(var i=0;i<len;i++){var code=cls[i].substr(0,5);switch(code){case"omngj":Meetup.GAT.setTrackCode("gj",cls[i].substr(6));break;case"omnrg":Meetup.GAT.setTrackCode("rg",cls[i].substr(6));break;case"omnrv":Meetup.GAT.setTrackCode("rv",cls[i].substr(6));break;case"omnic":Meetup.GAT.setTrackCode("ic",cls[i].substr(6));break;case"omnmb":Meetup.GAT.setTrackCode("mb",cls[i].substr(6));break;case"omnph":Meetup.GAT.setTrackCode("ph",cls[i].substr(6));break}}};Meetup.loginSignup=function(){var rootElm=$("dialogHello");var showHide=function(show,hide,e){if(e&&e.event){e.stop()}hideElement($(hide));showElement($(show));if(rootElm.style.display=="block"){signal(rootElm,"resize")}else{signal(rootElm,"appear")}};var dispatch=Meetup.Dispatcher.init("meetupBody");dispatch.registerFunc("J_loginLink",function(e){var target=e.target();if(target.tagName.toLowerCase()!=="a"){target=getFirstParentByTagAndClassName("a","J_onClick",target)}if(hasElementClass(target,"headerLogin")){Meetup.Facebook.isJoining=false}else{Meetup.Facebook.isJoining=true}if(!hasElementClass(target,"inHelloSignup")&&!hasElementClass(target,"inHelloLogin")){setNodeAttribute(rootElm,"isJoining","false");setNodeAttribute(rootElm,"returnUri","")}showHide("paneLogin","paneSignup",e);document.forms.loginForm["email"].focus()});dispatch.registerFunc("J_signupLink",function(e){var target=e.target();if(target.tagName.toLowerCase()!=="a"){target=getFirstParentByTagAndClassName("a","J_onClick",target)}if(hasElementClass(target,"topNavJoinus")||hasElementClass(target,"inAlienNudgeSignup")){setNodeAttribute(rootElm,"isJoining","true");setNodeAttribute(rootElm,"returnUri",target.href)}else{if(!hasElementClass(target,"inHelloSignup")&&!hasElementClass(target,"inHelloLogin")){setNodeAttribute(rootElm,"isJoining","false");setNodeAttribute(rootElm,"returnUri","")}}showHide("paneSignup","paneLogin",e);$("baseSignUp_realname").focus()});dispatch.registerFunc("showJoin",function(e){showHide("meetupBox","facebookBox",e);showHide("tos_meetup","tos_fb",e)});if($("loginForm")){connect($("loginForm"),"onsubmit",function(ev){if(getNodeAttribute(rootElm,"isJoining")=="true"){var inps=$tagClass("input",null,ev.target());for(var i=0,len=inps.length;i<len;++i){var inp=inps[i];if(inp.type=="hidden"&&inp.name=="returnUri"){inp.value=getNodeAttribute(rootElm,"returnUri");break}}}})}Meetup.DomDeco.applyById("dialogHello",Meetup.DomDeco.Dialog)};Meetup.UserNav={};Meetup.UserNav=(function(){var groupObjs=[];var MYGROUPS_COUNT=0;var MENU_LIMIT=20;var generateMenu=function(e){var menuList=$("C_groupsMenu");var MENU_ITEMS_COUNT=MENU_LIMIT;MENU_ITEMS_COUNT=(MYGROUPS_COUNT<MENU_ITEMS_COUNT)?MYGROUPS_COUNT:MENU_ITEMS_COUNT;setStyle(menuList,{width:"310px"});var newULSection=menuList.appendChild(UL({"class":"myGroupsSection"}));var menuItemNodes=[];for(i=0;i<MENU_ITEMS_COUNT;i++){var itemClass=(i==MENU_ITEMS_COUNT-1)?"C_groupsMenuItem lastGroupItem":"C_groupsMenuItem";menuItemNodes.push(LI(null,A({href:groupObjs[i].url,"class":itemClass},groupObjs[i].name)))}appendChildNodes(newULSection,menuItemNodes);if(MENU_ITEMS_COUNT<MYGROUPS_COUNT){menuList.appendChild(DIV({"class":"groupMenu_seeAll"},A({href:"/members/"+Member.id+"/groups/"},"See All")))}};var groupSuccess=function(resp){groupObjs=resp;generateMenu()};var groupError=function(){LOG.error("Error with groups call : getAllChapterMembers")};var getMyGroupsForMenu=function(){MYGROUPS_COUNT=Member.groupCount;var myGroupsCall=Meetup.Http.get("/api/?"+queryString({method:"getAllChapterMembers",arg_memberId:Member.id}));myGroupsCall.addCallbacks(groupSuccess,groupError)};return{init:getMyGroupsForMenu}})();Meetup.DOMReady.ready(function(){Meetup.GAT.init();setPageHeight();var md=Meetup.Dispatcher.init("C_page");if(typeof(Member)!="undefined"&&Member.id>0&&Member.groupCount>0){Meetup.UserNav.init()}md.registerFunc("blurb-more",function(e){e.stop();var elm=e.target(),blurb=elm.parentNode,rest=get1st("span","blurb-rest",blurb.parentNode);addElementClass(blurb,"hide-blurb");removeElementClass(rest,"blurb-rest")});var v=navigator.userAgent.match(/MSIE\s([^;]*)/);if(v&&v[1]){var ieVersion=parseFloat(v[1])}if(ieVersion&&ieVersion<7){setTimeout(function(){Meetup.DomDeco.applyByTagAndClass("IMG","png",Meetup.DomDeco.PNGrite)},500)}if(!Meetup.isBirddog){Meetup.loginSignup()}if($("C_langForm")){connect("C_langs","onchange",function(e){$("C_langForm").submit()})}});if(typeof MochiKit.Visual!="undefined"){MochiKit.Base.update(MochiKit.Visual.ScrollTo.prototype,{setup:function(){var p=MochiKit.Position;p.prepare();var offsets=p.cumulativeOffset(this.element);if(this.options.offset){offsets.y+=this.options.offset}var max=window.innerHeight?window.height-window.innerHeight:document.documentElement.scrollHeight-(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight);this.scrollStart=p.windowOffset.y;this.delta=(offsets.y>max?max:offsets.y)-this.scrollStart}})};