1 line
2.2 KiB
JavaScript
1 line
2.2 KiB
JavaScript
var ObjectId=function(){var increment=0;var pid=Math.floor(Math.random()*32767);var machine=Math.floor(Math.random()*16777216);if(typeof localStorage!="undefined"){var mongoMachineId=parseInt(localStorage["mongoMachineId"]);if(mongoMachineId>=0&&mongoMachineId<=16777215){machine=Math.floor(localStorage["mongoMachineId"])}localStorage["mongoMachineId"]=machine;document.cookie="mongoMachineId="+machine+";expires=Tue, 19 Jan 2038 05:00:00 GMT"}else{var cookieList=document.cookie.split("; ");for(var i in cookieList){var cookie=cookieList[i].split("=");if(cookie[0]=="mongoMachineId"&&cookie[1]>=0&&cookie[1]<=16777215){machine=cookie[1];break}}document.cookie="mongoMachineId="+machine+";expires=Tue, 19 Jan 2038 05:00:00 GMT"}function ObjId(){if(!(this instanceof ObjectId)){return new ObjectId(arguments[0],arguments[1],arguments[2],arguments[3]).toString()}if(typeof arguments[0]=="object"){this.timestamp=arguments[0].timestamp;this.machine=arguments[0].machine;this.pid=arguments[0].pid;this.increment=arguments[0].increment}else if(typeof arguments[0]=="string"&&arguments[0].length==24){this.timestamp=Number("0x"+arguments[0].substr(0,8)),this.machine=Number("0x"+arguments[0].substr(8,6)),this.pid=Number("0x"+arguments[0].substr(14,4)),this.increment=Number("0x"+arguments[0].substr(18,6))}else if(arguments.length==4&&arguments[0]!=null){this.timestamp=arguments[0];this.machine=arguments[1];this.pid=arguments[2];this.increment=arguments[3]}else{this.timestamp=Math.floor((new Date).valueOf()/1e3);this.machine=machine;this.pid=pid;this.increment=increment++;if(increment>16777215){increment=0}}}return ObjId}();ObjectId.prototype.getDate=function(){return new Date(this.timestamp*1e3)};ObjectId.prototype.toArray=function(){var strOid=this.toString();var array=[];var i;for(i=0;i<12;i++){array[i]=parseInt(strOid.slice(i*2,i*2+2),16)}return array};ObjectId.prototype.toString=function(){var timestamp=this.timestamp.toString(16);var machine=this.machine.toString(16);var pid=this.pid.toString(16);var increment=this.increment.toString(16);return"00000000".substr(0,8-timestamp.length)+timestamp+"000000".substr(0,6-machine.length)+machine+"0000".substr(0,4-pid.length)+pid+"000000".substr(0,6-increment.length)+increment}; |