1 /** 2 * Generate a random uuid. 3 * Written by http://www.broofa.com (robert@broofa.com) 4 * 5 * Copyright (c) 2010 Robert Kieffer 6 * Dual licensed under the MIT and GPL licenses. 7 * @returns {String} 8 * @example 9 * var uuid = JXG.Util.genUUID(); 10 * > uuid = '92329D39-6F5C-4520-ABFC-AAB64544E172' 11 */ 12 13 /*global JXG: true, define: true*/ 14 /*jslint nomen: true, plusplus: true, bitwise: true*/ 15 16 /* depends: 17 jxg 18 */ 19 20 define(['jxg'], function (JXG) { 21 22 "use strict"; 23 24 // constants 25 var uuidCharsStr = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', 26 uuidChars = uuidCharsStr.split(''); 27 28 /** 29 * General utility routines 30 * @namespace 31 */ 32 JXG.Util = JXG.Util || {}; 33 34 JXG.Util.genUUID = function () { 35 var r, i, 36 uuid = [], 37 rnd = 0; 38 39 for (i = 0; i < 36; i++) { 40 if (i === 8 || i === 13 || i === 18 || i === 23) { 41 uuid[i] = '-'; 42 } else if (i === 14) { 43 uuid[i] = '4'; 44 } else { 45 if (rnd <= 0x02) { 46 rnd = 0x2000000 + (Math.random() * 0x1000000) | 0; 47 } 48 49 r = rnd & 0xf; 50 rnd = rnd >> 4; 51 uuid[i] = uuidChars[(i === 19) ? (r & 0x3) | 0x8 : r]; 52 } 53 } 54 55 return uuid.join(''); 56 }; 57 58 return JXG.Util; 59 });