function Guid(a){this.options=a||{};this.chars=this.options.chars||Guid.constants.alphanumerics;this.epoch=this.options.epoch||Guid.constants.epoch1970;this.counterSequenceLength=this.options.counterSequenceLength||1;this.randomSequenceLength=this.options.randomSequenceLength||2}Guid.prototype.generate=function(){var b=(new Date()).getTime()-this.epoch;var a=this.baseN(b);this.counterSeq=(b==this.lastTimestampUsed?this.counterSeq+1:1);a+=this.counterSeq;for(var c=0;c<this.randomSequenceLength;c++){a+=this.chars[Math.floor(Math.random()*this.chars.length)]}this.lastTimestampUsed=b;return a};Guid.prototype.baseN=function(d){if(d==0){return""}var c=d%this.chars.length;var b=this.chars[c];var a=Math.floor(d/this.chars.length);return this.baseN(a)+b};Guid.constants={};Guid.constants.numbers="0123456789";Guid.constants.alphas="abcdefghijklmnopqrstuvwxyz";Guid.constants.lowerAlphanumerics="0123456789abcdefghijklmnopqrstuvwxyz";Guid.constants.alphanumerics="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";Guid.constants.base85="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$%&()*+-;<=>?@^_`{|}~";Guid.constants.epoch1970=(new Date(0));Guid.constants.epoch=function(a){return(new Date("Jan 1 "+a)).getTime()};
