var OpenHandle=OpenHandle||{AdminRecord:null,Handle:null,HandleValue:null,Library:null,ParseHandle:null,ServerInfo:null,SiteInfo:null,ValueReference:null};OpenHandle.Library=function(args){var fields={"name":"OpenHandle JavaScript Client Library","version":"0.2.2","contact":"mailto:tony.hammond@gmail.com",};if(args!=null&&args!=undefined&&args!='undefined'){for(var f in fields){if(args[f]!=null&&args[f]!=undefined&&args[f]!='undefined'){fields[f]=args[f];}}} var getContact=function(){return fields.contact;};var getName=function(){return fields.name;};var getVersion=function(){return fields.version;};var toString=function(){return this.getName()+", v."+this.getVersion();};var listClasses=function(){var a=[];for(name in OpenHandle){a.push(name);}return a;};var listMethods=function(){var a=[];for(method in this){a.push(method);}return a;};var showClassMethods=function(args){if(args){switch(typeof args){case"string":var args={"name":args};break;case"object":var args=args;break;default:var args={};break;}} else{var args={};} var s="";var a=[];var name=args.name;var delim1=args.delim1?args.delim1:':\n';var delim2=args.delim2?args.delim2:', ';var delim3=args.delim3?args.delim3:'\n\n* OpenHandle.';if(name){s=delim3.replace(/^\s*/,"")+ name+delim1+eval("(new OpenHandle."+name+"()).listMethods().join('"+delim2+"')");} else{for(name in OpenHandle){a.push(name+delim1+eval("(new OpenHandle."+name+"()).listMethods().join('"+delim2+"')"));} s=delim3.replace(/^\s*/,"")+a.join(delim3);} return s;};return{getContact:getContact,getName:getName,getVersion:getVersion,listClasses:listClasses,listMethods:listMethods,showClassMethods:showClassMethods,toString:toString}};OpenHandle.ValueReference=function(args){var fields={"handle":"","index":""};if(args!=null&&args!=undefined&&args!='undefined'){for(var f in fields){if(args[f]!=null&&args[f]!=undefined&&args[f]!='undefined'){fields[f]=args[f];}}} var getHandle=function(){return fields.handle;};var getIndex=function(){return fields.index;} var equals=function(o){return(this.getHandle()==o.getHandle())&&(this.getIndex()==o.getIndex());};var toString=function(){return this.getIndex()+":"+this.getHandle();};var listMethods=function(){var a=[];for(method in this){a.push(method);}return a;};return{getHandle:getHandle,getIndex:getIndex,equals:equals,toString:toString,listMethods:listMethods}};OpenHandle.SiteInfo=function(args){var fields={"version":"","protocolVersion":{"majorProtocolVersion":"","minorProtocolVersion":""},"serialNumber":"","primaryMask":{"primary":"","multiPrimary":""},"hashOption":"","hashFilter":"","attributes":[{"name":"","value":""}],"numOfServer":"","serverRecords":[{"serverID":"","address":"","publicKeyRecord":"","serviceInterface":{"interfaceCounter":"","interface":{"serviceType":"","transmissionProtocol":"","portNumber":""}}}]};if(args!=null&&args!=undefined&&args!='undefined'){for(var f in fields){if(args[f]!=null&&args[f]!=undefined&&args[f]!='undefined'){fields[f]=args[f];}}} var getAttribute=function(){};var getHandleHash=function(){} var determineServerNum=function(){} var determineServer=function(){} var toString=function(){var servList="";if(fields.serverRecords!=null){servList=servList+fields.serverRecords[0];for(var i=1;i0?fields.data:"??";break;default:return'??';break;}};var setData=function(data){return fields.data=data;};var getPermission=function(){var o=fields.permission;switch(typeof o){case'object':var a=[];a.push((o.adminRead=="true")?"1":"0");a.push((o.adminWrite=="true")?"1":"0");a.push((o.publicRead=="true")?"1":"0");a.push((o.publicWrite=="true")?"1":"0");return a.join("");case'string':return o;default:return null;}};var setPermission=function(permission){var o=permission;switch(typeof o){case'object':var a=[];a.push((o.adminRead=="true")?"1":"0");a.push((o.adminWrite=="true")?"1":"0");a.push((o.publicRead=="true")?"1":"0");a.push((o.publicWrite=="true")?"1":"0");fields.permission=a.join("");return;case'string':fields.permission=o;return;default:return null;}};var getAdminCanRead=function(){return this.getPermission()[0]==1?true:false;};var getAdminCanWrite=function(){return this.getPermission()[1]==1?true:false;};var getAnyoneCanRead=function(){return this.getPermission()[2]==1?true:false;};var getAnyoneCanWrite=function(){return this.getPermission()[3]==1?true:false;};var setAdminCanRead=function(hasPermission){fields.permission[0]=hasPermission?1:0;};var setAdminCanWrite=function(hasPermission){fields.permission[1]=hasPermission?1:0;};var setAnyoneCanRead=function(hasPermission){fields.permission[2]=hasPermission?1:0;};var setAnyoneCanWrite=function(hasPermission){fields.permission[3]=hasPermission?1:0;};var getPermissionString=function(){var a=[];a.push(this.getAdminCanRead()?'r':'-');a.push(this.getAdminCanWrite()?'w':'-');a.push(this.getAnyoneCanRead()?'r':'-');a.push(this.getAnyoneCanWrite()?'w':'-');return a.join("");};var getPermissionStringLong=function(){var a=[];if(this.getAdminCanRead()){a.push('adminRead');} if(this.getAdminCanWrite()){a.push('adminWrite');} if(this.getAnyoneCanRead()){a.push('publicRead');} if(this.getAnyoneCanWrite()){a.push('publicWrite');} return a.join(", ");};var getTTL=function(){var o=fields.ttl;switch(typeof o){case'object':return o.ttlValue;case'string':return(o[0]=='+')?o.substr(1):o;default:return null;}};var getTTLType=function(){var o=fields.ttl;switch(typeof o){case'object':return(o.ttlType=='0')?'relative':'absolute';case'string':return(o[0]=='+')?'relative':'absolute';default:return null;}};var setTTL=function(ttl){return fields.ttl=ttl;};var setTTLType=function(ttlType){return fields.ttlType=ttlType;};var getTTLAsString=function(){return Math.round(100*this.getTTL()/3600)/100+'h';} var getTimestamp=function(){return fields.timestamp;};var getTimestampAsDate=function(){return this.getTimestampAsRFC822();};var getTimestampAsString=function(){return this.getTimestampAsRFC822();};var getNicerTimestampAsString=function(){return this.getTimestampAsRFC822();};var getTimestampAsRFC822=function(){var a=fields.timestamp.split(' ');if(a[4]=='BST'){var at=a[3].split(':');var t=at[0];if(t>1){t=t-1;} else{} at[0]=(t<10)?'0'+t.toString():t.toString();a[3]=at.join(':');a[4]='GMT';var s=a[0]+', '+a[2]+' '+a[1]+' '+a[5]+' '+a[3]+' '+a[4];} else{var s=a[0]+', '+a[2]+' '+a[1]+' '+a[5]+' '+a[3]+' '+a[4];} return s;};var getTimestampAsISO8601=function(){var m={'Jan':'01','Feb':'02','Mar':'03','Apr':'04','May':'05','Jun':'06','Jul':'07','Aug':'08','Sep':'09','Oct':'10','Nov':'11','Dec':'12'};var a=fields.timestamp.split(' ');var s=a[5]+'-'+m[a[1]]+'-'+a[2]+'T'+a[3];switch(a[4]){case'GMT':s+='Z';break;case'BST':s+='+01:00';break;case'EDT':s+='-05:00';break;case'EST':s+='-06:00';break;case'CDT':s+='-05:00';break;case'CST':s+='-06:00';break;case'MDT':s+='-05:00';break;case'MST':s+='-06:00';break;case'PDT':s+='-08:00';break;case'PST':s+='-09:00';break;default:} return s;};var setTimestamp=function(timestamp){return fields.timestamp=timestamp;};var isExpired=function(now,timeRetrieved){};var getReferences=function(){var o=fields.reference;switch(typeof o){case'object':var a=[];return o.referenceList;case'array':return o;default:return null;}};var setReferences=function(reference){return fields.reference=reference;};var getReferenceCount=function(){var o=fields.reference;switch(typeof o){case'_object':var a=[];return o.referenceList;case'_array':return o;default:return"0";}};var toString=function(){var s='';s+='index='+fields.index;s+=' type='+fields.type;s+=' data='+fields.data;return s;};var toStringArray=function(){var a=[];a.push('index = '+fields.index);a.push('type = '+fields.type);if(typeof(fields.data)=='object'){a.push('data = {...}');} else{a.push('data = '+fields.data);} a.push('permission = '+this.getPermissionStringLong());a.push('ttl = '+this.getTTLType()+', '+Math.round(100*this.getTTL()/3600)/100+'h');a.push('timestamp = '+this.getTimestampAsRFC822());a.push('reference = '+'[]');return a;};var duplicate=function(value){var o={};for(field in value){o.field=value.field;} return o;};var listMethods=function(){var a=[];for(method in this){a.push(method)}return a;};var getFields=function(){return fields;};var getFieldByName=function(name){switch(name){case'index':return this.getIndex();case'type':return this.getType();case'data':return this.getData();case'permission':return this.getPermission();case'ttl':return this.getTTL();case'timestamp':return this.getTimestamp();case'reference':return this.getReference();default:return null;}};return{getAdminCanRead:getAdminCanRead,getAdminCanWrite:getAdminCanWrite,getAnyoneCanRead:getAnyoneCanRead,getAnyoneCanWrite:getAnyoneCanWrite,getData:getData,getDataAsString:getDataAsString,getIndex:getIndex,getNicerTimestampAsString:getNicerTimestampAsString,getPermissionString:getPermissionString,getReferences:getReferences,getTimestamp:getTimestamp,getTimestampAsDate:getTimestampAsDate,getTimestampAsString:getTimestampAsString,getTTL:getTTL,getTTLType:getTTLType,getType:getType,getTypeAsString:getTypeAsString,getPermission:getPermission,getPermissionStringLong:getPermissionStringLong,getReference:getReferences,getReferenceCount:getReferenceCount,getTimestampAsRFC822:getTimestampAsRFC822,getTimestampAsISO8601:getTimestampAsISO8601,getTTLAsString:getTTLAsString,getFields:getFields,getFieldByName:getFieldByName,setAdminCanRead:setAdminCanRead,setAdminCanWrite:setAdminCanWrite,setAnyoneCanRead:setAnyoneCanRead,setAnyoneCanWrite:setAnyoneCanWrite,setData:setData,setIndex:setIndex,setReferences:setReferences,setTimestamp:setTimestamp,setTTL:setTTL,setTTLType:setTTLType,setType:setType,setPermission:setPermission,duplicate:duplicate,hasType:hasType,isExpired:isExpired,toString:toString,hasTypeSystem:hasTypeSystem,listMethods:listMethods,toStringArray:toStringArray};};