PageRenderTime 26ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/gb2big/chrome/content/overlay.js

http://dictcn.googlecode.com/
JavaScript | 159 lines | 140 code | 18 blank | 1 comment | 19 complexity | 78ab5905a2a7b997742297678e660508 MD5 | raw file
  1. var ChineseTransformLen = ChineseTransformSS.length;
  2. var ChineseTransformLen2 = ChineseTransformSS2.length;
  3. var ChineseTransformG2B = new Object();
  4. var ChineseTransformB2G = new Object();
  5. var ChineseTransformStep = 2000;
  6. var ChineseTransformDelay = 10;
  7. for(var i = 0; i < ChineseTransformLen; i++)
  8. {
  9. var ctf_s = ChineseTransformSS[i];
  10. var ctf_t = ChineseTransformTT[i];
  11. ChineseTransformB2G[ctf_t] = ctf_s;
  12. }
  13. for(var j = 0; j < ChineseTransformLen2; j ++)
  14. {
  15. var ctf_s2 = ChineseTransformSS2[j];
  16. var ctf_t2 = ChineseTransformTT2[j];
  17. ChineseTransformG2B[ctf_s2] = ctf_t2;
  18. }
  19. function ChineseTransform()
  20. {
  21. var doc0 = null;
  22. var des0 = null;
  23. var src0 = null;
  24. var index0 = 0;
  25. var state0 = 0;
  26. var matrix = 0;
  27. }
  28. ChineseTransform.prototype.Init = function(doc, mat)
  29. {
  30. this.doc0 = doc;
  31. this.matrix = mat;
  32. this.src0 = this.doc0.body.innerHTML;
  33. this.des0 = '';
  34. this.index0 = 0;
  35. this.state0 = 0;
  36. };
  37. ChineseTransform.prototype.Run = function()
  38. {
  39. for(var i = this.index0; this.index0 < i + ChineseTransformStep && this.index0 < this.src0.length; this.index0++)
  40. {
  41. var ch = this.src0.charAt(this.index0);
  42. if(ch >= '\u4e00')
  43. {
  44. var se = this.matrix[ch];
  45. if(se != undefined)
  46. {
  47. if(this.state0 == 0)
  48. {
  49. this.des0 += this.src0.substring(this.des0.length, this.index0);
  50. this.state0 = 1;
  51. }
  52. this.des0 += se;
  53. }
  54. else
  55. {
  56. this.state0 = 0;
  57. }
  58. }
  59. else
  60. {
  61. this.state0 = 0;
  62. }
  63. }
  64. var temp = this;
  65. if(this.index0 < this.src0.length)
  66. {
  67. setTimeout(function(){temp.Run();}, ChineseTransformDelay);
  68. }
  69. else
  70. {
  71. this.des0 += this.src0.substring(this.des0.length, this.index0);
  72. this.doc0.body.innerHTML = this.des0;
  73. }
  74. };
  75. function ChineseG2B()
  76. {
  77. var doc = content.document;
  78. var trans = new ChineseTransform();
  79. trans.Init(doc, ChineseTransformG2B);
  80. trans.Run();
  81. }
  82. function ChineseB2G()
  83. {
  84. var doc = content.document;
  85. var trans = new ChineseTransform();
  86. trans.Init(doc, ChineseTransformB2G);
  87. trans.Run();
  88. }
  89. function OnlineProxyBreak()
  90. {
  91. var alpha1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  92. var alpha2 = 'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM';
  93. var alnum = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._';
  94. function base64_encode(str)
  95. {
  96. var out = '';
  97. var t, x, y ,z;
  98. for (var i = 0; i < str.length; i += 3)
  99. {
  100. t = Math.min(3, str.length - i);
  101. if (t == 1)
  102. {
  103. x = str.charCodeAt(i);
  104. out += alnum.charAt((x >> 2));
  105. out += alnum.charAt(((x & 0X00000003) << 4));
  106. out += '--';
  107. }
  108. else if (t == 2)
  109. {
  110. x = str.charCodeAt(i);
  111. y = str.charCodeAt(i+1);
  112. out += alnum.charAt((x >> 2));
  113. out += alnum.charAt((((x & 0X00000003) << 4) | (y >> 4)));
  114. out += alnum.charAt(((y & 0X0000000f) << 2));
  115. out += '-';
  116. }
  117. else
  118. {
  119. x = str.charCodeAt(i);
  120. y = str.charCodeAt(i+1);
  121. z = str.charCodeAt(i+2);
  122. out += alnum.charAt((x >> 2));
  123. out += alnum.charAt((((x & 0x00000003) << 4) | (y >> 4)));
  124. out += alnum.charAt((((y & 0X0000000f) << 2) | (z >> 6)));
  125. out += alnum.charAt((z & 0X0000003f));
  126. }
  127. }
  128. return out;
  129. }
  130. var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  131. prefs = prefs.getBranch("extensions.gb2big.");
  132. var proxy_server = prefs.getCharPref('proxy-server');
  133. var proxy_option = prefs.getCharPref('proxy-option');
  134. var url1 = content.document.location.href;
  135. var url2 = document.getElementById('urlbar').value;
  136. if(url2 != '')var newurl = base64_encode(url2);
  137. else var newurl = base64_encode(url1);
  138. //var resulturl = 'http://proxylord.com/proxy.php?q='+newurl+'&hl=6a';
  139. var resulturl = proxy_server + newurl + '&' + proxy_option;
  140. content.document.location.href = resulturl;
  141. }