home *** CD-ROM | disk | FTP | other *** search
/ Computer Active 2010 August / CA08.iso / Multimedija / shufflr.air / ShufflrClient.swf / scripts / mx / utils / RPCUIDUtil.as < prev    next >
Encoding:
Text File  |  2010-06-23  |  5.1 KB  |  178 lines

  1. package mx.utils
  2. {
  3.    import flash.utils.ByteArray;
  4.    import mx.core.mx_internal;
  5.    
  6.    use namespace mx_internal;
  7.    
  8.    public class RPCUIDUtil
  9.    {
  10.       mx_internal static const VERSION:String = "3.5.0.12683";
  11.       
  12.       private static const ALPHA_CHAR_CODES:Array = [48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70];
  13.       
  14.       public function RPCUIDUtil()
  15.       {
  16.          super();
  17.       }
  18.       
  19.       public static function createUID() : String
  20.       {
  21.          var _loc3_:int = 0;
  22.          var _loc4_:int = 0;
  23.          var _loc1_:Array = new Array(36);
  24.          var _loc2_:int = 0;
  25.          _loc3_ = 0;
  26.          while(_loc3_ < 8)
  27.          {
  28.             var _loc7_:*;
  29.             _loc1_[_loc7_ = _loc2_++] = ALPHA_CHAR_CODES[Math.floor(Math.random() * 16)];
  30.             _loc3_++;
  31.          }
  32.          _loc3_ = 0;
  33.          while(_loc3_ < 3)
  34.          {
  35.             _loc1_[_loc7_ = _loc2_++] = 45;
  36.             _loc4_ = 0;
  37.             while(_loc4_ < 4)
  38.             {
  39.                var _loc8_:*;
  40.                _loc1_[_loc8_ = _loc2_++] = ALPHA_CHAR_CODES[Math.floor(Math.random() * 16)];
  41.                _loc4_++;
  42.             }
  43.             _loc3_++;
  44.          }
  45.          _loc1_[_loc7_ = _loc2_++] = 45;
  46.          var _loc5_:Number = Number(new Date().getTime());
  47.          var _loc6_:String = ("0000000" + _loc5_.toString(16).toUpperCase()).substr(-8);
  48.          _loc3_ = 0;
  49.          while(_loc3_ < 8)
  50.          {
  51.             _loc1_[_loc8_ = _loc2_++] = _loc6_.charCodeAt(_loc3_);
  52.             _loc3_++;
  53.          }
  54.          _loc3_ = 0;
  55.          while(_loc3_ < 4)
  56.          {
  57.             _loc1_[_loc8_ = _loc2_++] = ALPHA_CHAR_CODES[Math.floor(Math.random() * 16)];
  58.             _loc3_++;
  59.          }
  60.          return String.fromCharCode.apply(null,_loc1_);
  61.       }
  62.       
  63.       public static function isUID(param1:String) : Boolean
  64.       {
  65.          var _loc2_:uint = 0;
  66.          var _loc3_:Number = NaN;
  67.          if(param1 != null && param1.length == 36)
  68.          {
  69.             _loc2_ = 0;
  70.             while(_loc2_ < 36)
  71.             {
  72.                _loc3_ = Number(param1.charCodeAt(_loc2_));
  73.                if(_loc2_ == 8 || _loc2_ == 13 || _loc2_ == 18 || _loc2_ == 23)
  74.                {
  75.                   if(_loc3_ != 45)
  76.                   {
  77.                      return false;
  78.                   }
  79.                }
  80.                else if(_loc3_ < 48 || _loc3_ > 70 || _loc3_ > 57 && _loc3_ < 65)
  81.                {
  82.                   return false;
  83.                }
  84.                _loc2_++;
  85.             }
  86.             return true;
  87.          }
  88.          return false;
  89.       }
  90.       
  91.       public static function fromByteArray(param1:ByteArray) : String
  92.       {
  93.          var _loc2_:Array = null;
  94.          var _loc3_:uint = 0;
  95.          var _loc4_:uint = 0;
  96.          var _loc5_:int = 0;
  97.          if(param1 != null && param1.length >= 16 && param1.bytesAvailable >= 16)
  98.          {
  99.             _loc2_ = new Array(36);
  100.             _loc3_ = 0;
  101.             _loc4_ = 0;
  102.             while(_loc4_ < 16)
  103.             {
  104.                if(_loc4_ == 4 || _loc4_ == 6 || _loc4_ == 8 || _loc4_ == 10)
  105.                {
  106.                   var _loc6_:*;
  107.                   _loc2_[_loc6_ = _loc3_++] = 45;
  108.                }
  109.                _loc5_ = param1.readByte();
  110.                _loc2_[_loc6_ = _loc3_++] = ALPHA_CHAR_CODES[(_loc5_ & 0xF0) >>> 4];
  111.                var _loc7_:*;
  112.                _loc2_[_loc7_ = _loc3_++] = ALPHA_CHAR_CODES[_loc5_ & 0x0F];
  113.                _loc4_++;
  114.             }
  115.             return String.fromCharCode.apply(null,_loc2_);
  116.          }
  117.          return null;
  118.       }
  119.       
  120.       public static function toByteArray(param1:String) : ByteArray
  121.       {
  122.          var _loc2_:ByteArray = null;
  123.          var _loc3_:uint = 0;
  124.          var _loc4_:String = null;
  125.          var _loc5_:uint = 0;
  126.          var _loc6_:uint = 0;
  127.          if(isUID(param1))
  128.          {
  129.             _loc2_ = new ByteArray();
  130.             _loc3_ = 0;
  131.             while(_loc3_ < param1.length)
  132.             {
  133.                _loc4_ = param1.charAt(_loc3_);
  134.                if(_loc4_ != "-")
  135.                {
  136.                   _loc5_ = getDigit(_loc4_);
  137.                   _loc3_++;
  138.                   _loc6_ = getDigit(param1.charAt(_loc3_));
  139.                   _loc2_.writeByte((_loc5_ << 4 | _loc6_) & 0xFF);
  140.                }
  141.                _loc3_++;
  142.             }
  143.             _loc2_.position = 0;
  144.             return _loc2_;
  145.          }
  146.          return null;
  147.       }
  148.       
  149.       private static function getDigit(param1:String) : uint
  150.       {
  151.          switch(param1)
  152.          {
  153.             case "A":
  154.             case "a":
  155.                return 10;
  156.             case "B":
  157.             case "b":
  158.                return 11;
  159.             case "C":
  160.             case "c":
  161.                return 12;
  162.             case "D":
  163.             case "d":
  164.                return 13;
  165.             case "E":
  166.             case "e":
  167.                return 14;
  168.             case "F":
  169.             case "f":
  170.                return 15;
  171.             default:
  172.                return new uint(param1);
  173.          }
  174.       }
  175.    }
  176. }
  177.  
  178.