]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojox/uuid/generateRandomUuid.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / uuid / generateRandomUuid.js
diff --git a/static/dojo-release-1.1.1/dojox/uuid/generateRandomUuid.js b/static/dojo-release-1.1.1/dojox/uuid/generateRandomUuid.js
new file mode 100644 (file)
index 0000000..ec590e9
--- /dev/null
@@ -0,0 +1,56 @@
+if(!dojo._hasResource["dojox.uuid.generateRandomUuid"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.uuid.generateRandomUuid"] = true;
+dojo.provide("dojox.uuid.generateRandomUuid");
+
+dojox.uuid.generateRandomUuid = function(){
+       // summary:
+       //              This function generates random UUIDs, meaning "version 4" UUIDs.
+       // description:
+       //              A typical generated value would be something like this:
+       //              "3b12f1df-5232-4804-897e-917bf397618a"
+       //              
+       //              For more information about random UUIDs, see sections 4.4 and 
+       //              4.5 of RFC 4122: http://tools.ietf.org/html/rfc4122#section-4.4
+       //              
+       //              This generator function is designed to be small and fast,
+       //              but not necessarily good.
+       //              
+       //              Small: This generator has a small footprint. Once comments are
+       //              stripped, it's only about 25 lines of code, and it doesn't 
+       //              dojo.require() any other modules.
+       //              
+       //              Fast: This generator can generate lots of new UUIDs fairly quickly 
+       //              (at least, more quickly than the other dojo UUID generators).
+       //              
+       //              Not necessarily good: We use Math.random() as our source
+       //              of randomness, which may or may not provide much randomness. 
+       // examples: 
+       //              var string = dojox.uuid.generateRandomUuid();
+       var HEX_RADIX = 16;
+
+       function _generateRandomEightCharacterHexString(){
+               // Make random32bitNumber be a randomly generated floating point number
+               // between 0 and (4,294,967,296 - 1), inclusive.
+               var random32bitNumber = Math.floor( (Math.random() % 1) * Math.pow(2, 32) );
+               var eightCharacterHexString = random32bitNumber.toString(HEX_RADIX);
+               while(eightCharacterHexString.length < 8){
+                       eightCharacterHexString = "0" + eightCharacterHexString;
+               }
+               return eightCharacterHexString; // for example: "3B12F1DF"
+       }
+
+       var hyphen = "-";
+       var versionCodeForRandomlyGeneratedUuids = "4"; // 8 == binary2hex("0100")
+       var variantCodeForDCEUuids = "8"; // 8 == binary2hex("1000")
+       var a = _generateRandomEightCharacterHexString();
+       var b = _generateRandomEightCharacterHexString();
+       b = b.substring(0, 4) + hyphen + versionCodeForRandomlyGeneratedUuids + b.substring(5, 8);
+       var c = _generateRandomEightCharacterHexString();
+       c = variantCodeForDCEUuids + c.substring(1, 4) + hyphen + c.substring(4, 8);
+       var d = _generateRandomEightCharacterHexString();
+       var returnValue = a + hyphen + b + hyphen + c + d;
+       returnValue = returnValue.toLowerCase();
+       return returnValue; // String
+};
+
+}