function cons(car,cdr){var a=new Array();a.push(car);return a.concat(cdr);} function car(l){return l[0];} function first(l){return l[0];} function cdr(l){return l.slice(1);} function rest(l){return l.slice(1);} function cadr(l){return l[1];} function cddr(l){return l.slice(2);} function caddr(l){return l[2];} function cdddr(l){return l.slice(3);} function cadddr(l){return l[3];} function append(a,b){return a.concat(b);} function reverse(l){return l.slice(0).reverse();} function range(a,b){var l=new Array();for(var x=a;x2;} function hometitle(host){if(!isNil(config.hometitle)) return config.hometitle;var h=reverse(host.split('.'));var d=isNil(cdr(h))?car(h):cadr(h);return d.substr(0,1).toUpperCase()+d.substr(1);} function windowtitle(host){if(!isNil(config.windowtitle)) return config.windowtitle;var h=reverse(host.split('.'));var d=isNil(cdr(h))?car(h):cadr(h);return d.substr(0,1).toUpperCase()+d.substr(1);} function format(){var i=0;var s='';for(a in arguments){s=i==0?arguments[a]:s.replace('{'+a+'}',arguments[a]);i++;} return s;} function setcar(l,v){l[0]=v;return l;} function setcadr(l,v){l[1]=v;return l;} function setcaddr(l,v){l[2]=v;return l;} function setappend(a,b){if(isNil(b)) return a;a.push(car(b));return setappend(a,cdr(b));} function setcdr(a,b){a.length=1;return setappend(a,b);} function setlist(a,b){if(b==a) return b;a.length=0;return setappend(a,b);} var element="'element" var attribute="'attribute" var atsign="'@" function isElement(v){return(!(!isList(v)||isNil(v)||car(v)!=element));} function isAttribute(v){return(!(!isList(v)||isNil(v)||car(v)!=attribute));} attributeName=cadr;attributeValue=caddr;elementName=cadr;function elementHasChildren(l){return!isNil(cddr(l));} elementChildren=cddr;function elementHasValue(l){var r=reverse(l);if(isSymbol(car(r))) return false;return(!(isList(car(r))&&!isNil(car(r))&&isSymbol(car(car(r)))))} function elementValue(l){return car(reverse(l));} function elementToValueIsList(v){if(!isList(v)) return false;return isNil(v)||!isSymbol(car(v));} function elementToValue(t){if(isTaggedList(t,attribute)) return mklist(atsign+attributeName(t).substring(1),attributeValue(t));if(isTaggedList(t,element)){if(elementHasValue(t)){if(!elementToValueIsList(elementValue(t))) return mklist(elementName(t),elementValue(t));return cons(elementName(t),mklist(elementsToValues(elementValue(t))));} return cons(elementName(t),elementsToValues(elementChildren(t)));} if(!isList(t)) return t;return elementsToValues(t);} function elementToValueIsSymbol(v){return(!(!isList(v))||isNil(v)||!isSymbol(car(v)));} function elementToValueGroupValues(v,l){if(isNil(l)||!elementToValueIsSymbol(v)||!elementToValueIsSymbol(car(l))) return cons(v,l);if(car(car(l))!=car(v)) return cons(v,l);if(!elementToValueIsList(cadr(car(l)))){var g=mklist(car(v),mklist(cdr(v),cdr(car(l))));return elementToValueGroupValues(g,cdr(l));} var g=mklist(car(v),cons(cdr(v),cadr(car(l))));return elementToValueGroupValues(g,cdr(l));} function elementsToValues(e){if(isNil(e)) return e;return elementToValueGroupValues(elementToValue(car(e)),elementsToValues(cdr(e)));} function valueToElement(t){if(isList(t)&&!isNil(t)&&isSymbol(car(t))){var n=car(t);var v=isNil(cdr(t))?mklist():cadr(t);if(!isList(v)){if(n.substring(0,2)==atsign) return mklist(attribute,"'"+n.substring(2),v);return mklist(element,n,v);} if(isNil(v)||!isSymbol(car(v))) return cons(element,cons(n,mklist(valuesToElements(v))));return cons(element,cons(n,valuesToElements(cdr(t))));} if(!isList(t)) return t;return valuesToElements(t);} function valuesToElements(l){if(isNil(l)) return l;return cons(valueToElement(car(l)),valuesToElements(cdr(l)));} function selector(s){function evalSelect(s,v){if(isNil(s)) return true;if(isNil(v)) return false;if(car(s)!=car(v)) return false;return evalSelect(cdr(s),cdr(v));} return function(v){return evalSelect(s,v);};} function namedAttribute(name,l){return memo(l,name,function(){var f=filter(function(v){return isAttribute(v)&&attributeName(v)==name;},l);if(isNil(f)) return null;return car(f);});} function namedAttributeValue(name,l){var a=namedAttribute(name,l);if(a==null) return null return attributeValue(a);} function namedElementChildren(name,l){return memo(l,name,function(){return filter(function(v){return isElement(v)&&elementName(v)==name;},l);});} function namedElementChild(name,l){var f=namedElementChildren(name,l);if(isNil(f)) return null;return car(f);} function setElement(l,e){setlist(l,e);l.memo={};} function nodeList(n){var l=new Array();if(isNil(n)) return l;for(var i=0;i\n'+writeXMLDocument(doc)+'\n');} var atom={};atom.entryElementValues=function(e){var lt=filter(selector(mklist(element,"'title")),e);var t=isNil(lt)?'':elementValue(car(lt));var li=filter(selector(mklist(element,"'id")),e);var i=isNil(li)?'':elementValue(car(li));var lc=filter(selector(mklist(element,"'content")),e);return append(mklist(element,"'entry",mklist(element,"'title",t),mklist(element,"'id",i)),isNil(lc)?mklist():mklist(mklist(element,"'content",elementValue(car(lc)))))};atom.entriesElementValues=function(e){if(isNil(e)) return e;return cons(atom.entryElementValues(car(e)),atom.entriesElementValues(cdr(e)));};atom.isATOMEntry=function(l){if(!isXML(l)) return false;return car(l).match('=128) parts[i]=json.escapeJSONChar(parts[i]);} return"\""+parts.join("")+"\"";};json.toJSON=function(o){if(o==null) return"null";if(o.constructor==String) return json.escapeJSONString(o);if(o.constructor==Number) return o.toString();if(o.constructor==Boolean) return o.toString();if(o.constructor==Date) return'{javaClass: "java.util.Date", time: '+o.valueOf()+'}';if(o.constructor==Array){var v=[];for(var i=0;i'+html+'';return''+html+'';};ui.menu=function(name,href,target){function Menu(n,h,t){this.name=n;this.href=h;this.target=isNil(t)?'_parent':t;this.content=function(){function complete(uri){var h=uri.indexOf('#');if(h!=-1) return complete(uri.substr(0,h));var q=uri.indexOf('?');if(q!=-1) return complete(uri.substr(0,q));if(uri.match('.*\.html$')) return uri;if(uri.match('.*/$')) return uri+'index.html';return uri+'/index.html';} if(complete(this.href)!=complete(window.top.location.pathname)) return ui.ahref(this.href,this.target,''+this.name+'');return ui.ahref(this.href,this.target,''+this.name+'');};} return new Menu(name,href,target);};ui.menubar=function(left,right){var bar=''+''+'
';for(i in left) bar=bar+'' bar=bar+'
'+left[i].content()+'
';for(i in right) bar=bar+'' bar=bar+'
'+right[i].content()+'
';return bar;};ui.selectSuggestion=function(node,value){for(;;){node=node.parentNode;if(node.tagName.toLowerCase()=='div') break;} node.selectSuggestion(value);};ui.hilightSuggestion=function(node,over){if(over) node.className='suggestHilighted';node.className='suggestItem';};ui.suggest=function(input,suggestFunction){input.suggest=suggestFunction;input.selectSuggestion=function(value){this.hideSuggestDiv();this.value=value;} input.hideSuggestDiv=function(){if(this.suggestDiv!=null){this.suggestDiv.style.visibility='hidden';}} input.showSuggestDiv=function(){if(this.suggestDiv==null){this.suggestDiv=document.createElement('div');this.suggestDiv.input=this;this.suggestDiv.className='suggest';input.parentNode.insertBefore(this.suggestDiv,input);this.suggestDiv.style.visibility='hidden';this.suggestDiv.style.zIndex='99';this.suggestDiv.selectSuggestion=function(value){this.input.selectSuggestion(value);}} var values=this.suggest();var items='';for(var i=0;i'+values[i]+'';} if(items.length!=0) items+='';this.suggestDiv.innerHTML=items;if(items.length!=0){var node=input;var left=0;var top=0;for(;;){left+=node.offsetLeft;top+=node.offsetTop;node=node.offsetParent;if(node.tagName.toLowerCase()=='body') break;} this.suggestDiv.style.left=left;this.suggestDiv.style.top=top+input.offsetHeight;this.suggestDiv.style.visibility='visible';}else this.suggestDiv.style.visibility='hidden';} input.onkeydown=function(event){this.showSuggestDiv();};input.onkeyup=function(event){this.showSuggestDiv();};input.onmousedown=function(event){this.showSuggestDiv();};input.onblur=function(event){setTimeout(function(){input.hideSuggestDiv();},50);};};ui.elementByID=function(node,id){for(var i in node.childNodes){var child=node.childNodes[i];if(child.id==id) return child;var gchild=ui.elementByID(child,id);if(gchild!=null) return gchild;} return null;};function $(id){if(id==document){if(!isNil(document.widget)) return document.widget;return document;} return ui.elementByID($(document),id);};ui.queryParams=function(){var qp=new Array();var qs=window.location.search.substring(1).split('&');for(var i=0;i0) qp[qs[i].substring(0,e)]=unescape(qs[i].substring(e+1));} return qp;};ui.fragmentParams=function(){var qp=new Array();var qs=window.location.hash.substring(1).split('&');for(var i=0;i0) qp[qs[i].substring(0,e)]=unescape(qs[i].substring(e+1));} return qp;};ui.mobiledetected=false;ui.mobile=false;ui.isMobile=function(){if(ui.mobiledetected) return ui.mobile;var ua=navigator.userAgent;if(ua.match(/iPhone/i)||ua.match(/iPad/i)||ua.match(/Android/i)||ua.match(/Blackberry/i)||ua.match(/WebOs/i)) ui.mobile=true;ui.mobiledetected=true;return ui.mobile;};ui.pagetransitions=false;ui.initbody=function(){if(ui.isMobile()){if(ui.pagetransitions){var bdiv=$('bodydiv');if(!isNil(bdiv)){bdiv.className='bodydivloading';}} document.body.onorientationchange=ui.onorientationchange;} return true;} ui.onorientationchange=function(){window.open(window.location,'_self');return true;} ui.onload=function(){var path=document.location.pathname;if(path.indexOf('/login/')!=0&&path.indexOf('/logout/')!=0) localStorage.setItem('ui.lastvisited',''+document.location);document.body.style.visibility='visible';if(ui.pagetransitions&&ui.isMobile()){setTimeout(function(){var bdiv=$('bodydiv');if(!isNil(bdiv)){function transitionend(e){bdiv.removeEventListener('webkitTransitionEnd',transitionend,false);bdiv.removeEventListener('transitionend',transitionend,false);bdiv.className='bodydiv';};bdiv.addEventListener('webkitTransitionEnd',transitionend,false);bdiv.addEventListener('transitionend',transitionend,false);bdiv.className='bodydivloaded';}},0);} return true;};ui.navigate=function(url,win){function opendoc(url,win){if(win=='_reload'){window.location=url;return window.location.reload();} return window.open(url,win);} if(ui.pagetransitions&&ui.isMobile()&&win!='_blank'){var bdiv=$('bodydiv');if(!isNil(bdiv)){function transitionend(e){bdiv.removeEventListener('webkitTransitionEnd',transitionend,false);bdiv.removeEventListener('transitionend',transitionend,false);return opendoc(url,win);};bdiv.addEventListener('webkitTransitionEnd',transitionend,false);bdiv.addEventListener('transitionend',transitionend,false);bdiv.className='bodydivunloaded';return true;}} return opendoc(url,win);} ui.onbeforeunload=function(){if(ui.pagetransitions&&ui.isMobile()){var bdiv=$('bodydiv');if(!isNil(bdiv)) bdiv.className='bodydivunloaded';}};ui.lastvisited=function(){return localStorage.getItem('ui.lastvisited');} ui.numpos=function(p){return p==''?0:Number(p.substr(0,p.length-2));};ui.pixpos=function(p){return p+'px';};ui.datatable=function(l){function indent(i){if(i==0) return'';return'  '+indent(i-1);} function rows(l,i){if(isNil(l)) return'';var e=car(l);if(!isList(e)) return rows(expandElementValues("'value",l),i);if(isList(car(e))) return rows(expandElementValues("'value",l),i);if(elementHasValue(e)){var v=elementValue(e);if(!isList(v)){return''+indent(i)+elementName(e).slice(1)+''+''+(v!=null?v:'')+''+rows(cdr(l),i);} return rows(expandElementValues(elementName(e),v),i)+rows(cdr(l),i);} return''+indent(i)+elementName(e).slice(1)+''+''+''+rows(elementChildren(e),i+1)+rows(cdr(l),i);} return''+rows(l,0)+'
';} ui.datalist=function(l){function rows(l,i){if(isNil(l)) return'';var e=car(l);if(!isList(e)) return rows(expandElementValues("'value",l),i);if(isList(car(e))) return rows(expandElementValues("'value",l),i);if(elementHasValue(e)){var v=elementValue(e);if(!isList(v)){return''+(v!=null?v:'')+''+rows(cdr(l),i);} return rows(expandElementValues(elementName(e),v),i)+rows(cdr(l),i);} return rows(elementChildren(e),i+1)+rows(cdr(l),i);} return''+rows(l,0)+'
';} var JSONClient={};JSONClient.escapeJSONChar=function(c){if(c=="\""||c=="\\")return"\\"+c;if(c=="\b")return"\\b";if(c=="\f")return"\\f";if(c=="\n")return"\\n";if(c=="\r")return"\\r";if(c=="\t")return"\\t";var hex=c.charCodeAt(0).toString(16);if(hex.length==1)return"\\u000"+hex;if(hex.length==2)return"\\u00"+hex;if(hex.length==3)return"\\u0"+hex;return"\\u"+hex;};JSONClient.escapeJSONString=function(s){var parts=s.split("");for(var i=0;i=128) parts[i]=JSONClient.escapeJSONChar(parts[i]);} return"\""+parts.join("")+"\"";};JSONClient.toJSON=function(o){if(o==null) return"null";if(o.constructor==String) return JSONClient.escapeJSONString(o);if(o.constructor==Number) return o.toString();if(o.constructor==Boolean) return o.toString();if(o.constructor==Date) return'{javaClass: "java.util.Date", time: '+o.valueOf()+'}';if(o.constructor==Array){var v=[];for(var i=0;i