(function(a,b,c,d,e){varf=function(b,c){vard=e.storage(b,c,"base"),f={};f.username=b.username||"",f.applicationname=b.applicationname||"untitled";varg="jio/local_user_array",h="jio/local_file_name_array/"+f.username+"/"+f.applicationname,i=d.serialized;returnd.serialized=function(){vara=i();returna.applicationname=f.applicationname,a.username=f.username,a},d.validateState=function(){returnf.username?"":'Need at least one parameter: "username".'},f.getUserArray=function(){returna.getItem(g)||[]},f.addUser=function(b){varc=f.getUserArray();c.push(b),a.setItem(g,c)},f.userExists=function(a){varb=f.getUserArray(),c,d;for(c=0,d=b.length;c<d;c+=1)if(b[c]===a)return!0;return!1},f.getFileNameArray=function(){returna.getItem(h)||[]},f.addFileName=function(b){varc=f.getFileNameArray();c.push(b),a.setItem(h,c)},f.removeFileName=function(b){varc,d,e=f.getFileNameArray(),g=[];for(c=0,d=e.length;c<d;c+=1)e[c]!==b&&g.push(e[c]);a.setItem(h,g)},d.saveDocument=function(b){setTimeout(function(){varc=null,e="jio/local/"+f.username+"/"+f.applicationname+"/"+b.getPath();c=a.getItem(e),c?(c.last_modified=Date.now(),c.content=b.getContent()):(c={name:b.getPath(),content:b.getContent(),creation_date:Date.now(),last_modified:Date.now()},f.userExists(f.username)||f.addUser(f.username),f.addFileName(b.getPath())),a.setItem(e,c),d.done()},100)},d.loadDocument=function(b){setTimeout(function(){varc=null;c=a.getItem("jio/local/"+f.username+"/"+f.applicationname+"/"+b.getPath()),c?(b.getOption("metadata_only")&&deletec.content,d.done(c)):d.fail(b,{status:404,statusText:"Not Found.",message:'Document "'+b.getPath()+'" not found in localStorage.'})},100)},d.getDocumentList=function(b){setTimeout(function(){varc=[],e=[],g,h,i="key",j="jio/local/"+f.username+"/"+f.applicationname,k={};e=f.getFileNameArray();for(g=0,h=e.length;g<h;g+=1)k=a.getItem(j+"/"+e[g]),k&&(b.getOption("metadata_only")?c.push({name:k.name,creation_date:k.creation_date,last_modified:k.last_modified}):c.push({name:k.name,content:k.content,creation_date:k.creation_date,last_modified:k.last_modified}));d.done(c)},100)},d.removeDocument=function(b){setTimeout(function(){varc="jio/local/"+f.username+"/"+f.applicationname+"/"+b.getPath();a.deleteItem(c),f.removeFileName(b.getPath()),d.done()},100)},d};e.addStorageType("local",f);varg=function(a,d){varf=e.storage(a,d,"base"),g={};g.username=a.username||"",g.applicationname=a.applicationname||"untitled",g.url=a.url||"",g.password=a.password||"";varh=f.serialized;returnf.serialized=function(){vara=h();returna.username=g.username,a.applicationname=g.applicationname,a.url=g.url,a.password=g.password,a},f.validateState=function(){returng.username&&g.url?"":'Need at least 2 parameters: "username" and "url".'},f.saveDocument=function(a){b.ajax({url:g.url+"/dav/"+g.username+"/"+g.applicationname+"/"+a.getPath(),type:"PUT",data:a.getContent(),async:!0,dataType:"text",headers:{Authorization:"Basic "+c.encode(g.username+":"+g.password)},success:function(){f.done()},error:function(b){b.message='Cannot save "'+a.getPath()+'" into DAVStorage.',f.fail(b)}})},f.loadDocument=function(a){vard={},e=function(){b.ajax({url:g.url+"/dav/"+g.username+"/"+g.applicationname+"/"+a.getPath(),type:"GET",async:!0,dataType:"text",headers:{Authorization:"Basic "+c.encode(g.username+":"+g.password)},success:function(a){d.content=a,f.done(d)},error:function(b){b.status===404?b.message='Document "'+a.getPath()+'" not found in localStorage.':b.message='Cannot load "'+a.getPath()+'" from DAVStorage.',f.fail(b)}})};d.name=a.getPath(),b.ajax({url:g.url+"/dav/"+g.username+"/"+g.applicationname+"/"+a.getPath(),type:"PROPFIND",async:!0,dataType:"xml",headers:{Authorization:"Basic "+c.encode(g.username+":"+g.password)},success:function(c){b(c).find("lp1\\:getlastmodified, getlastmodified").each(function(){d.last_modified=b(this).text()}),b(c).find("lp1\\:creationdate, creationdate").each(function(){d.creation_date=b(this).text()}),a.getOption("metadata_only")?f.done(d):e()},error:function(b){b.message='Cannot load "'+a.getPath()+'" informations from DAVStorage.',f.fail(b)}})},f.getDocumentList=function(a){vard=[],e={},h=[];b.ajax({url:g.url+"/dav/"+g.username+"/"+g.applicationname+"/",async:!0,type:"PROPFIND",dataType:"xml",headers:{Authorization:"Basic "+c.encode(g.username+":"+g.password),Depth:"1"},success:function(a){b(a).find("D\\:response, response").each(function(a,c){if(a>0){e={},b(c).find("D\\:href, href").each(function(){h=b(this).text().split("/"),e.name=h[h.length-1]?h[h.length-1]:h[h.length-2]+"/"});if(e.name===".htaccess"||e.name===".htpasswd")return;b(c).find("lp1\\:getlastmodified, getlastmodified").each(function(){e.last_modified=b(this).text()}),b(c).find("lp1\\:creationdate, creationdate").each(function(){e.creation_date=b(this).text()}),d.push(e)}}),f.done(d)},error:function(a){a.message="Cannot get a document list from DAVStorage.",f.fail(a)}})},f.removeDocument=function(a){b.ajax({url:g.url+"/dav/"+g.username+"/"+g.applicationname+"/"+a.getPath(),type:"DELETE",async:!0,headers:{Authorization:"Basic "+c.encode(g.username+":"+g.password)},success:function(){f.done()},error:function(a){a.status===404?f.done():(a.message='Cannot remove "'+f.getFileName()+'" from DAVStorage.',f.fail(a))}})},f};e.addStorageType("dav",g);varh=function(a,b){varc=e.storage(a,b,"handler"),d={};d.return_value_array=[],d.storagelist=a.storagelist||[],d.nb_storage=d.storagelist.length;varf=c.serialized;returnc.serialized=function(){vara=f();returna.storagelist=d.storagelist,a},c.validateState=function(){returnd.storagelist.length===0?'Need at least one parameter: "storagelist" containing at least one storage.':""},d.isTheLast=function(){returnd.return_value_array.length===d.nb_storage},d.doJob=function(a,b){vare=!1,f=[],g,h=function(a){d.return_value_array.push(a)},i=function(a){e||(f.push(a),d.isTheLast()&&c.fail({status:207,statusText:"Multi-Status",message:b,array:f}))},j=function(a){e||(e=!0,c.done(a))};for(g=0;g<d.nb_storage;g+=1){vark=a.clone(),l=c.newStorage(d.storagelist[g]);k.onResponseDo(h),k.onFailDo(i),k.onDoneDo(j),c.addJob(l,k)}a.setMaxRetry(1)},c.saveDocument=function(a){d.doJob(a,'All save "'+a.getPath()+'" requests have failed.'),c.end()},c.loadDocument=function(a){d.doJob(a,'All load "'+a.getPath()+'" requests have failed.'),c.end()},c.getDocumentList=function(a){d.doJob(a,"All get document list requests have failed."),c.end()},c.removeDocument=function(a){d.doJob(a,'All remove "'+a.getPath()+'" requests have failed.'),c.end()},c};e.addStorageType("replicate",h);vari=function(b,c){vard=e.storage(b,c,"handler"),f={};f.secondstorage_spec=b.storage||{type:"base"},f.secondstorage_string=JSON.stringify(f.secondstorage_spec);varg="jio/indexed_storage_array",h="jio/indexed_file_array/"+f.secondstorage_string,i=d.serialized;returnd.serialized=function(){vara=i();returna.storage=f.secondstorage_spec,a},d.validateState=function(){returnf.secondstorage_string===JSON.stringify({type:"base"})?'Need at least one parameter: "storage" containing storage specifications.':""},f.isStorageArrayIndexed=function(){returna.getItem(g)?!0:!1},f.getIndexedStorageArray=function(){returna.getItem(g)||[]},f.indexStorage=function(b){varc=f.getIndexedStorageArray();c.push(typeofb=="string"?b:JSON.stringify(b)),a.setItem(g,c)},f.isAnIndexedStorage=function(a){varb=typeofa=="string"?a:JSON.stringify(a),c,d,e=f.getIndexedStorageArray();for(c=0,d=e.length;c<d;c+=1)if(JSON.stringify(e[c])===b)return!0;return!1},f.fileArrayExists=function(){returna.getItem(h)?!0:!1},f.getFileArray=function(){returna.getItem(h)||[]},f.setFileArray=function(b){returna.setItem(h,b)},f.isFileIndexed=function(a){varb,c,d=f.getFileArray();for(b=0,c=d.length;b<c;b+=1)if(d[b].name===a)return!0;return!1},f.addFile=function(b){varc=f.getFileArray();c.push(b),a.setItem(h,c)},f.removeFile=function(b){varc,d,e=f.getFileArray(),g=[];for(c=0,d=e.length;c<d;c+=1)e[c].name!==b&&g.push(e[c]);a.setItem(h,g)},f.update=function(){vara=function(a){f.isAnIndexedStorage(f.secondstorage_string)||f.indexStorage(f.secondstorage_string),f.setFileArray(a)};d.addJob(d.newStorage(f.secondstorage_spec),d.newCommand("getDocumentList",{path:".",option:{onDone:a,max_retry:3}}))},d.saveDocument=function(a){varb=a.clone();b.onResponseDo(function(){}),b.onDoneDo(function(b){f.isFileIndexed(a.getPath())||f.addFile({name:a.getPath(),last_modified:0,creation_date:0}),f.update(),d.done()}),b.onFailDo(function(a){d.fail(a)}),d.addJob(d.newStorage(f.secondstorage_spec),b)},d.loadDocument=function(a){varb,c,e,g,h=function(a){d.done(a)},i=function(a){d.fail(a)},j=function(){varb=a.clone();b.onResponseDo(function(){}),b.onFailDo(i),b.onDoneDo(h),d.addJob(d.newStorage(f.secondstorage_spec),b)};f.update(),a.getOption("metadata_only")?setTimeout(function(){if(f.fileArrayExists()){b=f.getFileArray();for(c=0,e=b.length;c<e;c+=1)if(b[c].name===a.getPath())returnd.done(b[c])}elsej()},100):j()},d.getDocumentList=function(a){varb,c,e=!1;f.update(),a.getOption("metadata_only")?(b=setInterval(function(){e&&(d.fail({status:0,statusText:"Timeout",message:"The request has timed out."}),clearInterval(b)),f.fileArrayExists()&&(d.done(f.getFileArray()),clearInterval(b))},100),setTimeout(function(){e=!0},1e4)):(c=a.clone(),c.onDoneDo(function(a){d.done(a)}),c.onFailDo(function(a){d.fail(a)}),d.addJob(d.newStorage(f.secondstorage_spec),c))},d.removeDocument=function(a){varb=a.clone();b.onResponseDo(function(){}),b.onDoneDo(function(b){f.removeFile(a.getPath()),f.update(),d.done()}),b.onFailDo(function(a){d.fail(a)}),d.addJob(d.newStorage(f.secondstorage_spec),b)},d};e.addStorageType("indexed",i);varj=function(a,c){varf=e.storage(a,c,"handler"),g={};g.username=a.username||"",g.password=a.password||"",g.secondstorage_spec=a.storage||{type:"base"};varh=f.serialized;returnf.serialized=function(){vara=h();returna.username=g.username,a.password=g.password,a},f.validateState=function(){returng.username&&JSON.stringify(g.secondstorage_spec)===JSON.stringify({type:"base"})?"":'Need at least two parameters: "username" and "storage".'},g.encrypt_param_object={iv:"kaprWwY/Ucr7pumXoTHbpA",v:1,iter:1e3,ks:256,ts:128,mode:"ccm",adata:"",cipher:"aes",salt:"K4bmZG9d704"},g.decrypt_param_object={iv:"kaprWwY/Ucr7pumXoTHbpA",ks:256,ts:128,salt:"K4bmZG9d704"},g.encrypt=function(a,b,c){vare=d.encrypt(f.getStorageUserName()+":"+f.getStoragePassword(),a,g.encrypt_param_object);b(JSON.parse(e).ct,c)},g.decrypt=function(a,c,e,h){vari,j=b.extend(!0,{},g.decrypt_param_object);j.ct=a||"",j=JSON.stringify(j);try{i=d.decrypt(f.getStorageUserName()+":"+f.getStoragePassword(),j)}catch(k){c({status:0,statusText:"Decrypt Fail",message:"Unable to decrypt."},e,h);return}c(i,e,h)},f.saveDocument=function(a){varb,c,d=function(){g.encrypt(a.getPath(),function(a){b=a,e()})},e=function(){g.encrypt(a.getContent(),function(a){c=a,h()})},h=function(){vara=f.cloneOption(),d,e;a.onResponse=function(){},a.onDone=function(){f.done()},a.onFail=function(a){f.fail(a)},d=f.newCommand({path:b,content:c,option:a}),e=f.newStorage(g.secondstorage_spec),f.addJob(e,d)};d()},f.loadDocument=function(a){varb,c,d=function(){g.encrypt(a.getPath(),function(a){b=a,e()})},e=function(){varc=a.cloneOption(),d,e;c.onResponse=function(){},c.onFail=i,c.onDone=h,d=f.newCommand({path:b,option:c}),e=f.newStorage(g.secondstorage_spec),f.addJob(e,d)},h=function(b){b.name=a.getPath(),a.getOption("metadata_only")?f.done(b):g.decrypt(b.content,function(a){typeofa=="object"?f.fail({status:0,statusText:"Decrypt Fail",message:"Unable to decrypt"}):(b.content=a,f.done(b))})},i=function(a){f.fail(a)};d()},f.getDocumentList=function(a){varb,c,d,e=0,h,i=!0,j=function(){varc=a.clone(),d=f.newStorage(g.secondstorage_spec);c.onResponseDo(k),c.onDoneDo(function(){}),c.onFailDo(function(){}),f.addJob(b)},k=function(a){if(a.status.isDone()){h=a.return_value;for(c=0,d=h.length;c<d;c+=1)g.decrypt(h[c].name,l,c,"name")}elsef.fail(a.error)},l=function(a,b,c){varg;e++;if(typeofa=="object"){i&&f.fail({status:0,statusText:"Decrypt Fail",message:"Unable to decrypt."}),i=!1;return}h[b][c]=a,e===d&&i&&f.done(h)};j()},f.removeDocument=function(){vara,b,c=function(){g.encrypt(f.getFileName(),function(a){b=a,d()})},d=function(){a=f.cloneJob(),a.name=b,a.storage=f.getSecondStorage(),a.onResponse=e,f.addJob(a)},e=function(a){a.status==="done"?f.done():f.fail(a.error)};c()},f};e.addStorageType("crypt",j)})(LocalOrCookieStorage,jQuery,Base64,sjcl,jio);
\ No newline at end of file
(function(a,b,c,d,e,f){varg=function(b,c){vard=f.storage(b,c,"base"),e={};e.username=b.username||"",e.applicationname=b.applicationname||"untitled";varg="jio/local_user_array",h="jio/local_file_name_array/"+e.username+"/"+e.applicationname,i=d.serialized;returnd.serialized=function(){vara=i();returna.applicationname=e.applicationname,a.username=e.username,a},d.validateState=function(){returne.username?"":'Need at least one parameter: "username".'},e.getUserArray=function(){returna.getItem(g)||[]},e.addUser=function(b){varc=e.getUserArray();c.push(b),a.setItem(g,c)},e.userExists=function(a){varb=e.getUserArray(),c,d;for(c=0,d=b.length;c<d;c+=1)if(b[c]===a)return!0;return!1},e.getFileNameArray=function(){returna.getItem(h)||[]},e.addFileName=function(b){varc=e.getFileNameArray();c.push(b),a.setItem(h,c)},e.removeFileName=function(b){varc,d,f=e.getFileNameArray(),g=[];for(c=0,d=f.length;c<d;c+=1)f[c]!==b&&g.push(f[c]);a.setItem(h,g)},d.saveDocument=function(b){setTimeout(function(){varc=null,f="jio/local/"+e.username+"/"+e.applicationname+"/"+b.getPath();c=a.getItem(f),c?(c.last_modified=Date.now(),c.content=b.getContent()):(c={name:b.getPath(),content:b.getContent(),creation_date:Date.now(),last_modified:Date.now()},e.userExists(e.username)||e.addUser(e.username),e.addFileName(b.getPath())),a.setItem(f,c),d.done()},100)},d.loadDocument=function(b){setTimeout(function(){varc=null;c=a.getItem("jio/local/"+e.username+"/"+e.applicationname+"/"+b.getPath()),c?(b.getOption("metadata_only")&&deletec.content,d.done(c)):d.fail(b,{status:404,statusText:"Not Found.",message:'Document "'+b.getPath()+'" not found in localStorage.'})},100)},d.getDocumentList=function(b){setTimeout(function(){varc=[],f=[],g,h,i="key",j="jio/local/"+e.username+"/"+e.applicationname,k={};f=e.getFileNameArray();for(g=0,h=f.length;g<h;g+=1)k=a.getItem(j+"/"+f[g]),k&&(b.getOption("metadata_only")?c.push({name:k.name,creation_date:k.creation_date,last_modified:k.last_modified}):c.push({name:k.name,content:k.content,creation_date:k.creation_date,last_modified:k.last_modified}));d.done(c)},100)},d.removeDocument=function(b){setTimeout(function(){varc="jio/local/"+e.username+"/"+e.applicationname+"/"+b.getPath();a.deleteItem(c),e.removeFileName(b.getPath()),d.done()},100)},d};f.addStorageType("local",g);varh=function(a,d){vare=f.storage(a,d,"base"),g={};g.username=a.username||"",g.applicationname=a.applicationname||"untitled",g.url=a.url||"",g.password=a.password||"";varh=e.serialized;returne.serialized=function(){vara=h();returna.username=g.username,a.applicationname=g.applicationname,a.url=g.url,a.password=g.password,a},e.validateState=function(){returng.username&&g.url?"":'Need at least 2 parameters: "username" and "url".'},e.saveDocument=function(a){b.ajax({url:g.url+"/dav/"+g.username+"/"+g.applicationname+"/"+a.getPath(),type:"PUT",data:a.getContent(),async:!0,dataType:"text",headers:{Authorization:"Basic "+c.encode(g.username+":"+g.password)},success:function(){e.done()},error:function(b){b.message='Cannot save "'+a.getPath()+'" into DAVStorage.',e.fail(b)}})},e.loadDocument=function(a){vard={},f=function(){b.ajax({url:g.url+"/dav/"+g.username+"/"+g.applicationname+"/"+a.getPath(),type:"GET",async:!0,dataType:"text",headers:{Authorization:"Basic "+c.encode(g.username+":"+g.password)},success:function(a){d.content=a,e.done(d)},error:function(b){b.status===404?b.message='Document "'+a.getPath()+'" not found in localStorage.':b.message='Cannot load "'+a.getPath()+'" from DAVStorage.',e.fail(b)}})};d.name=a.getPath(),b.ajax({url:g.url+"/dav/"+g.username+"/"+g.applicationname+"/"+a.getPath(),type:"PROPFIND",async:!0,dataType:"xml",headers:{Authorization:"Basic "+c.encode(g.username+":"+g.password)},success:function(c){b(c).find("lp1\\:getlastmodified, getlastmodified").each(function(){d.last_modified=b(this).text()}),b(c).find("lp1\\:creationdate, creationdate").each(function(){d.creation_date=b(this).text()}),a.getOption("metadata_only")?e.done(d):f()},error:function(b){b.message='Cannot load "'+a.getPath()+'" informations from DAVStorage.',e.fail(b)}})},e.getDocumentList=function(a){vard=[],f={},h=[];b.ajax({url:g.url+"/dav/"+g.username+"/"+g.applicationname+"/",async:!0,type:"PROPFIND",dataType:"xml",headers:{Authorization:"Basic "+c.encode(g.username+":"+g.password),Depth:"1"},success:function(a){b(a).find("D\\:response, response").each(function(a,c){if(a>0){f={},b(c).find("D\\:href, href").each(function(){h=b(this).text().split("/"),f.name=h[h.length-1]?h[h.length-1]:h[h.length-2]+"/"});if(f.name===".htaccess"||f.name===".htpasswd")return;b(c).find("lp1\\:getlastmodified, getlastmodified").each(function(){f.last_modified=b(this).text()}),b(c).find("lp1\\:creationdate, creationdate").each(function(){f.creation_date=b(this).text()}),d.push(f)}}),e.done(d)},error:function(a){a.message="Cannot get a document list from DAVStorage.",e.fail(a)}})},e.removeDocument=function(a){b.ajax({url:g.url+"/dav/"+g.username+"/"+g.applicationname+"/"+a.getPath(),type:"DELETE",async:!0,headers:{Authorization:"Basic "+c.encode(g.username+":"+g.password)},success:function(){e.done()},error:function(a){a.status===404?e.done():(a.message='Cannot remove "'+e.getFileName()+'" from DAVStorage.',e.fail(a))}})},e};f.addStorageType("dav",h);vari=function(a,b){varc=f.storage(a,b,"handler"),d={};d.return_value_array=[],d.storagelist=a.storagelist||[],d.nb_storage=d.storagelist.length;vare=c.serialized;returnc.serialized=function(){vara=e();returna.storagelist=d.storagelist,a},c.validateState=function(){returnd.storagelist.length===0?'Need at least one parameter: "storagelist" containing at least one storage.':""},d.isTheLast=function(){returnd.return_value_array.length===d.nb_storage},d.doJob=function(a,b){vare=!1,f=[],g,h=function(a){d.return_value_array.push(a)},i=function(a){e||(f.push(a),d.isTheLast()&&c.fail({status:207,statusText:"Multi-Status",message:b,array:f}))},j=function(a){e||(e=!0,c.done(a))};for(g=0;g<d.nb_storage;g+=1){vark=a.clone(),l=c.newStorage(d.storagelist[g]);k.onResponseDo(h),k.onFailDo(i),k.onDoneDo(j),c.addJob(l,k)}a.setMaxRetry(1)},c.saveDocument=function(a){d.doJob(a,'All save "'+a.getPath()+'" requests have failed.'),c.end()},c.loadDocument=function(a){d.doJob(a,'All load "'+a.getPath()+'" requests have failed.'),c.end()},c.getDocumentList=function(a){d.doJob(a,"All get document list requests have failed."),c.end()},c.removeDocument=function(a){d.doJob(a,'All remove "'+a.getPath()+'" requests have failed.'),c.end()},c};f.addStorageType("replicate",i);varj=function(b,c){vard=f.storage(b,c,"handler"),e={},g=b.storage||!1;e.secondstorage_spec=b.storage||{type:"base"},e.secondstorage_string=JSON.stringify(e.secondstorage_spec);varh="jio/indexed_storage_array",i="jio/indexed_file_array/"+e.secondstorage_string,j=d.serialized;returnd.serialized=function(){vara=j();returna.storage=e.secondstorage_spec,a},d.validateState=function(){returng?"":'Need at least one parameter: "storage" containing storage specifications.'},e.isStorageArrayIndexed=function(){returna.getItem(h)?!0:!1},e.getIndexedStorageArray=function(){returna.getItem(h)||[]},e.indexStorage=function(b){varc=e.getIndexedStorageArray();c.push(typeofb=="string"?b:JSON.stringify(b)),a.setItem(h,c)},e.isAnIndexedStorage=function(a){varb=typeofa=="string"?a:JSON.stringify(a),c,d,f=e.getIndexedStorageArray();for(c=0,d=f.length;c<d;c+=1)if(JSON.stringify(f[c])===b)return!0;return!1},e.fileArrayExists=function(){returna.getItem(i)?!0:!1},e.getFileArray=function(){returna.getItem(i)||[]},e.setFileArray=function(b){returna.setItem(i,b)},e.isFileIndexed=function(a){varb,c,d=e.getFileArray();for(b=0,c=d.length;b<c;b+=1)if(d[b].name===a)return!0;return!1},e.addFile=function(b){varc=e.getFileArray();c.push(b),a.setItem(i,c)},e.removeFile=function(b){varc,d,f=e.getFileArray(),g=[];for(c=0,d=f.length;c<d;c+=1)f[c].name!==b&&g.push(f[c]);a.setItem(i,g)},e.update=function(){vara=function(a){e.isAnIndexedStorage(e.secondstorage_string)||e.indexStorage(e.secondstorage_string),e.setFileArray(a)};d.addJob(d.newStorage(e.secondstorage_spec),d.newCommand("getDocumentList",{path:".",option:{onDone:a,max_retry:3}}))},d.saveDocument=function(a){varb=a.clone();b.onResponseDo(function(){}),b.onDoneDo(function(b){e.isFileIndexed(a.getPath())||e.addFile({name:a.getPath(),last_modified:0,creation_date:0}),e.update(),d.done()}),b.onFailDo(function(a){d.fail(a)}),d.addJob(d.newStorage(e.secondstorage_spec),b)},d.loadDocument=function(a){varb,c,f,g,h=function(a){d.done(a)},i=function(a){d.fail(a)},j=function(){varb=a.clone();b.onResponseDo(function(){}),b.onFailDo(i),b.onDoneDo(h),d.addJob(d.newStorage(e.secondstorage_spec),b)};e.update(),a.getOption("metadata_only")?setTimeout(function(){if(e.fileArrayExists()){b=e.getFileArray();for(c=0,f=b.length;c<f;c+=1)if(b[c].name===a.getPath())returnd.done(b[c])}elsej()},100):j()},d.getDocumentList=function(a){varb,c,f=!1;e.update(),a.getOption("metadata_only")?(b=setInterval(function(){f&&(d.fail({status:0,statusText:"Timeout",message:"The request has timed out."}),clearInterval(b)),e.fileArrayExists()&&(d.done(e.getFileArray()),clearInterval(b))},100),setTimeout(function(){f=!0},1e4)):(c=a.clone(),c.onDoneDo(function(a){d.done(a)}),c.onFailDo(function(a){d.fail(a)}),d.addJob(d.newStorage(e.secondstorage_spec),c))},d.removeDocument=function(a){varb=a.clone();b.onResponseDo(function(){}),b.onDoneDo(function(b){e.removeFile(a.getPath()),e.update(),d.done()}),b.onFailDo(function(a){d.fail(a)}),d.addJob(d.newStorage(e.secondstorage_spec),b)},d};f.addStorageType("indexed",j);vark=function(a,c){vare=f.storage(a,c,"handler"),g={};g.username=a.username||"",g.password=a.password||"",g.secondstorage_spec=a.storage||{type:"base"};varh=e.serialized;returne.serialized=function(){vara=h();returna.username=g.username,a.password=g.password,a},e.validateState=function(){returng.username&&JSON.stringify(g.secondstorage_spec)===JSON.stringify({type:"base"})?"":'Need at least two parameters: "username" and "storage".'},g.encrypt_param_object={iv:"kaprWwY/Ucr7pumXoTHbpA",v:1,iter:1e3,ks:256,ts:128,mode:"ccm",adata:"",cipher:"aes",salt:"K4bmZG9d704"},g.decrypt_param_object={iv:"kaprWwY/Ucr7pumXoTHbpA",ks:256,ts:128,salt:"K4bmZG9d704"},g.encrypt=function(a,b,c){varf=d.encrypt(e.getStorageUserName()+":"+e.getStoragePassword(),a,g.encrypt_param_object);b(JSON.parse(f).ct,c)},g.decrypt=function(a,c,f,h){vari,j=b.extend(!0,{},g.decrypt_param_object);j.ct=a||"",j=JSON.stringify(j);try{i=d.decrypt(e.getStorageUserName()+":"+e.getStoragePassword(),j)}catch(k){c({status:0,statusText:"Decrypt Fail",message:"Unable to decrypt."},f,h);return}c(i,f,h)},e.saveDocument=function(a){varb,c,d=function(){g.encrypt(a.getPath(),function(a){b=a,f()})},f=function(){g.encrypt(a.getContent(),function(a){c=a,h()})},h=function(){vara=e.cloneOption(),d,f;a.onResponse=function(){},a.onDone=function(){e.done()},a.onFail=function(a){e.fail(a)},d=e.newCommand({path:b,content:c,option:a}),f=e.newStorage(g.secondstorage_spec),e.addJob(f,d)};d()},e.loadDocument=function(a){varb,c,d=function(){g.encrypt(a.getPath(),function(a){b=a,f()})},f=function(){varc=a.cloneOption(),d,f;c.onResponse=function(){},c.onFail=i,c.onDone=h,d=e.newCommand({path:b,option:c}),f=e.newStorage(g.secondstorage_spec),e.addJob(f,d)},h=function(b){b.name=a.getPath(),a.getOption("metadata_only")?e.done(b):g.decrypt(b.content,function(a){typeofa=="object"?e.fail({status:0,statusText:"Decrypt Fail",message:"Unable to decrypt"}):(b.content=a,e.done(b))})},i=function(a){e.fail(a)};d()},e.getDocumentList=function(a){varb,c,d,f=0,h,i=!0,j=function(){varc=a.clone(),d=e.newStorage(g.secondstorage_spec);c.onResponseDo(k),c.onDoneDo(function(){}),c.onFailDo(function(){}),e.addJob(b)},k=function(a){if(a.status.isDone()){h=a.return_value;for(c=0,d=h.length;c<d;c+=1)g.decrypt(h[c].name,l,c,"name")}elsee.fail(a.error)},l=function(a,b,c){varg;f++;if(typeofa=="object"){i&&e.fail({status:0,statusText:"Decrypt Fail",message:"Unable to decrypt."}),i=!1;return}h[b][c]=a,f===d&&i&&e.done(h)};j()},e.removeDocument=function(){vara,b,c=function(){g.encrypt(e.getFileName(),function(a){b=a,d()})},d=function(){a=e.cloneJob(),a.name=b,a.storage=e.getSecondStorage(),a.onResponse=f,e.addJob(a)},f=function(a){a.status==="done"?e.done():e.fail(a.error)};c()},e};f.addStorageType("crypt",k);varl=function(b,c){vard=f.storage(b,c,"handler"),g={},h="jio/conflictmanager/";g.username=b.username||"";vari=b.storage?!0:!1;g.secondstorage_spec=b.storage||{type:"base"};varj=d.serialized;returnd.serialized=function(){vara=j();returna.storage=g.secondstorage_spec,a},d.validateState=function(){return!g.username||i?'Need at least two parameter: "owner" and "storage" .':""},g.isTheLatestVersion=function(a,b){varc;if(!b.owner)return!0;for(cinb.owner)if(c!==g.username&&a.winner.version<=b.owner[c].last_version)return!1;return!0},g.conflictResearch=function(){},d.saveDocument=function(b){varc=b.getPath()+".metadata",f=newDate,i=h+c,j={},k={},l=0,m=!1,n=!1,o=0,p=e(b.getContent()),q=function(e){switch(e){case0:l=3,q(2),q(1);break;case1:varh={revision:0,hash:"",last_modified:0,creation_date:f.getTime()};j=a.getItem(i),j?j.owner[g.username]||(j.owner[g.username]=h):(j={winner:{},owner:{},conflict_list:[]},j.winner={revision:0,owner:g.username,hash:""},j.owner[g.username]=h),l++,q(l);break;case2:varr=b.cloneOption();r.onResponse=function(){},r.onFail=function(a){a.status===404?(k=j,l++,q(l)):(l=-10,d.fail(a),m=!0)},r.onDone=function(a){k=JSON.parse(a.content),l++,q(l)};vars=d.newCommand("loadDocument",{path:c,option:r});d.addJob(d.newStorage(g.secondstorage_spec),s);break;case5:vart=function(){vara;a=k.owner[k.winner.owner].creation_date||f.getTime(),k.owner[g.username]?o=k.owner[g.username].revision:k.owner[g.username]={},k.winner.owner=g.username,k.winner.revision++,k.winner.hash=p,k.owner[g.username].revision=k.winner.revision,k.owner[g.username].last_modified=f.getTime(),k.owner[g.username].creation_date=a,k.owner[g.username].hash=p};if(n){t(),a.setItem(i,k),l=98,q(6),q(7);break}j.winner.revision===k.winner.revision&&j.winner.hash===k.winner.hash?(t(),a.setItem(i,k),l=98,q(6),q(7)):(b.getOption("onConflict")(),l=-10,m=!0,d.fail());break;case6:console.log("save metadata");break;case7:console.log("save document revision");break;case100:if(!m){m=!0,d.done();return}break;default:}};q(0),b.setMaxRetry(1)},d.loadDocument=function(a){d.fail({message:"NIY"})},d.getDocumentList=function(a){d.fail({message:"NIY"})},d.removeDocument=function(a){d.fail({message:"NIY"})},d};f.addStorageType("replicate",i)})(LocalOrCookieStorage,jQuery,Base64,sjcl,MD5,jio);