include("lib.prototype");if(!modularjs.loaded["lib.underscore"]){(function(){var w=this;var k=w._;var D={};var C=Array.prototype,f=Object.prototype,r=Function.prototype;var H=C.push,o=C.slice,y=C.concat,d=f.toString,j=f.hasOwnProperty;var L=C.forEach,q=C.map,E=C.reduce,c=C.reduceRight,b=C.filter,B=C.every,p=C.some,n=C.indexOf,l=C.lastIndexOf,u=Array.isArray,e=Object.keys,F=r.bind;var M=function(N){if(N instanceof M){return N}if(!(this instanceof M)){return new M(N)}this._wrapped=N};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports){exports=module.exports=M}exports._=M}else{w._=M}M.VERSION="1.5.2";var I=M.each=M.forEach=function(S,P,O){if(S==null){return}if(L&&S.forEach===L){S.forEach(P,O)}else{if(S.length===+S.length){for(var N=0,R=S.length;N2;if(R==null){R=[]}if(E&&R.reduce===E){if(P){Q=M.bind(Q,P)}return O?R.reduce(Q,N):R.reduce(Q)}I(R,function(U,S,T){if(!O){N=U;O=true}else{N=Q.call(P,N,U,S,T)}});if(!O){throw new TypeError(g)}return N};M.reduceRight=M.foldr=function(T,Q,N,P){var O=arguments.length>2;if(T==null){T=[]}if(c&&T.reduceRight===c){if(P){Q=M.bind(Q,P)}return O?T.reduceRight(Q,N):T.reduceRight(Q)}var S=T.length;if(S!==+S){var R=M.keys(T);S=R.length}I(T,function(W,U,V){U=R?R[--S]:--S;if(!O){N=T[U];O=true}else{N=Q.call(P,N,T[U],U,V)}});if(!O){throw new TypeError(g)}return N};M.find=M.detect=function(Q,P,O){var N;A(Q,function(T,R,S){if(P.call(O,T,R,S)){N=T;return true}});return N};M.filter=M.select=function(Q,P,O){var N=[];if(Q==null){return N}if(b&&Q.filter===b){return Q.filter(P,O)}I(Q,function(T,R,S){if(P.call(O,T,R,S)){N.push(T)}});return N};M.reject=function(P,O,N){return M.filter(P,function(S,Q,R){return !O.call(N,S,Q,R)},N)};M.every=M.all=function(Q,P,O){P||(P=M.identity);var N=true;if(Q==null){return N}if(B&&Q.every===B){return Q.every(P,O)}I(Q,function(T,R,S){if(!(N=N&&P.call(O,T,R,S))){return D}});return !!N};var A=M.some=M.any=function(Q,P,O){P||(P=M.identity);var N=false;if(Q==null){return N}if(p&&Q.some===p){return Q.some(P,O)}I(Q,function(T,R,S){if(N||(N=P.call(O,T,R,S))){return D}});return !!N};M.contains=M.include=function(O,N){if(O==null){return false}if(n&&O.indexOf===n){return O.indexOf(N)!=-1}return A(O,function(P){return P===N})};M.invoke=function(P,Q){var N=o.call(arguments,2);var O=M.isFunction(Q);return M.map(P,function(R){return(O?Q:R[Q]).apply(R,N)})};M.pluck=function(O,N){return M.map(O,function(P){return P[N]})};M.where=function(O,N,P){if(M.isEmpty(N)){return P?void 0:[]}return M[P?"find":"filter"](O,function(R){for(var Q in N){if(N[Q]!==R[Q]){return false}}return true})};M.findWhere=function(O,N){return M.where(O,N,true)};M.max=function(Q,P,O){if(!P&&M.isArray(Q)&&Q[0]===+Q[0]&&Q.length<65535){return Math.max.apply(Math,Q)}if(!P&&M.isEmpty(Q)){return -Infinity}var N={computed:-Infinity,value:-Infinity};I(Q,function(U,R,T){var S=P?P.call(O,U,R,T):U;S>N.computed&&(N={value:U,computed:S})});return N.value};M.min=function(Q,P,O){if(!P&&M.isArray(Q)&&Q[0]===+Q[0]&&Q.length<65535){return Math.min.apply(Math,Q)}if(!P&&M.isEmpty(Q)){return Infinity}var N={computed:Infinity,value:Infinity};I(Q,function(U,R,T){var S=P?P.call(O,U,R,T):U;SR||S===void 0){return 1}if(S>>1;Q.call(P,U[O])=0})})};M.difference=function(O){var N=y.apply(C,o.call(arguments,1));return M.filter(O,function(P){return !M.contains(N,P)})};M.zip=function(){var P=M.max(M.pluck(arguments,"length").concat(0));var O=new Array(P);for(var N=0;N=0;P--){O=[N[P].apply(this,O)]}return O[0]}};M.after=function(O,N){return function(){if(--O<1){return N.apply(this,arguments)}}};M.keys=e||function(P){if(P!==Object(P)){throw new TypeError("Invalid object")}var O=[];for(var N in P){if(M.has(P,N)){O.push(N)}}return O};M.values=function(R){var Q=M.keys(R);var P=Q.length;var N=new Array(P);for(var O=0;O":">",'"':""","'":"'"}};m.unescape=M.invert(m.escape);var K={escape:new RegExp("["+M.keys(m.escape).join("")+"]","g"),unescape:new RegExp("("+M.keys(m.unescape).join("|")+")","g")};M.each(["escape","unescape"],function(N){M[N]=function(O){if(O==null){return""}return(""+O).replace(K[N],function(P){return m[N][P]})}});M.result=function(N,P){if(N==null){return void 0}var O=N[P];return M.isFunction(O)?O.call(N):O};M.mixin=function(N){I(M.functions(N),function(O){var P=M[O]=N[O];M.prototype[O]=function(){var Q=[this._wrapped];H.apply(Q,arguments);return s.call(this,P.apply(M,Q))}})};var z=0;M.uniqueId=function(N){var O=++z+"";return N?N+O:O};M.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var v=/(.)^/;var h={"'":"'","\\":"\\","\r":"r","\n":"n","\t":"t","\u2028":"u2028","\u2029":"u2029"};var i=/\\|'|\r|\n|\t|\u2028|\u2029/g;M.template=function(V,Q,P){var O;P=M.defaults({},P,M.templateSettings);var R=new RegExp([(P.escape||v).source,(P.interpolate||v).source,(P.evaluate||v).source].join("|")+"|$","g");var S=0;var N="__p+='";V.replace(R,function(X,Y,W,aa,Z){N+=V.slice(S,Z).replace(i,function(ab){return"\\"+h[ab]});if(Y){N+="'+\n((__t=("+Y+"))==null?'':_.escape(__t))+\n'"}if(W){N+="'+\n((__t=("+W+"))==null?'':__t)+\n'"}if(aa){N+="';\n"+aa+"\n__p+='"}S=Z+X.length;return X});N+="';\n";if(!P.variable){N="with(obj||{}){\n"+N+"}\n"}N="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+N+"return __p;\n";try{O=new Function(P.variable||"obj","_",N)}catch(T){T.source=N;throw T}if(Q){return O(Q,M)}var U=function(W){return O.call(this,W,M)};U.source="function("+(P.variable||"obj")+"){\n"+N+"}";return U};M.chain=function(N){return M(N).chain()};var s=function(N){return this._chain?M(N).chain():N};M.mixin(M);I(["pop","push","reverse","shift","sort","splice","unshift"],function(N){var O=C[N];M.prototype[N]=function(){var P=this._wrapped;O.apply(P,arguments);if((N=="shift"||N=="splice")&&P.length===0){delete P[0]}return s.call(this,P)}});I(["concat","join","slice"],function(N){var O=C[N];M.prototype[N]=function(){return s.call(this,O.apply(this._wrapped,arguments))}});M.extend(M.prototype,{chain:function(){this._chain=true;return this},value:function(){return this._wrapped}})}).call(this)}modularjs.loaded["lib.underscore"]=true;var Templates={PRECOMPILED:$H(),load:function(a,b){new Ajax.Request("templates/"+a+".template.html",{asynchronous:false,method:"get",onSuccess:function(c){Templates.PRECOMPILED[a]=_.template(c.responseText);b&&b.defer()},onException:function(c,d){console.log(c);console.log(d)}});return function(){if(!Templates.PRECOMPILED[a]){console.error("Template not loaded yet!");return""}return Templates.PRECOMPILED[a].apply(Templates.PRECOMPILED[a],arguments)}},toDOM:function(a){var b=new Element("div");b.update(a);return b.firstChild}};