
var TenTen={path:(function(){var path=$$('script').map(function(tag){return tag.src;}).filter(function(src){var path=src.toLowerCase().split('\/'),dir=path[path.length-2],file=path[path.length-1],built_files=['complete.js','complete-debug.js','tenten.js','tenten-debug.js','login.js','login-debug.js','standalone.js','standalone-debug.js'];return dir==='build'&&built_files.inject(false,function(acc,str){return acc||file.startsWith(str);});})[0].split('\/');var full_path=path[0].toLowerCase()in{http:null,https:null};if(full_path)
return'\/'+path.slice(3,path.length-2).join('\/');else
return path.slice(0,path.length-2).join('\/');})()};TenTen.Util=new function(){var resource_path=TenTen.path+'/resources/Util/';var images={'file':'file.png','folder':'folder.png','merged':'merged.png','quick_query_param':'quick_query_param.png','quick_query_view':'quick_query_view.png','table':'table.png','uploaded_query':'uploaded_query.png'};$H(images).each(function(image){var temp_img=new Image();temp_img.src=resource_path+'images/'+image.value;});this.Date=new function(){var k_zero=Math.floor(new Date('Jan 1 2035').getTime()/1000);this.kts_to_date=function(kts){return new Date(k_zero*1000+((kts-0)*1000));};this.date_to_kts=function(date){return Math.floor(date.getTime()/1000)-k_zero;};};this.Number=new function(){this.format=function(n){var decimal=(n+'').indexOf('.')>-1?'.'+(n.toFixed(2)).split('.')[1]:'';return(n.floor()+'').split('').reverse().join('').gsub(/(\d\d\d)(?!$)/,function(m){return m[0]+',';}).split('').reverse().join('')+decimal;};};this.String=new function(){this.crc32=function(){var table='00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 '+'0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 '+'1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 '+'136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 '+'3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B '+'35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 '+'26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F '+'2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D '+'76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 '+'7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 '+'6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 '+'65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 '+'4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB '+'4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 '+'5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F '+'5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD '+'EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 '+'E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 '+'F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 '+'FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 '+'D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B '+'D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 '+'CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F '+'C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D '+'9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 '+'95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 '+'86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 '+'88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 '+'A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB '+'AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 '+'BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF '+'B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D';return function(str,crc){if(typeof crc==='undefined')var crc=0;var n=0;var x=0;crc=crc^(-1);for(var i=0,iTop=str.length;i<iTop;i++){n=(crc^str.charCodeAt(i))&0xFF;x='0x'+table.substr(n*9,8);crc=(crc>>>8)^x;}
return crc^(-1);};}();};this.Cookie=new function(){this.set=function(name,value,days,domain,path,secure,do_not_delete){if(typeof do_not_delete==='undefined'||!do_not_delete){this.del(name);return this.set(name,value,days,domain,path,secure,true);};var expiration='';var security='';var domain_value='';var path_value='';var security='';if(days){var date_expire=new Date();date_expire=new Date(date_expire.getTime()+(days*24*60*60*1000));expiration=';expires='+date_expire.toGMTString();};if(domain)
domain_value='; domain='+domain;if(path)
path_value='; path='+path;else
path_value='; path = /';if(secure)security='; secure';document.cookie=name+'='+encodeURIComponent(value)+expiration+domain_value+path_value+security;};this.get=function(name){return decodeURIComponent(document.cookie.toQueryParams(/;\s*/)[name]||'');};this.del=function(name){var host=document.location.host.split('.').reverse();var domain=['',host[1],host[0]].join('.');var path=(function(str){var match=str.match(/(.*)(\/.*$)/);return match?(match[1]||match[2]):'/';})(document.location.pathname);path+=(path.match(/\/$/)?'':'/');this.set(name,'',-1,null,null,null,true);this.set(name,'',-1,domain,null,null,true);this.set(name,'',-1,null,path,null,true);this.set(name,'',-1,domain,path,null,true);};this.get_json=function(name){var ck=TenTen.Util.Cookie.get(name);try{ck=eval('('+ck+')');return ck;}catch(e){return null;}};this.set_json=function(name,obj,days,domain,path,secure){if(name&&obj)TenTen.Util.Cookie.set(name,Object.toJSON(obj),days||null,domain||null,path||null,secure||null);};};this.Object=new function(){var fingerprint=function(obj){var print=[],keys=[],self=arguments.callee;for(var key in obj){keys.push(key);};keys.sort().each(function(key){print.push(key);if(typeof obj[key]==='object'&&obj[key]&&!Object.isArray(obj[key])&&$H(obj[key]).size())
print.push(self(obj[key]));});return print;};this.same_type=function(obj1,obj2){return fingerprint(obj1).toJSON()===fingerprint(obj2).toJSON();};};this.Queue=function(){var queue=[];var flag=true;var execute=function(){flag=false;queue.shift()();};this.bulk=function(arr){arr.each(this.push);};this.empty=function(){queue=[];flag=true;};this.free=function(){return flag&&!queue.length;};this.push=function(fn){queue.push(fn);if(flag)execute();};this.shift=function(){flag=true;if(queue.length)execute();};this.debug=function(){return queue;};};this.File=new function(){var item_types={'dir':'folder','REAL':'table','UQ':'uploaded_query','VIEW':'quick_query_view','PARAM':'quick_query_param','MERGED':'merged'};this.icon=function(item){var type=('numchild'in item)?'dir':item.system_type||item.type;return resource_path+'images/'+images[item_types[type]||'file'];};this.icon_class=function(item){var type=('numchild'in item)?'dir':item.system_type||item.type;return'app_icon_'+(item_types[type]||'file');};};this.DOM=new function(){this.array_to_dropdown=function(val_text_pairs,select_elem){$(select_elem).childElements().invoke('remove');val_text_pairs.each(function(pair){var opt=document.createElement('option');select_elem.appendChild(opt);opt.value=pair[0];opt.text=pair.last();});};this.find=function(obj){var handler=obj.handler,id=obj.id,timeout=obj.timeout||5,interval=0.25,tries=0,node=$(id),max=Math.floor(timeout/interval);if(node)return handler(node);var check=function(){if((node=$(id))||++tries>=max)return handler(node);check.delay(interval);};check.delay(interval);};this.listdir_to_dropdown=function(args){$(args.select_elem).childElements().invoke('remove');var opt=document.createElement('option');args.select_elem.appendChild(opt);opt.text='retrieving lists...';var handler=args.handler||function(){};TenTen.API.listdir({path:args.dir,include:['id','title'],handler:function(result){if(result.rc.value!='0'){alert('Failed to retrieve lists: '+args.dir);handler();return;}
var arr=[];if(typeof result.dir.value.children.value==='undefined')
arr.push(['','no lists available']);else result.dir.value.children.value.each(function(child){if('tab'in child)arr.push([child.tab.attributes.id,child.tab.attributes.title]);});arr.sort(function(a,b){var x=a[1].toUpperCase();var y=b[1].toUpperCase();return x<y?-1:Number(x>y);});TenTen.Util.DOM.array_to_dropdown(arr,args.select_elem);handler.defer();}});};};};TenTen.XML=new function(){var jsonify=function(element){var temp={};temp[element.nodeName]={};$A(element.attributes).each(function(att){if(typeof temp[element.nodeName].attributes==='undefined')temp[element.nodeName]['attributes']={};temp[element.nodeName]['attributes'][att.nodeName]=att.nodeValue;});$A(element.childNodes).each(function(child){if(child.nodeType===3&&!/\S/.test(child.nodeValue))return;if(child.nodeType===3){temp[element.nodeName]['value']=child.nodeValue;}else{if(typeof temp[element.nodeName].value==='undefined')temp[element.nodeName].value=[];temp[element.nodeName].value.push(jsonify(child));};});return temp;};var doc_handler=function(xmldom,handler){try{var doc=xmldom.documentElement;var json=jsonify(doc);handler(json);}catch(error){throw{name:'ParserError',message:'jsonify failed trying to iterate'};handler({});};};var doc_from_str=function(str,handler){var xmldom=function(){return Try.these(function(){return(new DOMParser()).parseFromString(str,'text/xml');},function(){var xml=new ActiveXObject('MSXML2.DOMDocument.6.0');xml.loadXML(str);return xml;},function(){var xml=new ActiveXObject('MSXML2.DOMDocument.3.0');xml.loadXML(str);return xml;})||false;}();if(!xmldom){throw{name:'ParserError',message:'This browser does not seem to have an XML parser or it failed trying to parse this: \n'+str};return handler({});};doc_handler(xmldom,handler);};var doc_from_url=function(url,handler){TenTen.API.ajax(url,{method:'GET',failure_handler:handler.curry({}),success_handler:function(response){doc_from_str(response.transport.responseText,handler);}});};this.xml_to_json=function(obj){try{if(typeof obj.handler!=='function')throw{name:'ParamError',message:'obj.handler must be a function.'};if(!(typeof obj.url==='string'||typeof obj.string==='string'))throw{name:'ParamError',message:'obj.url or obj.string must be defined.'};var handler=obj.handler;if(typeof obj.url==='string'){doc_from_url(obj.url,handler);}else{doc_from_str(obj.string,handler);}}catch(error){TenTen.API.error_log(error);handler({});};};this.xml_to_html=function(node){if(node.nodeType===Node.TEXT_NODE)return!/\S/.test(node.nodeValue)?false:document.createTextNode(node.nodeValue);var attributes=$A(node.attributes).inject({},function(acc,attribute){acc[attribute.nodeName]=attribute.nodeValue;return acc;});var element=new Element(node.tagName,attributes);$A(node.childNodes).each(function(child){var child_clone=this.xml_to_html(child);if(child_clone)element.appendChild(child_clone);}.bind(this));return element;};};TenTen.API=new function(){this.resource_path=TenTen.path+'/resources/API/';var api=this;var id=0;TenTen.Util.Cookie.del('login_post');this.debug='debug'in document.location.search.toQueryParams()?!!(document.location.search.toQueryParams().debug-0):false;var debug=function(output){if(typeof console!=='undefined')
console.log(output);};var log=[];this.log=function(str,br){if(typeof str!=='undefined'&&!str)return log;var line=br||'<br />';var output=log.map(function(error){return error.name+': '+error.message+line+error.time;});return output.length&&output.join(line+line)||'No errors have been logged.';};this.queue=new TenTen.Util.Queue();var d_accum_queue=new TenTen.Util.Queue();var logout_queue=new TenTen.Util.Queue();this.logged_out=false;this.rc={'-1':'Unclassified client-side error','0':'Success (no error)','1':'Unclassified server-side error','2':'XML error','3':'Missing user identification','4':'Invalid user identification','5':'Already logged in','6':'Missing transaction type','7':'Invalid transaction type','8':'Missing element','9':'Invalid element value','10':'Invalid element contents','11':'Missing attribute','12':'Invalid attribute name','13':'Invalid attribute value','14':'Invalid directory name','15':'No such directory','16':'Invalid table name','17':'No such table','18':'No such directory or table','19':'Directory already exits','20':'Table already exits','21':'No query specified','22':'Not currently implemented for Quick Queries','23':'Too many values','24':'Empty table','25':'Problem saving table','26':'Cannot save into \'uploads\' directory','27':'Problem deleting table','28':'Problem saving file','29':'Duplicate column names','30':'Duplicate table names','31':'No FTP permission','32':'Not enough available space left in your account.','33':'Problem moving table or directory','34':'Problem modifying table or directory attributes','35':'Not logged in.','36':'<cols> contains columns that do not appear in result','37':'You do not own the specified group','38':'System is busy','39':'You are not at an authorized IP address.','40':'Not a user on this system but may be valid on another system.'};this.handlers=new function(){this.busy=function(){};this.free=function(){};};var internal_handlers={'35':function(result){api.logged_out=true;if('35'in api.handlers)
return api.handlers['35'](result);else
return result;}};var api_handlers=function(code,result,post_id){if(0!==+code){try{var description=post_id in requests?requests[post_id].config.description||'No further information available.':'No further information available.';var message=new Template('Request ID: #{id}, Error code #{code}: #{value} Info: #{description}');api.error_log({name:'APIError',message:message.evaluate({id:post_id,code:result.rc.value,value:result.msg.value,description:description})});}catch(error){api.error_log(error);};};if(code in internal_handlers)return internal_handlers[code](result);if(code in api.handlers)return api.handlers[code](result);return result;};this.homepage=function(){return'http://'+((document.t&&document.t.domain&&document.t.domain.value)||document.location.host)+'/'+
((document.t&&document.t.homepage&&document.t.homepage.value)||'');};this.timeout=600;var net_healthy=true;this.net_healthy=function(){return net_healthy;};var credentials;this.credentials=function(){if(typeof credentials==='undefined'){var query_string=window.location.search.parseQuery();var uid,sid,pswd;uid=query_string.uid||document.t&&document.t.uid&&document.t.uid.value;sid=query_string.sid||document.t&&document.t.sid&&document.t.sid.value;pswd=query_string.pswd||document.t&&document.t.pswd&&document.t.pswd.value;credentials={uid:{value:uid},sid:{value:sid},pswd:{value:pswd}};};return Object.clone(credentials);};this.reset_credentials=function(cred){credentials=cred;if(document.t&&document.t.uid)document.t.uid.value=cred.uid.value;if(document.t&&document.t.sid)document.t.sid.value=cred.sid.value;if(document.t&&document.t.pswd)document.t.pswd.value=cred.pswd.value;};this.error_log=function(error){error.time=new Date();log.push(error);if(api.debug)debug(error);return null;};var JSONIF=new function(){var intermediate_format=function(obj,key){var value;var attributes=function(atts){var coll=[];var temp={};for(var att in atts){temp[att]=atts[att];coll.push(temp);temp={};};return coll.length&&coll||undefined;}(obj.attributes);value=Object.isArray(obj.value)?function(arr){var coll=[];arr.each(function(obj){for(var key in obj){var temp=intermediate_format(obj[key],key);coll.push([key,temp.attributes,temp.value]);};});return coll;}(obj.value):(typeof obj.value==='object')?function(obj){var coll=[];for(var key in obj){var temp=intermediate_format(obj[key],key);coll.push([key,temp.attributes,temp.value]);};return coll;}(obj.value):obj.value;return{'key':key,'attributes':attributes,'value':value};};this.json_to_if=function(json){if(typeof json==='undefined')throw{name:'ParamError',message:'json must be supplied to json_to_if'};var result=[];for(var key in json){var temp=intermediate_format(json[key],key);result.push([key,temp.attributes,temp.value]);};return result;};var collectibles={th:null,tr:null,td:null,user:null,file:null,col:null,dir:null,tab:null,status:null,dependency:null,merged_table:null,group:null,datum:null,comp:null};var process_array=function(arr){var val,temp,push_value,lcv,len=arr.length;if(!len)return undefined;var first_element=arr[0][0];if(first_element in collectibles){val=[];for(lcv=0;lcv<len;lcv+=1){temp=jsonify(arr[lcv]);push_value={};push_value[temp.key]={value:temp.value,attributes:temp.attributes};val.push(push_value);};return val;};val={};for(lcv=0;lcv<len;lcv+=1){temp=jsonify(arr[lcv]);val[temp.key]={value:temp.value,attributes:temp.attributes};};return val;};var jsonify=function(obj){var key=obj[0],attributes_collection=obj[1],attributes={},len,lcv,property,att;if(Object.isArray(attributes_collection)){len=attributes_collection.length;for(lcv=0;lcv<len;lcv+=1){att=attributes_collection[lcv];for(property in att)attributes[property]=att[property];};};return{key:key,value:Object.isArray(obj[2])?process_array(obj[2]):obj[2],attributes:attributes};};this.if_to_json=function(str){if(typeof str==='undefined')throw{name:'ParamError',message:'str must be supplied to if_to_json'};eval('var json = ('+str+').result;');var result={},len=json.length,lcv,temp;for(lcv=0;lcv<len;lcv+=1){temp=jsonify(json[lcv]);result[temp.key]={value:temp.value,attributes:temp.attributes};};return result;};};Array.prototype.______array='______array';var JSON={org:'http://www.JSON.org',copyright:'(c)2005 JSON.org',license:'http://www.crockford.com/JSON/license.html',stringify:function(arg){var c,i,l,s='',v;switch(typeof arg){case'object':if(arg){if(arg.______array=='______array'){for(i=0;i<arg.length;++i){v=this.stringify(arg[i]);if(s){s+=',';}
s+=v;}
return'['+s+']';}else if(typeof arg.toJsonString!='undefined'){return arg.toJsonString();}else if(typeof arg.toString!='undefined'){for(i in arg){v=arg[i];if(typeof v!='undefined'&&typeof v!='function'){v=this.stringify(v);if(s){s+=',';}
s+=this.stringify(i)+':'+v;}}
return'{'+s+'}';}}
return'undefined';case'number':return isFinite(arg)?String(arg):'undefined';case'string':l=arg.length;s='"';for(i=0;i<l;i+=1){c=arg.charAt(i);if(c>=' '){if(c=='\\'||c=='"'){s+='\\';}
s+=c;}else{switch(c){case'\b':s+='\\b';break;case'\f':s+='\\f';break;case'\n':s+='\\n';break;case'\r':s+='\\r';break;case'\t':s+='\\t';break;default:c=c.charCodeAt();s+='\\u00'+Math.floor(c/16).toString(16)+
(c%16).toString(16);}}}
return s+'"';case'boolean':return String(arg);default:return'undefined';}},tableToArray:function(table){var ret=new Object();var keys=table[0][2];var vals=table[1][2];for(var i=0;i<keys.length;i++){ret[keys[i][2]]=vals[i][2][0][2];}
return ret;},get:function(obj,key){var ary=obj['result']
if(ary==undefined)
ary=obj;for(var i=0;i<ary.length;i++)
{if(ary[i][0]==key)
return ary[i][2];}
return null;},getAttr:function(obj,key,attr){var ary=obj['result']
if(ary==undefined)
ary=obj[2][1];else
ary=ary[2][1];for(m=0;m<ary.length;m++)
{if(ary[m][attr]!=undefined)
return ary[m][attr];}
return null;},parse:function(text,ctors){var at=0;var ch=' ';function error(m){throw{name:'JSONError',message:m,at:at-1,text:text};}
function next(){ch=text.charAt(at);at+=1;return ch;}
function white(){while(ch!=''&&ch<=' '){next();}}
function str(){var i,s='',t,u;if(ch=='"'){outer:while(next()){if(ch=='"'){next();return s;}else if(ch=='\\'){switch(next()){case'b':s+='\b';break;case'f':s+='\f';break;case'n':s+='\n';break;case'r':s+='\r';break;case't':s+='\t';break;case'u':u=0;for(i=0;i<4;i+=1){t=parseInt(next(),16);if(!isFinite(t)){break outer;}
u=u*16+t;}
s+=String.fromCharCode(u);break;default:s+=ch;}}else{s+=ch;}}}
error("Bad string");}
function arr(){var a=[];if(ch=='['){next();white();if(ch==']'){next();return a;}
while(ch){a.push(val());white();if(ch==']'){next();return a;}else if(ch!=','){break;}
next();white();}}
error("Bad array");}
function obj(){var k,o={};if(ch=='{'){next();white();if(ch=='}'){next();return o;}
while(ch){k=str();white();if(ch!=':'){break;}
next();o[k]=val();white();if(ch=='}'){next();return o;}else if(ch!=','){break;}
next();white();}}
error("Bad object");}
function num(){var n='',v;if(ch=='-'){n='-';next();}
while(ch>='0'&&ch<='9'){n+=ch;next();}
if(ch=='.'){n+='.';while(next()&&ch>='0'&&ch<='9'){n+=ch;}}
if(ch=='e'||ch=='E'){n+='e';next();if(ch=='-'||ch=='+'){n+=ch;next();}
while(ch>='0'&&ch<='9'){n+=ch;next();}}
v=+n;if(!isFinite(v)){error("Bad number");}else{return v;}}
function word(){switch(ch){case't':if(next()=='r'&&next()=='u'&&next()=='e'){next();return true;}
break;case'f':if(next()=='a'&&next()=='l'&&next()=='s'&&next()=='e'){next();return false;}
break;case'n':if(next()=='u'&&next()=='l'&&next()=='l'){next();return null;}
break;}
error("Syntax error");}
function ctor(){var name='';if(ch=='@'){next();while(ch=='.'||(ch.toUpperCase()>='A'&&ch.toUpperCase()<='Z')){name+=ch;next();}
var arg=val();if(name in ctors){return ctors[name](arg);}else{error("Unknown ctor "+name);}}
error("Bad ctor");}
function val(){white();switch(ch){case'@':return ctor();case'{':return obj();case'[':return arr();case'"':return str();case'-':return num();default:return ch>='0'&&ch<='9'?num():word();}}
return val();}};var make_trans_id=function(post_id){return post_id+'_'+(new Date()).getTime();};var pre_post=function(obj){var post_id='id'in obj&&typeof obj.id in{'string':null,'number':null}?obj.id:++id;var queue=obj.queue||api.queue;if(obj.loading)obj.loading(post_id);if(!obj.suppress_busy&&!queue.free())api.handlers.busy();var config={method:obj.method,api_params:obj.api_params,handler:obj.handler,post_id:post_id,async:obj.async,queue:queue,use_prototype_ajax:!!(obj.use_prototype_ajax)};queue.push(function(){var submit_transaction=function(){post.apply(api,[config]);};submit_transaction();});};var api_url=document.location.pathname+'?'+
Object.toQueryString({ajax:true,apiversion:3,protocol:'json-rpc'});this.version=function(){var file=(api.url||api_url).split('/').last().toLowerCase();if(file.match(/test/))return'test';if(file.match(/beta/))return'beta';if(file.match(/old/))return'old';return'prod';};this.uniq_id=(function(){var uniq_id=0;var uniq_prefix='api'+(''+(new Date).getTime()).split('').reverse().slice(0,3).join('');return function(){return uniq_prefix+(uniq_id++);};})();var post=function(obj){var method=obj.method,api_params=obj.api_params,handler=obj.handler,post_id=obj.post_id,async=typeof obj.async==='undefined'?true:obj.async,queue=obj.queue,use_prototype_ajax=obj.use_prototype_ajax;var url=api.url||api_url;var post_arguments=$A(arguments);try{var post_params={method:method,params:JSONIF.json_to_if(api_params),id:post_id};}catch(error){return api.error_log(error);};post_params=JSON.stringify(post_params);if(api.debug)debug(post_params);var content_failure=function(response,post_id,total_time){var msg='An error has occurred. It was recorded in TenTen.API.';try{msg+=' The server said:\n'+response.transport.responseText;}catch(error){msg+=('name'in error)?'\n'+error.name+': ':'';msg+=('message'in error)?'\n'+error.message:'';msg+=('lineNumber'in error)?'\nline: '+error.lineNumber:'';msg+=('fileName'in error)?'\nfile: '+error.fileName:'';api.error_log(error);};var result={rc:{value:'-1'},msg:{value:msg}};queue.shift();if(queue===api.queue&&queue.free())api.handlers.free();return handler(api_handlers(result.rc.value,result,post_id),post_id,total_time);};var response_success=function(response,post_id,total_time){if(response.transport.readyState!==4)return response_success.curry(response,post_id,total_time).delay(0.1);try{var text=response.transport.responseText;var processed_response=JSONIF.if_to_json(text).out.value;}catch(error){content_failure(response,post_id,total_time);return api.error_log(error);};queue.shift();if(queue===api.queue&&queue.free())api.handlers.free();handler(api_handlers(processed_response.rc.value,processed_response,post_id),post_id,total_time);};if(api.logged_out){queue.shift();handler(api_handlers('35',{rc:{value:'35'},msg:{value:'You are not logged in.'}},post_id),post_id,0);return;};var start_time;if(use_prototype_ajax)
new Ajax.Request(url+=(url.match(/\?/)?'&':'?')+'trans_id='+make_trans_id(post_id),{evalJS:false,evalJSON:false,sanitizeJSON:false,onCreate:function(){start_time=(new Date).getTime();if(obj.create_handler)obj.create_handler(post_id);},onSuccess:function(response){var self=arguments.callee;if(response.transport.readyState!==4)return self.curry(response).delay(1);var total_time=(new Date).getTime()-start_time;response_success(response,post_id,total_time);},onFailure:function(response){var transport=response.transport;var message=new Template('Request ID: #{id}, HTTP Status #{status} for #{url}: #{text} Info: #{description}');api.error_log({name:'APIError',message:message.evaluate({id:post_id,status:transport.status,text:transport.statusText,url:url,description:obj.description||'No further information is available.'})});},method:'POST',asynchronous:async,postBody:encodeURIComponent(post_params)});else
api.ajax(url,{id:post_id,add_trans_id:true,success_handler:response_success,async:async,parameters:encodeURIComponent(post_params),method:'POST',description:post_params});};this.requests={};var requests=this.requests;this.abort=function(post_id){if(typeof post_id==='undefined')return;if(post_id in requests)return abort_request(post_id,2);if(post_id==='all'){for(var request in requests){abort_request(request,2);};};};var net_retry=function(){};this.net_retry=function(){net_retry();};this.net_failure=function(){};this.net_recovery=function(){};var net_failure=function(status){return[0,1223,12002,12029,12030,12031,12152].include(+status);};var abort_request=function(post_id,abort_value){if(!(post_id in requests))return;if(requests[post_id].delay_id)window.clearTimeout(requests[post_id].delay_id);var ajax=requests[post_id].ajax;if(ajax===null)return;try{if(!ajax.aborted){ajax.aborted=abort_value||1;(function(){ajax.transport.abort();}).defer();};}catch(error){api.error_log(error);};};this.ajax_cancel_loading=function(){};this.ajax_cancel_handler=function(){};this.ajax=function(url,obj){var post_id='id'in obj&&typeof obj.id in{'string':null,'number':null}?obj.id:++id;if(obj.add_trans_id)url+=(url.match(/\?/)?'&':'?')+'trans_id='+make_trans_id(post_id);var start_time;var create_handler=function(post_id){start_time=(new Date).getTime();if(obj.create_handler)obj.create_handler(post_id);};var success_handler=function(response,post_id){var total_time=(new Date).getTime()-start_time;if(obj.success_handler)obj.success_handler(response,post_id,total_time);};var failure_handler=function(response,post_id){var total_time=(new Date).getTime()-start_time;if(obj.failure_handler)obj.failure_handler(response,post_id,total_time);};var async='async'in obj?obj.async:true;var method=obj.method||'POST';var timeout=obj.timeout||api.timeout;var parameters=obj.parameters||'';if(!(post_id in requests))requests[post_id]={ajax:null,delay_id:null,repost:null,count:0,config:obj};var succeeded=false,created=false;var request=function(){if(!(post_id in requests))return;var returned=false;var repost=function(no_delay){returned=false;if(requests[post_id].delay_id)window.clearTimeout(requests[post_id].delay_id);var message=new Template('The API transaction has timed out or failed. It has been aborted and re-posted. '+'Request ID: #{id} has been posted #{count} times so far. Info: #{description}');var api_error={name:'APIError',message:message.evaluate({id:post_id,count:requests[post_id].count,description:obj.description||'No further information is available.'})};api.error_log(api_error);var stop_reposting=function(){var message=new Template('This transaction has been reposted #{count} times. '+'Click OK to continue waiting for a response or cancel to stop.');return!window.confirm(message.evaluate({count:requests[post_id].count}));};if(requests[post_id].count&&requests[post_id].count%20===0&&stop_reposting())
return api.stop({loading:api.ajax_cancel_loading,handler:api.ajax_cancel_handler,suppress_busy:true});request.delay(no_delay?0:timeout);};requests[post_id].repost=repost;returned=false;abort_request(post_id,1);var delay_id=null;requests[post_id].delay_id=delay_id=(function(){if(!(post_id in requests))return;if(!returned)repost(true);}).delay(timeout);var net_failure_handler=function(orig_response){var test_interval=30;net_healthy=false;var handler=function(){net_healthy=true;api.net_recovery();requests[post_id].repost(true);};var status=orig_response.getStatus();var message=new Template('Request ID: #{id}, HTTP Status #{status} for #{url}: #{text} Info: #{description}');api.error_log({name:'APIError',message:message.evaluate({id:post_id,status:status,text:'Connection Failure',url:url,description:obj.description||'No further information is available.'})});if(requests[post_id].delay_id)window.clearTimeout(requests[post_id].delay_id);var test_connection=function(callback){var retry=function(){var delay=(function(){test_connection(callback);}).delay(test_interval);net_retry=function(){net_retry=function(){};if(delay)window.clearTimeout(delay);test_connection(callback);};};new Ajax.Request(api.resource_path+'html/connection.html?time='+(new Date).getTime(),{method:'GET',onSuccess:function(response){if(net_failure(response.getStatus()))retry();else callback();},onFailure:retry});};api.net_failure();test_connection(handler);};var ajax_request=null;ajax_request=new Ajax.Request(url,{evalJS:false,evalJSON:false,sanitizeJSON:false,onCreate:function(){if(!created){created=true;create_handler(post_id);};},onSuccess:function(response){returned=true;var self=arguments.callee,status=response.getStatus();if(ajax_request&&ajax_request.aborted){if(ajax_request.aborted===2){if(delay_id)window.clearTimeout(delay_id);return repost(true);};return;};if(net_failure(status))return net_failure_handler(response);if(response.transport.readyState!==4){return(function(){var recover=function(){if(delay_id)window.clearTimeout(delay_id);repost(true);};if(response.transport.readyState!==4)return recover();self(response);}).delay(1);};if(!succeeded){succeeded=true;if(delay_id)window.clearTimeout(delay_id);success_handler(response,post_id);(function(){delete requests[post_id];}).delay(3);};},onFailure:function(response){var status=response.getStatus(),text=response.getStatusText();if(net_failure(status))return net_failure_handler(response);var message=new Template('Request ID: #{id}, HTTP Status #{status} for #{url}: #{text} Info: #{description}');api.error_log({name:'APIError',message:message.evaluate({id:post_id,status:status,text:text,url:url,description:obj.description||'No further information is available.'})});if(delay_id)window.clearTimeout(delay_id);failure_handler(response,post_id);(function(){delete requests[post_id];}).delay(3);},method:method,asynchronous:async,postBody:parameters});ajax_request.time=(new Date).getTime();requests[post_id].ajax=ajax_request;requests[post_id].count+=1;};request();};this.addops=function(obj){try{if(!TenTen.App)throw{name:'APIError',message:'TenTen.API.addops can only be used inside a GUI session'};}catch(error){api.error_log(error);};var tab=obj.tab,params=TenTen.App.getAllParams(tab);params.addops=obj.ops;params.refresh=(obj.refresh&&1)||0;TenTen.App.updateTabWithParams(tab,params);};this.clear=function(obj){pre_post({method:'clear',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:api.credentials(),handler:obj.handler,loading:obj.loading,async:obj.async});};this.cms_link=function(obj){var cred=api.credentials(),post_params={uid:cred.uid.value,sid:cred.sid.value,pswd:cred.pswd.value,host:window.location.host},url=obj.link.href;var form=new Element('form',{method:'post',action:url,target:(obj||{})['window']||'_blank'});for(var input in post_params)form.appendChild(new Element('input',{type:'hidden',name:input,value:post_params[input]}));document.body.appendChild(form);form.submit();(function(){document.body.removeChild(form);}).delay(3);return false;};this.dbmapi=function(obj){var params=api.credentials();var simple=!!obj.simple;var flat_types={'sym':null,'int':null,'float':null,'char_vector':null,'fun':null,'char':null,'null':null};var vectors={'sym_vector':'sym','int_vector':'int','float_vector':'float'};var process_input=function(input){var result={};var convert=function(value){var type=value.type,attributes=value.attr,result,attr;if(type in flat_types){result={val:{attributes:{type:type},value:value.value}};if(attributes)result.attr=convert(attributes).val;return result;};if(type==='dict'){result={val:{attributes:{type:'dict'}}};for(var att in value.value){if(!('value'in result.val))result.val.value={};result.val.value[att]={value:convert(value.value[att])};};if(attributes)result.attr=convert(attributes).val;return result;};if(type in vectors){var vector={attributes:{type:type}};if(value.value.length)vector.value=value.value.map(function(value){return{datum:{attributes:{type:vectors[type]},value:value}}});result={val:vector};if(attributes)result.attr=convert(attributes).val;return result;};if(type==='list'){var list={attributes:{type:type}};if(value.value.length)list.value=value.value.map(function(value){return{datum:convert(value).val};});result={val:list};if(attributes)result.attr=convert(attributes).val;return result;};try{var message=new Template('Unsupported type: "#{type}" passed into convert in process_input.');throw{name:'APIError',message:message.evaluate({type:type})};}catch(error){api.error_log(error);};};for(var att in input)result[att]={value:convert(input[att])};return result;};var process_output=function(output){var result={rc:output.rc,msg:output.msg};var convert=function(value){var type=value.value.val.attributes.type,contents=value.value.val.value,attributes=value.value.attr,result={type:type};if(type in flat_types){if(type==='float'||type==='int')
result.value=contents&&contents-0;else
result.value=contents;if(attributes)result.attr=convert({value:{val:attributes}});return result;};if(type in vectors){result.value=(contents||[]).map(function(datum){if(type==='float_vector'||type==='int_vector')
return datum.datum.value&&datum.datum.value-0;else
return datum.datum.value;});if(attributes)result.attr=convert({value:{val:attributes}});return result;};if(type==='list'){result.value=(contents||[]).map(function(value){return convert({value:{val:value.datum}});});if(attributes)result.attr=convert({value:{val:attributes}});return result;};if(type==='dict'){result.value={};for(var att in contents)result.value[att]=convert(contents[att]);if(attributes)result.attr=convert({value:{val:attributes}});return result;};try{var message=new Template('Unsupported type: "#{type}" passed into convert in process_output');throw{name:'APIError',message:message.evaluate({type:type})};}catch(error){api.error_log(error);};};if('dbmout'in output)result.dbmout=convert(output.dbmout);return result;};var handler=function(result,post_id,total_time){obj.handler(simple&&process_output(result)||result,post_id,total_time);};params.trans={value:obj.trans};params.params={value:simple&&process_input(obj.params)||obj.params};pre_post({method:'dbmapi',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:handler,loading:obj.loading,async:obj.async});};this.dbstatus=function(obj){pre_post({method:'dbstatus',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:api.credentials(),handler:obj.handler,loading:obj.loading,async:obj.async,queue:d_accum_queue,use_prototype_ajax:true});};this.dir=function(obj){var params=api.credentials();params.name={value:obj.path};pre_post({method:'dir',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.drop=function(obj){var params=api.credentials();params.objects={value:obj.objects.map(function(name){return{name:{value:name}};})};pre_post({method:'drop',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.dropdir=function(obj){var params=api.credentials();params.name={value:obj.name};pre_post({method:'dropdir',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.dropgroup=function(obj){var params=api.credentials();params.gid={value:obj.gid};pre_post({method:'dropgroup',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.droptable=function(obj){var params=api.credentials();params.name={value:obj.name};pre_post({method:'droptable',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.favorites=function(obj){pre_post({method:'favorites',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:api.credentials(),handler:obj.handler,loading:obj.loading,async:obj.async});};this.feed_url;this.fileupload=function(obj){var params=api.credentials();params.mode={value:'upload'};var post_id=++id;var url=api.upload_url||document.location.pathname+'?'+Object.toQueryString({sid:params.sid.value,trans_id:make_trans_id(post_id)});if(!('trans_id'in url.toQueryParams()))url+=(url.match(/\?/)&&'&'||'?')+'trans_id='+make_trans_id(post_id);var blank_path=api.resource_path+'html/upload.html';return function(event){event.stop();var form=this;if('warning'in obj&&!obj.warning())return;if(form.upload.value==='')return(obj.pre_post_error||function(){alert('No file was selected to be uploaded.');})();$(form).stopObserving();try{if(!form.tagName||form.tagName.toLowerCase()!=='form')throw{name:'InstanceError',message:'Instances of TenTen.API.fileupload must be set as submit handlers for forms only.'};}catch(error){return api.error_log(error);};var frame_name=form.id+'_frame';var frame_load=function(){var response=window.frames[frame_name].document.body.innerHTML;if(!response)return;try{$(frame_name).stopObserving();obj.handler(JSONIF.if_to_json(response).out.value);}catch(error){return api.error_log(error);};};if(!$(frame_name)){var iframe=new Element('iframe',{id:frame_name,name:frame_name,style:'display: none;visibility: hidden;z-index: -1;',src:blank_path});document.body.appendChild(iframe);};$(frame_name).observe('load',frame_load);form.method='post';form.target=frame_name;form.action=url;form.enctype='multipart/form-data';form.encoding='multipart/form-data';for(var credential in params){form.appendChild(new Element('input',{name:credential,type:'hidden',value:params[credential].value}));};var submit=function(){form.submit();if(obj.loading)obj.loading(post_id);}.bind(form);submit.defer();};};var simple_handler=function(handler,result,post_id){if(+result.rc.value)return handler(result,post_id);var simple={table:{cols:result.table.value.cols.value&&result.table.value.cols.value.map(function(col){var th=col.th;var column={label:th.value};for(var att in th.attributes){column[att]=th.attributes[att];};return column;}),data:result.table.value.data.value&&result.table.value.data.value.map(function(row){return row.tr.value.map(function(cell){return cell.td.value;});})},rc:result.rc,msg:result.msg};if('nrows'in result)simple.nrows=result.nrows.value;['ldesc','link','sdesc','title'].each(function(att){if(att in result.table.value)simple.table[att]=result.table.value[att].value;});if('name'in result.table.attributes)simple.table.name=result.table.attributes.name;handler(simple,post_id);};this.findcomps=function(obj){var params=api.credentials();params.comp={attributes:obj.attributes};pre_post({method:'findcomps',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.findgroups=function(obj){var params=api.credentials();params.group={attributes:obj.attributes};pre_post({method:'findgroups',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.findrow=function(obj){var params=api.credentials();params.find={attributes:{row:'row'in obj?obj.row:0,exp:obj.exp,direction:obj.direction||'next'}};if(obj.label)params.label={value:obj.label};pre_post({method:'findrow',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.findusers=function(obj){var params=api.credentials();params.user={attributes:obj.attributes};pre_post({method:'findusers',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.getdata=function(obj){var handler=obj.simple&&simple_handler.curry(obj.handler)||obj.handler;var params=api.credentials();if(typeof obj.rows in{'string':null,'number':null}){params.rows={value:{next:{value:obj.rows}},attributes:{mode:'1'}};}else{params.rows={value:{from:{value:obj.rows.from},to:{value:obj.rows.to}},attributes:{mode:'2'}};};if(obj.cols){if(obj.cols.constructor===Array){if(typeof obj.cols[0]==='string')
params.cols={value:obj.cols.map(function(col){return{col:{value:col}};})};else
params.cols={attributes:{mode:'3'},value:{indices:{value:obj.cols.join(',')}}};}else{params.cols={value:{from:{value:obj.cols.from},to:{value:obj.cols.to}},attributes:{mode:'2'}};};};if(obj.format)params.format=obj.format;if(obj.label)params.label={value:obj.label};pre_post({method:'getdata',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:handler,loading:obj.loading,async:obj.async});};this.getdir=function(obj){var params=api.credentials();params.name={value:obj.name};if(typeof obj.include!=='undefined'&&obj.include.length)
params.include={value:obj.include.map(function(name){return{name:{value:name}};})};pre_post({method:'getdir',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.getgroups=function(obj){pre_post({method:'getgroups',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:api.credentials(),handler:obj.handler,loading:obj.loading,async:obj.async});};this.getotheruser=function(obj){var params=api.credentials();params.user={value:obj.user};pre_post({method:'getotheruser',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.gettab=function(obj){var params=api.credentials();params.name={value:obj.name};if(typeof obj.include!=='undefined'&&obj.include.length)
params.include={value:obj.include.map(function(name){return{name:{value:name}};})};pre_post({method:'gettab',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.gettabordir=function(obj){var params=api.credentials();params.name={value:obj.name};pre_post({method:'gettabordir',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.getuser=function(obj){pre_post({method:'getuser',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:api.credentials(),handler:function(result,post_id){var no_errors=0===+result.rc.value;if(no_errors)api.user=Object.clone(result.user.attributes);obj.handler(result,post_id);},loading:obj.loading,async:obj.async});};this.hashget=function(obj){var params=api.credentials();params.name={value:obj.name};pre_post({method:'hashget',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.hashput=function(obj){var params=api.credentials();params.name={value:obj.name};if(obj.persist)params.name.attributes={mode:'persist'};params.value={value:obj.value};pre_post({method:'hashput',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler||function(){},loading:obj.loading,async:obj.async});};this.listdir=function(obj){var params=api.credentials();params.name={value:obj.path};if(typeof obj.include!=='undefined'&&obj.include.length){params.include={value:obj.include.map(function(name){return{name:{value:name}};})};if('include_mode'in obj)params.include.attributes={mode:obj.include_mode};};params.descendants={value:!!obj.descendants?1:0};pre_post({method:'listdir',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};var login_handler={};var default_login_handler=function(url,params){var form=new Element('form',{method:'post',action:url});delete params.submit;for(var param in params)
form.insert(new Element('input',{type:'hidden',name:param,value:params[param]}));document.body.appendChild(form);(function(){form.submit();}).delay(1);};this.default_login_handler;this.login=function(obj){if(obj.loading)obj.loading();var handler_id=++id,host=(obj.host||window.location.host),url='https://'+host+'/cgi-bin/login?',obey_error_40=!!obj.obey_error_40,gw={prod:'',beta:'_beta',test:'_test',old:'_old'}[obj.gw||'prod'];gw='/cgi-bin/gw'+gw+'?ptype=login';var handler=obj.handler||function(){};var query_string,login_post,script;system_healthy_handler=function(){query_string={handler:'TenTen.API.login_handler.curry('+handler_id+')',gw:gw,random:Math.random()};if(obj.use_qs){login_post={};for(var param in obj.params)
login_post[param]=obj.params[param];query_string.login_post=Object.toQueryString(login_post);}else{TenTen.Util.Cookie.set('login_post',Object.toQueryString(obj.params),null,'.1010data.com',null,true);};api.default_login_handler=default_login_handler.curry('https://'+host+gw,obj.params);script=new Element('script',{type:'text/javascript',src:url+Object.toQueryString(query_string)});login_handler['login_'+handler_id]=function(response){script.remove();TenTen.Util.Cookie.del('login_post');if(response.error===3){api.error_log({name:'APIError',message:response.msg.value});delete obj.loading;obj.use_qs=true;return api.login(obj);};if(obey_error_40&&response.error===40){api.error_log({name:'APIError',message:response.msg.value});delete obj.loading;obj.host='nyx.1010data.com';return api.login(obj);};if(response.error===1||(response.error===0&&response.location===null)){return api.default_login_handler();};var result={rc:{value:response.error}};result.msg={value:response.msg};var message=(new Element('div')).update(result.msg.value).select('.error');if(message.length)result.msg.value=message.first().innerHTML;if(response.location){result.location={value:response.location};var cred=response.location.match(/\?(.*)$/);cred=cred&&cred[1].toQueryParams();cred={uid:{value:cred.uid},pswd:{value:cred.pswd},sid:{value:cred.sid}};api.reset_credentials(cred);};handler(result);};$$('head')[0].appendChild(script);};TenTen.XML.xml_to_json({url:'/status?random='+Math.random(),handler:function(xml){if(!('system'in xml))return system_healthy_handler();var status=xml.system.value.filter(function(obj){return obj.status.attributes.host===host;})[0].status;var system_is_up=status.value.filter(function(node){return'up'in node;})[0].up.value==='true';if(system_is_up)return system_healthy_handler();var message=status.value.filter(function(node){return'message'in node;})[0].message.value;return handler({rc:{value:1},msg:{value:message}});}});};this.login_handler=function(handler_id,response){var id='login_'+handler_id;if(id in login_handler){login_handler[id](response);(function(){delete login_handler[id];}).delay(3);};};this.logout=function(obj){var handler=function(result,post_id){console.log('running logout handler');console.log(result,post_id);if(+result.rc.value)api.logged_out=true;obj.handler(result,post_id);};var params=api.credentials();if('kill'in obj)params.kill={value:obj.kill&&'yes'||'no'};console.log('params.kill:');console.log(params.kill);pre_post({method:'logout',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:handler,loading:obj.loading,async:obj.async,queue:logout_queue});};this.merge=function(obj){var params=api.credentials();params.users={value:obj.users.map(function(user){return{user:{value:user}};})};params.tabs={value:obj.tabs.map(function(tab){return{tab:{value:tab}};})};if(obj.title&&obj.title.length)params.title={value:obj.title};if('name'in obj)
params.name=obj.name;else
params.parent={value:obj.parent};pre_post({method:'merge',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.mkdir=function(obj){var params=api.credentials();params.users={value:obj.users.map(function(user){return{user:{value:user}};})};params.upload={value:obj.upload.map(function(user){return{user:{value:user}};})};params.title={value:obj.title};if(obj.name)
params.name={value:obj.name};else
params.parent={value:obj.parent};pre_post({method:'mkdir',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.move=function(obj){var params=api.credentials();params.source={value:obj.source.map(function(src){return{name:{value:src}};})};params.target={value:obj.target};pre_post({method:'move',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.multiquery=function(obj){var multi_queue=new TenTen.Util.Queue(),break_on_error='break_on_error'in obj?obj.break_on_error:true;var responses=[],rc=0,msg='multiquery success',failed=[],failed_msg=new Template('multiquery failure, the following queries failed: #{failed}');var queries=obj.queries.map(function(config,index){var loading=index?null:obj.loading;var query_config=Object.clone(config);query_config.loading=loading;query_config.suppress_busy=!!obj.suppress_busy;query_config.handler=function(result){var no_errors=0===+result.rc.value;responses.push(result);if(no_errors){multi_queue.shift();}else{if(break_on_error){obj.handler({rc:{value:1},msg:{value:failed_msg.evaluate({failed:index})},responses:{value:responses}});}else{rc=1;failed.push(index);multi_queue.shift();};};};return api.query.curry(query_config);});queries.push(function(){obj.handler({rc:{value:rc},msg:{value:rc&&failed_msg.evaluate({failed:failed.join(', ')})||msg},responses:{value:responses}});});multi_queue.bulk(queries);};this.newstuff=function(obj){var params=api.credentials();if('num'in obj)params.num={value:obj.num};if('type'in obj)params.type={value:obj.type};pre_post({method:'newstuff',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.order=function(obj){var params=api.credentials();if(obj.tabs.length)params.tabs={value:obj.tabs.map(function(src){return{name:{value:src}};})};if(obj.dirs.length)params.dirs={value:obj.dirs.map(function(src){return{name:{value:src}};})};params.name={value:obj.name};pre_post({method:'order',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.putdir=function(obj){var params=api.credentials();params.dir={attributes:{}};for(var att in obj.attributes){params.dir.attributes[att]=obj.attributes[att];};pre_post({method:'putdir',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.putgroup=function(obj){var params=api.credentials();params.group={attributes:{}};for(var att in obj.attributes){params.group.attributes[att]=obj.attributes[att];};pre_post({method:'putgroup',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.puttab=function(obj){var params=api.credentials();params.tab={attributes:{}};for(var att in obj.attributes){params.tab.attributes[att]=obj.attributes[att];};pre_post({method:'puttab',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.putuser=function(obj){var params=api.credentials();params.user={attributes:obj.attributes};params.user.attributes.uid=params.uid.value;pre_post({method:'putuser',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:function(result,post_id){var no_errors=0===+result.rc.value;if(no_errors)api.user=Object.clone(result.user.attributes);obj.handler(result,post_id);},loading:obj.loading,async:obj.async});};var remove_ops=function(str){return str.replace(/^\<ops\>|\<\/ops\>$/gi,'');};this.query=function(obj){var params=api.credentials();params.name={value:obj.name||obj.table};if('macro'in obj)
params.macro={value:remove_ops(obj.macro)};else
params.ops={value:obj.query};if(obj.label)params.label={value:obj.label};pre_post({method:'query',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.querydata=function(obj){var params=api.credentials();params.name={value:obj.name||obj.table};if('rows'in obj){if(typeof obj.rows in{'string':null,'number':null}){params.rows={value:{next:{value:obj.rows}},attributes:{mode:'1'}};}else{params.rows={value:{from:{value:obj.rows.from},to:{value:obj.rows.to}},attributes:{mode:'2'}};};};if(obj.cols){if(obj.cols.constructor===Array){if(typeof obj.cols[0]==='string')
params.cols={value:obj.cols.map(function(col){return{col:{value:col}};})};else
params.cols={attributes:{mode:'3'},value:{indices:{value:obj.cols.join(',')}}};}else{params.cols={value:{from:{value:obj.cols.from},to:{value:obj.cols.to}},attributes:{mode:'2'}};};};var handler=obj.simple&&simple_handler.curry(obj.handler)||obj.handler;if('macro'in obj)
params.macro={value:remove_ops(obj.macro)};else
params.ops={value:obj.query};if(obj.format)params.format=obj.format;if(obj.label)params.label={value:obj.label};pre_post({method:'querydata',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:handler,loading:obj.loading,async:obj.async});};this.querytable=function(obj){var params=api.credentials();params.name={value:obj.name||obj.table};params.savetable_name={value:obj.savetable_name.value,attributes:{}};if('attributes'in obj.savetable_name&&'mode'in obj.savetable_name.attributes)
params.savetable_name.attributes.mode=obj.savetable_name.attributes.mode;['title','sdesc','ldesc','link','maxdown'].each(function(att){if(att in obj)params[att]={value:obj[att]};});params.merge={value:obj.merge||'1'};if('users'in obj)params.users={value:obj.users.map(function(user){return{user:{value:user}};})};if('modcol'in obj){params.modcol={attributes:{name:obj.modcol.name}};if('value'in obj.modcol)params.modcol.value=obj.modcol.value;if('format'in obj.modcol)params.modcol.attributes.format=obj.modcal.format;if('title'in obj.modcol)params.modcol.attributes.title=obj.modcal.title;};if('macro'in obj)
params.macro={value:remove_ops(obj.macro)};else
params.ops={value:obj.query};pre_post({method:'querytable',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.restore=function(obj){pre_post({method:'restore',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:api.credentials(),handler:obj.handler,loading:obj.loading,async:obj.async});};this.savetable=function(obj){var params=api.credentials();params.name={value:obj.name.value,attributes:{}};if('attributes'in obj.name&&'mode'in obj.name.attributes)params.name.attributes.mode=obj.name.attributes.mode;['title','sdesc','ldesc','link','maxdown'].each(function(att){if(att in obj)params[att]={value:obj[att]};});params.merge={value:obj.merge||'1'};if('users'in obj)params.users={value:obj.users.map(function(user){return{user:{value:user}};})};if('modcol'in obj){params.modcol={attributes:{name:obj.modcol.name}};if('value'in obj.modcol)params.modcol.value=obj.modcol.value;if('format'in obj.modcol)params.modcol.attributes.format=obj.modcal.format;if('title'in obj.modcol)params.modcol.attributes.title=obj.modcal.title;};pre_post({method:'savetable',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.stop=function(obj){pre_post({method:'stop',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:api.credentials(),handler:obj.handler,loading:obj.loading,async:obj.async,queue:d_accum_queue,use_prototype_ajax:true});};this.support=function(obj){var params=api.credentials();params.type={value:obj.type};params.subject={value:obj.subject};params.message={value:obj.message};if('email'in obj)params.email={value:obj.email};pre_post({method:'support',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.tabinfo=function(obj){var params=api.credentials();params.name={value:obj.name};var handler=obj.simple&&simple_handler.curry(obj.handler)||obj.handler;pre_post({method:'tabinfo',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:handler,loading:obj.loading,async:obj.async});};this.upload=function(obj){var params=api.credentials();var table=obj.table;params.table={value:{},attributes:{}};for(var att in table){if(att!=='name')params.table.value[att]={value:table[att]};};if('name'in table)params.table.attributes.name=table.name;params.table.value.cols={value:table.cols.map(function(c){var column={th:{value:c.label,attributes:{name:c.name,type:c.type}}};if('format'in c)column.attributes.format=c.format;return column;})};params.table.value.data={value:table.data.map(function(r){var row={tr:{value:[]}};r.each(function(cell){row.tr.value.push({td:{value:cell}});});return row;})};if('name'in obj){params.name={value:obj.name.value,attributes:{}};if('attributes'in obj.name&&'mode'in obj.name.attributes)params.name.attributes.mode=obj.name.attributes.mode;};params.merge={value:obj.merge||'1'};if('users'in obj)params.users={value:obj.users.map(function(user){return{user:{value:user}};})};pre_post({method:'upload',suppress_busy:'suppress_busy'in obj&&obj.suppress_busy,api_params:params,handler:obj.handler,loading:obj.loading,async:obj.async});};this.upload_url;this.url;var welcome_handler={};this.welcome=function(obj){var handler_id=++id;var url=api.feed_url||'https://blog.1010data.com/blog/?feed=json';var callback=(url.match(/\?/)&&'&'||'?')+'callback=TenTen.API.welcome_handler.curry('+handler_id+')';var tags='&tag='+(obj.tags||[]).join(',');var wanted_tags=('tags'in obj)&&obj.tags.inject({},function(acc,tag){acc[tag]='';return acc;})||{};var script=new Element('script',{type:'text/javascript',src:url+callback+tags});welcome_handler['welcome_'+handler_id]=function(feed){var items=feed.items.filter(function(item){if(!('tags'in item))return false;return item.tags.inject(false,function(acc,tag){return acc||tag in wanted_tags});});script.remove();obj.handler(items);};if(obj.loading)obj.loading();$$('head')[0].appendChild(script);};this.welcome_handler=function(handler_id,feed){var id='welcome_'+handler_id;if(id in welcome_handler){welcome_handler[id](feed);(function(){delete welcome_handler[id];}).delay(3);};};};TenTen.Widget=new function(){var resource_path=TenTen.path+'/resources/Widget/';this.TextField=function(config){config.handler=config.handler||function(){};config.offset=config.offset||{left:0,top:0};config.id=config.id||'TenTenWidgetTextField'+(new Date()).getTime();config.width=config.width||250;config.height=config.height||35;var close=function(event){if(event)event.stop();form.remove();};var submit=function(event){config.handler(input.value);close();}
var form=new Element('form',{method:'post',action:'.'}).observe('submit',function(event){event.stop();return false;});var div=new Element('div',{id:config.id,'class':'widget_textfield'}).setStyle({width:config.width+'px',height:config.height+'px',position:'absolute',top:config.offset.top+'px',left:config.offset.left+'px',zIndex:'5'});var inner=new Element('div').setStyle({position:'absolute',top:'2px',left:'4px'});var input=new Element('input',{type:'text',value:config.text||'','class':'widget_textfield_input',size:config.size&&config.size.toString()||'25'}).observe('keydown',function(event){if(event.keyCode===Event.KEY_ESC)close();if(event.keyCode===Event.KEY_RETURN)submit();});var button=new Element('button',{type:'button','class':'widget_textfield_button'}).update(config.button||'Go.').observe('click',submit);var close_link=new Element('a',{href:'#','class':'widget_textfield_close'}).update('X').observe('click',close).setStyle({position:'absolute',top:'1px',right:'3px'});inner.appendChild(input);inner.appendChild(button)
div.appendChild(close_link);div.appendChild(inner);form.appendChild(div);document.body.appendChild(form);input.focus();};this.Bar=function(config){var graphic_cache=null;var graphic=function(name){if(!graphic_cache){graphic_cache=new Element('img',{src:resource_path+'images/bar-blank.png','class':'widget_bar_graphic'});};var img=graphic_cache.cloneNode(false);return img;};var random_color=function(){var rand=function(){return(256*Math.random()).floor().toString()};return['rgb(',[rand(),rand(),rand()].join(','),')'].join('');};var element=$(config.element).update('');var dimensions=element.getDimensions();var border=config.border||0;var total=config.total;var sort='sort'in config?config.sort:true;var stack='stack'in config?config.stack:true;var parts=config.parts;parts.each(function(part){part.width=((part.value/total)*100).round();});if(sort)parts=parts.sort(function(a,b){return a.value-b.value;}).reverse();if(stack)element.absolutize();parts.each(function(part){var img=graphic();var style={width:part.width+'%',height:dimensions.height-(border*2)+'px',backgroundColor:part.color||random_color()};if(stack){style.position='absolute';style.left='0px';style.top='0px';};img.setStyle(style);element.appendChild(img);});this.destroy=function(){element.update('');};};this.Progress=function(config){var element=$(config.element);var dimensions=element.getDimensions();element.setStyle({textAlign:'center',lineHeight:dimensions.height-(2*(config.border||0))+'px',color:'white'});var part={value:config.value||0,color:config.color};var bar={};var draw=function(){if('destroy'in bar)bar.destroy();bar=new TenTen.Widget.Bar({element:config.element,parts:[part],border:config.border,total:100});var span=new Element('span',{style:'z-index: 9999;'}).update(part.value+'%');element.insert(span);span.absolutize().setStyle({top:'0px'});};this.update=function(number){part.value=number;draw();};draw();};this.Login=function(config){var element=$(config.element);var login=this,api=TenTen.API,state={},handler=config.handler,obey_error_40=!!config.obey_error_40;var load_state=function(){state=(TenTen.Util.Cookie.get('login_state')||'{}').evalJSON();};var save_state=function(values){TenTen.Util.Cookie.set('login_state',Object.toJSON(values),30,'.1010data.com');};this.hide=function(){element.hide();};this.show=function(){element.show();};var onload=config.onload||function(){};var initialize=function(){load_state();var show_kill_select=!!config.show_kill_select
default_no_kill=!!config.default_no_kill,show_host=!!config.show_host,show_gw=!!config.show_gw
template=config.template||resource_path+'html/login.html';var html_specs=login.html_specs={width:config.width||300,spinner_src:resource_path+'images/login-spinner.gif',pfrom:config.pfrom||'home',domain:config.domain||document.location.hostname,homepage:config.homepage||document.location.pathname.replace(/^\//,''),dir:config.dir||0};if(config.postprocess)html_specs.postprocess=config.postprocess;['form_id','error','uid','pswd','host_row','host','gw_row','gw','kill_select_row','kill_select','kill_radio_1','kill_radio_2','kill_yes','kill_no','spinner','submit_button','submit_disabled','kill_links','default_kill'].each(function(key){html_specs[key]=api.uniq_id();});api.ajax(template,{method:'GET',success_handler:function(response,post_id,total_time){var html=new Template(response.responseText).evaluate(html_specs);var holder=new Element('div');holder.innerHTML=html;holder.select('#'+html_specs.spinner).invoke('hide');if(show_kill_select){holder.select('#'+html_specs.kill_radio_1).invoke('remove');holder.select('#'+html_specs.kill_radio_2).invoke('remove');}else{if(!default_no_kill){holder.select('#'+html_specs.kill_select_row).invoke('remove');}};if(!show_host)holder.select('#'+html_specs.host_row).invoke('remove');if(!show_gw)holder.select('#'+html_specs.gw_row).invoke('remove');if(html_specs.postprocess){holder.select('input[name=postprocess]')[0].value=html_specs.postprocess;}else{holder.select('input[name=postprocess]').invoke('remove');}
var show_error=function(message){$(html_specs.error).addClassName('widget_login_error_showing').update(message);};var hide_error=function(){$(html_specs.error).removeClassName('widget_login_error_showing').update('');};element.innerHTML=holder.innerHTML;TenTen.Util.DOM.find({id:html_specs.form_id,handler:function(form){var submit_handler=function(event){if(event){event.stop();}else{var e=window.event;e.cancelBubble=true;e.returnValue=false;}
hide_error();var form_values=form.serialize(true);var login_params={},host=form_values.host,gw=form_values.gw;['uid','pswd','kill','pfrom','domain','homepage'].each(function(name){login_params[name]=form_values[name];});if(default_no_kill){if($('new_login').style.display!=='none'){login_params['kill']=this.id;}}
if(form_values.dir)login_params.dir=form_values.dir;if(form_values.postprocess)login_params.postprocess=form_values.postprocess;if(!login_params.uid||!login_params.pswd)return show_error('Please enter valid credentials.');api.login({host:host,gw:gw,params:login_params,obey_error_40:obey_error_40,loading:function(){hide_error();if($(html_specs.spinner))$(html_specs.spinner).show();$(html_specs.pswd).blur();if($(html_specs.submit_disabled)){$(html_specs.submit_disabled).show();$(html_specs.submit_button).hide();}else{if($(html_specs.submit_button))$(html_specs.submit_button).disable();};},handler:function(result){var no_errors=0===+result.rc.value;if($(html_specs.submit_disabled)){$(html_specs.submit_disabled).hide();$(html_specs.submit_button).show();}else{if($(html_specs.submit_button))$(html_specs.submit_button).enable();};if($(html_specs.spinner))$(html_specs.spinner).hide();if(!no_errors){if(5===+result.rc.value){$('new_login').show();}
else{return show_error(result.msg.value);}}else{state.kill=login_params.kill;if(host)state.host=host;if(gw)state.gw=gw;save_state(state);if(handler)return handler(result.location.value);document.location.href=result.location.value;};}});};if(show_kill_select){if('kill'in state){$A($(html_specs.kill_select).options).each(function(option){if(option.value===state.kill)option.selected='selected';});}}else if(default_no_kill){$(html_specs.default_kill).value='no';}else{if('kill'in state&&state.kill==='yes'){$(html_specs.kill_yes).checked='checked';}else{$(html_specs.kill_no).checked='checked';}};if(show_host&&'host'in state)
$A($(html_specs.host).options).each(function(option){if(option.value===state.host)option.selected='selected';});if(show_gw&&'gw'in state)
$A($(html_specs.gw).options).each(function(option){if(option.value===state.gw)option.selected='selected';});form.observe('submit',submit_handler);$('possess').onclick=submit_handler;$('yes').onclick=submit_handler;onload();}});}});};initialize();};};
