blob: c800f7774fca0304959c34aa0979f18ef0729cfc [file] [log] [blame]
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dojox.uuid.generateTimeBasedUuid"]){
dojo._hasResource["dojox.uuid.generateTimeBasedUuid"]=true;
dojo.provide("dojox.uuid.generateTimeBasedUuid");
dojox.uuid.generateTimeBasedUuid=function(_1){
var _2=dojox.uuid.generateTimeBasedUuid._generator.generateUuidString(_1);
return _2;
};
dojox.uuid.generateTimeBasedUuid.isValidNode=function(_3){
var _4=16;
var _5=parseInt(_3,_4);
var _6=dojo.isString(_3)&&_3.length==12&&isFinite(_5);
return _6;
};
dojox.uuid.generateTimeBasedUuid.setNode=function(_7){
dojox.uuid.assert((_7===null)||this.isValidNode(_7));
this._uniformNode=_7;
};
dojox.uuid.generateTimeBasedUuid.getNode=function(){
return this._uniformNode;
};
dojox.uuid.generateTimeBasedUuid._generator=new function(){
this.GREGORIAN_CHANGE_OFFSET_IN_HOURS=3394248;
var _8=null;
var _9=null;
var _a=null;
var _b=0;
var _c=null;
var _d=null;
var _e=16;
function _f(_10){
_10[2]+=_10[3]>>>16;
_10[3]&=65535;
_10[1]+=_10[2]>>>16;
_10[2]&=65535;
_10[0]+=_10[1]>>>16;
_10[1]&=65535;
dojox.uuid.assert((_10[0]>>>16)===0);
};
function _11(x){
var _13=new Array(0,0,0,0);
_13[3]=x%65536;
x-=_13[3];
x/=65536;
_13[2]=x%65536;
x-=_13[2];
x/=65536;
_13[1]=x%65536;
x-=_13[1];
x/=65536;
_13[0]=x;
return _13;
};
function _14(_15,_16){
dojox.uuid.assert(dojo.isArray(_15));
dojox.uuid.assert(dojo.isArray(_16));
dojox.uuid.assert(_15.length==4);
dojox.uuid.assert(_16.length==4);
var _17=new Array(0,0,0,0);
_17[3]=_15[3]+_16[3];
_17[2]=_15[2]+_16[2];
_17[1]=_15[1]+_16[1];
_17[0]=_15[0]+_16[0];
_f(_17);
return _17;
};
function _18(_19,_1a){
dojox.uuid.assert(dojo.isArray(_19));
dojox.uuid.assert(dojo.isArray(_1a));
dojox.uuid.assert(_19.length==4);
dojox.uuid.assert(_1a.length==4);
var _1b=false;
if(_19[0]*_1a[0]!==0){
_1b=true;
}
if(_19[0]*_1a[1]!==0){
_1b=true;
}
if(_19[0]*_1a[2]!==0){
_1b=true;
}
if(_19[1]*_1a[0]!==0){
_1b=true;
}
if(_19[1]*_1a[1]!==0){
_1b=true;
}
if(_19[2]*_1a[0]!==0){
_1b=true;
}
dojox.uuid.assert(!_1b);
var _1c=new Array(0,0,0,0);
_1c[0]+=_19[0]*_1a[3];
_f(_1c);
_1c[0]+=_19[1]*_1a[2];
_f(_1c);
_1c[0]+=_19[2]*_1a[1];
_f(_1c);
_1c[0]+=_19[3]*_1a[0];
_f(_1c);
_1c[1]+=_19[1]*_1a[3];
_f(_1c);
_1c[1]+=_19[2]*_1a[2];
_f(_1c);
_1c[1]+=_19[3]*_1a[1];
_f(_1c);
_1c[2]+=_19[2]*_1a[3];
_f(_1c);
_1c[2]+=_19[3]*_1a[2];
_f(_1c);
_1c[3]+=_19[3]*_1a[3];
_f(_1c);
return _1c;
};
function _1d(_1e,_1f){
while(_1e.length<_1f){
_1e="0"+_1e;
}
return _1e;
};
function _20(){
var _21=Math.floor((Math.random()%1)*Math.pow(2,32));
var _22=_21.toString(_e);
while(_22.length<8){
_22="0"+_22;
}
return _22;
};
this.generateUuidString=function(_23){
if(_23){
dojox.uuid.assert(dojox.uuid.generateTimeBasedUuid.isValidNode(_23));
}else{
if(dojox.uuid.generateTimeBasedUuid._uniformNode){
_23=dojox.uuid.generateTimeBasedUuid._uniformNode;
}else{
if(!_8){
var _24=32768;
var _25=Math.floor((Math.random()%1)*Math.pow(2,15));
var _26=(_24|_25).toString(_e);
_8=_26+_20();
}
_23=_8;
}
}
if(!_9){
var _27=32768;
var _28=Math.floor((Math.random()%1)*Math.pow(2,14));
_9=(_27|_28).toString(_e);
}
var now=new Date();
var _2a=now.valueOf();
var _2b=_11(_2a);
if(!_c){
var _2c=_11(60*60);
var _2d=_11(dojox.uuid.generateTimeBasedUuid._generator.GREGORIAN_CHANGE_OFFSET_IN_HOURS);
var _2e=_18(_2d,_2c);
var _2f=_11(1000);
_c=_18(_2e,_2f);
_d=_11(10000);
}
var _30=_2b;
var _31=_14(_c,_30);
var _32=_18(_31,_d);
if(now.valueOf()==_a){
_32[3]+=_b;
_f(_32);
_b+=1;
if(_b==10000){
while(now.valueOf()==_a){
now=new Date();
}
}
}else{
_a=now.valueOf();
_b=1;
}
var _33=_32[2].toString(_e);
var _34=_32[3].toString(_e);
var _35=_1d(_33,4)+_1d(_34,4);
var _36=_32[1].toString(_e);
_36=_1d(_36,4);
var _37=_32[0].toString(_e);
_37=_1d(_37,3);
var _38="-";
var _39="1";
var _3a=_35+_38+_36+_38+_39+_37+_38+_9+_38+_23;
_3a=_3a.toLowerCase();
return _3a;
};
}();
}