blob: 55c60b45b8bcc1890990d3cd163b9744a3bf36e5 [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 _12=new Array(0,0,0,0);
_12[3]=x%65536;
x-=_12[3];
x/=65536;
_12[2]=x%65536;
x-=_12[2];
x/=65536;
_12[1]=x%65536;
x-=_12[1];
x/=65536;
_12[0]=x;
return _12;
};
function _13(_14,_15){
dojox.uuid.assert(dojo.isArray(_14));
dojox.uuid.assert(dojo.isArray(_15));
dojox.uuid.assert(_14.length==4);
dojox.uuid.assert(_15.length==4);
var _16=new Array(0,0,0,0);
_16[3]=_14[3]+_15[3];
_16[2]=_14[2]+_15[2];
_16[1]=_14[1]+_15[1];
_16[0]=_14[0]+_15[0];
_f(_16);
return _16;
};
function _17(_18,_19){
dojox.uuid.assert(dojo.isArray(_18));
dojox.uuid.assert(dojo.isArray(_19));
dojox.uuid.assert(_18.length==4);
dojox.uuid.assert(_19.length==4);
var _1a=false;
if(_18[0]*_19[0]!==0){
_1a=true;
}
if(_18[0]*_19[1]!==0){
_1a=true;
}
if(_18[0]*_19[2]!==0){
_1a=true;
}
if(_18[1]*_19[0]!==0){
_1a=true;
}
if(_18[1]*_19[1]!==0){
_1a=true;
}
if(_18[2]*_19[0]!==0){
_1a=true;
}
dojox.uuid.assert(!_1a);
var _1b=new Array(0,0,0,0);
_1b[0]+=_18[0]*_19[3];
_f(_1b);
_1b[0]+=_18[1]*_19[2];
_f(_1b);
_1b[0]+=_18[2]*_19[1];
_f(_1b);
_1b[0]+=_18[3]*_19[0];
_f(_1b);
_1b[1]+=_18[1]*_19[3];
_f(_1b);
_1b[1]+=_18[2]*_19[2];
_f(_1b);
_1b[1]+=_18[3]*_19[1];
_f(_1b);
_1b[2]+=_18[2]*_19[3];
_f(_1b);
_1b[2]+=_18[3]*_19[2];
_f(_1b);
_1b[3]+=_18[3]*_19[3];
_f(_1b);
return _1b;
};
function _1c(_1d,_1e){
while(_1d.length<_1e){
_1d="0"+_1d;
}
return _1d;
};
function _1f(){
var _20=Math.floor((Math.random()%1)*Math.pow(2,32));
var _21=_20.toString(_e);
while(_21.length<8){
_21="0"+_21;
}
return _21;
};
this.generateUuidString=function(_22){
if(_22){
dojox.uuid.assert(dojox.uuid.generateTimeBasedUuid.isValidNode(_22));
}else{
if(dojox.uuid.generateTimeBasedUuid._uniformNode){
_22=dojox.uuid.generateTimeBasedUuid._uniformNode;
}else{
if(!_8){
var _23=32768;
var _24=Math.floor((Math.random()%1)*Math.pow(2,15));
var _25=(_23|_24).toString(_e);
_8=_25+_1f();
}
_22=_8;
}
}
if(!_9){
var _26=32768;
var _27=Math.floor((Math.random()%1)*Math.pow(2,14));
_9=(_26|_27).toString(_e);
}
var now=new Date();
var _28=now.valueOf();
var _29=_11(_28);
if(!_c){
var _2a=_11(60*60);
var _2b=_11(dojox.uuid.generateTimeBasedUuid._generator.GREGORIAN_CHANGE_OFFSET_IN_HOURS);
var _2c=_17(_2b,_2a);
var _2d=_11(1000);
_c=_17(_2c,_2d);
_d=_11(10000);
}
var _2e=_29;
var _2f=_13(_c,_2e);
var _30=_17(_2f,_d);
if(now.valueOf()==_a){
_30[3]+=_b;
_f(_30);
_b+=1;
if(_b==10000){
while(now.valueOf()==_a){
now=new Date();
}
}
}else{
_a=now.valueOf();
_b=1;
}
var _31=_30[2].toString(_e);
var _32=_30[3].toString(_e);
var _33=_1c(_31,4)+_1c(_32,4);
var _34=_30[1].toString(_e);
_34=_1c(_34,4);
var _35=_30[0].toString(_e);
_35=_1c(_35,3);
var _36="-";
var _37="1";
var _38=_33+_36+_34+_36+_37+_35+_36+_9+_36+_22;
_38=_38.toLowerCase();
return _38;
};
}();
}