multihexa.js
上传用户:zghglow
上传日期:2022-08-09
资源大小:27227k
文件大小:12k
源码类别:

WEB源码(ASP,PHP,...)

开发平台:

JavaScript

  1. /*
  2.  * FCKeditor - The text editor for internet
  3.  * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  4.  * 
  5.  * Licensed under the terms of the GNU Lesser General Public License:
  6.  *  http://www.opensource.org/licenses/lgpl-license.php
  7.  * 
  8.  * For further information visit:
  9.  *  http://www.fckeditor.net/
  10.  * 
  11.  * "Support Open Source software. What about a donation today?"
  12.  * 
  13.  * File Name: multihexa.js
  14.  *  Scripts for the fck_universalkey.html page.
  15.  *  Definition des 104 caracteres en hexa unicode.
  16.  * 
  17.  * File Authors:
  18.  *  Michel Staelens (michel.staelens@wanadoo.fr)
  19.  *  Bernadette Cierzniak
  20.  *  Abdul-Aziz Al-Oraij (top7up@hotmail.com)
  21.  */
  22. var caps=0, lock=0, hexchars="0123456789ABCDEF", accent="0000", keydeb=0
  23. var key=new Array();j=0;for (i in Maj){key[j]=i;j++}
  24. var ns6=((!document.all)&&(document.getElementById))
  25. var ie=document.all
  26. var langue=getCk();
  27. if (langue==""){
  28. langue=key[keydeb]
  29. }
  30. CarMaj=Maj[langue].split("|");CarMin=Min[langue].split("|")
  31. /*unikey*/
  32. var posUniKeyLeft=0, posUniKeyTop=0
  33. if (ns6){posUniKeyLeft=0;posUniKeyTop=60}
  34. else if (ie){posUniKeyLeft=0;posUniKeyTop=60}
  35. tracer("fond",posUniKeyLeft,posUniKeyTop,'<img src="fck_universalkey/keyboard_layout.gif" width=404 height=152 border="0"><br />',"sign")
  36. /*touches*/
  37. var posX=new Array(0,28,56,84,112,140,168,196,224,252,280,308,336,42,70,98,126,154,182,210,238,266,294,322,350,50,78,106,134,162,190,218,246,274,302,330,64,92,120,148,176,204,232,260,288,316,28,56,84,294,322,350)
  38. var posY=new Array(14,14,14,14,14,14,14,14,14,14,14,14,14,42,42,42,42,42,42,42,42,42,42,42,42,70,70,70,70,70,70,70,70,70,70,70,98,98,98,98,98,98,98,98,98,98,126,126,126,126,126,126)
  39. var nbTouches=52
  40. for (i=0;i<nbTouches;i++){
  41. CarMaj[i]=((CarMaj[i]!="0000")?(fromhexby4tocar(CarMaj[i])):"")
  42. CarMin[i]=((CarMin[i]!="0000")?(fromhexby4tocar(CarMin[i])):"")
  43. if (CarMaj[i]==CarMin[i].toUpperCase()){
  44. cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
  45. tracer("car"+i,posUniKeyLeft+6+posX[i],posUniKeyTop+3+posY[i],cecar,((dia[hexa(cecar)]!=null)?"simpledia":"simple"))
  46. tracer("majus"+i,posUniKeyLeft+15+posX[i],posUniKeyTop+1+posY[i],"&nbsp;","double")
  47. tracer("minus"+i,posUniKeyLeft+3+posX[i],posUniKeyTop+9+posY[i],"&nbsp;","double")
  48. }
  49. else{
  50. tracer("car"+i,posUniKeyLeft+6+posX[i],posUniKeyTop+3+posY[i],"&nbsp;","simple")
  51. cecar=CarMin[i]
  52. tracer("minus"+i,posUniKeyLeft+3+posX[i],posUniKeyTop+9+posY[i],cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
  53. cecar=CarMaj[i]
  54. tracer("majus"+i,posUniKeyLeft+15+posX[i],posUniKeyTop+1+posY[i],cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
  55. }
  56. }
  57. /*touches de fonctions*/
  58. var actC1=new Array(0,371,364,0,378,0,358,0,344,0,112,378)
  59. var actC2=new Array(0,0,14,42,42,70,70,98,98,126,126,126)
  60. var actC3=new Array(32,403,403,39,403,47,403,61,403,25,291,403)
  61. var actC4=new Array(11,11,39,67,67,95,95,123,123,151,151,151)
  62. var act  =new Array(" « KB"," KB » ","Delete","Clear","Back","Caps<br> Lock","Enter","Shift","Shift","<|<","Space",">|>")
  63. var effet=new Array("keyscroll(-3)","keyscroll(3)","faire("del")","RAZ()","faire("bck")","bloq()","faire("\n")","haut()","haut()","faire("ar")","faire(" ")","faire("av")")
  64. var nbActions=12
  65. for (i=0;i<nbActions;i++){
  66. tracer("act"+i,posUniKeyLeft+1+actC1[i],posUniKeyTop-1+actC2[i],act[i],"action")
  67. }
  68. /*navigation*/
  69. var keyC1=new Array(35,119,203,287)
  70. var keyC2=new Array(0,0,0,0)
  71. var keyC3=new Array(116,200,284,368)
  72. var keyC4=new Array(11,11,11,11)
  73. for (i=0;i<4;i++){
  74. tracer("key"+i,posUniKeyLeft+5+keyC1[i],posUniKeyTop-1+keyC2[i],key[i],"unikey")
  75. }
  76. /*zones reactives*/
  77. tracer("masque",posUniKeyLeft,posUniKeyTop,'<img src="fck_universalkey/00.gif" width=404 height=152 border="0" usemap="#unikey">')
  78. document.write('<map name="unikey">')
  79. for (i=0;i<nbTouches;i++){
  80. document.write('<area coords="'+posX[i]+','+posY[i]+','+(posX[i]+25)+','+(posY[i]+25)+'" href=# onClick='javascript:ecrire('+i+')'>')
  81. }
  82. for (i=0;i<nbActions;i++){
  83. document.write('<area coords="'+actC1[i]+','+actC2[i]+','+actC3[i]+','+actC4[i]+'" href=# onClick='javascript:'+effet[i]+''>')
  84. }
  85. for (i=0;i<4;i++){
  86. document.write('<area coords="'+keyC1[i]+','+keyC2[i]+','+keyC3[i]+','+keyC4[i]+'" onclick='javascript:charger('+i+')'>')
  87. }
  88. document.write('</map>')
  89. /*fonctions*/
  90. function ecrire(i){
  91. txt=rechercher()+"|";subtxt=txt.split("|")
  92. ceci=(lock==1)?CarMaj[i]:((caps==1)?CarMaj[i]:CarMin[i])
  93. if (test(ceci)){subtxt[0]+=cardia(ceci);distinguer(false)}
  94. else if(dia[accent]!=null&&dia[hexa(ceci)]!=null){distinguer(false);accent=hexa(ceci);distinguer(true)}
  95. else if(dia[accent]!=null){subtxt[0]+=fromhexby4tocar(accent)+ceci;distinguer(false)}
  96. else if(dia[hexa(ceci)]!=null){accent=hexa(ceci);distinguer(true)}
  97. else {subtxt[0]+=ceci}
  98. txt=subtxt[0]+"|"+subtxt[1]
  99. afficher(txt)
  100. if (caps==1){caps=0;MinusMajus()}
  101. }
  102. function faire(ceci){
  103. txt=rechercher()+"|";subtxt=txt.split("|")
  104. l0=subtxt[0].length
  105. l1=subtxt[1].length
  106. c1=subtxt[0].substring(0,(l0-2))
  107. c2=subtxt[0].substring(0,(l0-1))
  108. c3=subtxt[1].substring(0,1)
  109. c4=subtxt[1].substring(0,2)
  110. c5=subtxt[0].substring((l0-2),l0)
  111. c6=subtxt[0].substring((l0-1),l0)
  112. c7=subtxt[1].substring(1,l1)
  113. c8=subtxt[1].substring(2,l1)
  114. if(dia[accent]!=null){if(ceci==" "){ceci=fromhexby4tocar(accent)}distinguer(false)}
  115. switch (ceci){
  116. case("av") :if(escape(c4)!="%0D%0A"){txt=subtxt[0]+c3+"|"+c7}else{txt=subtxt[0]+c4+"|"+c8}break
  117. case("ar") :if(escape(c5)!="%0D%0A"){txt=c2+"|"+c6+subtxt[1]}else{txt=c1+"|"+c5+subtxt[1]}break
  118. case("bck"):if(escape(c5)!="%0D%0A"){txt=c2+"|"+subtxt[1]}else{txt=c1+"|"+subtxt[1]}break
  119. case("del"):if(escape(c4)!="%0D%0A"){txt=subtxt[0]+"|"+c7}else{txt=subtxt[0]+"|"+c8}break
  120. default:txt=subtxt[0]+ceci+"|"+subtxt[1];break
  121. }
  122. afficher(txt)
  123. }
  124. function RAZ(){txt="";if(dia[accent]!=null){distinguer(false)}afficher(txt)}
  125. function haut(){caps=1;MinusMajus()}
  126. function bloq(){lock=(lock==1)?0:1;MinusMajus()}
  127. /*fonctions de traitement du unikey*/
  128. function tracer(nom,gauche,haut,ceci,classe){ceci="<span class="+classe+">"+ceci+"</span>";document.write('<div id="'+nom+'" >'+ceci+'</div>');if (ns6){document.getElementById(nom).style.left=gauche+"px";document.getElementById(nom).style.top=haut+"px";}else if (ie){document.all(nom).style.left=gauche;document.all(nom).style.top=haut}}
  129. function retracer(nom,ceci,classe){ceci="<span class="+classe+">"+ceci+"</span>";if (ns6){document.getElementById(nom).innerHTML=ceci}else if (ie){doc=document.all(nom);doc.innerHTML=ceci}}
  130. function keyscroll(n){
  131. keydeb+=n
  132. if (keydeb<0){
  133. keydeb=0
  134. }
  135. if (keydeb>key.length-4){
  136. keydeb=key.length-4
  137. }
  138. for (i=keydeb;i<keydeb+4;i++){
  139. retracer("key"+(i-keydeb),key[i],"unikey")
  140. }
  141. if (keydeb==0){
  142. retracer("act0","&nbsp;","action")
  143. }else {
  144. retracer("act0",act[0],"action")
  145. }
  146. if (keydeb==key.length-4){
  147. retracer("act1","&nbsp;","action")
  148. }else {
  149. retracer("act1",act[1],"action")
  150. }
  151. }
  152. function charger(i){
  153. langue=key[i+keydeb];setCk(langue);accent="0000"
  154. CarMaj=Maj[langue].split("|");CarMin=Min[langue].split("|")
  155. for (i=0;i<nbTouches;i++){
  156. CarMaj[i]=((CarMaj[i]!="0000")?(fromhexby4tocar(CarMaj[i])):"")
  157. CarMin[i]=((CarMin[i]!="0000")?(fromhexby4tocar(CarMin[i])):"")
  158. if (CarMaj[i]==CarMin[i].toUpperCase()){
  159. cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
  160. retracer("car"+i,cecar,((dia[hexa(cecar)]!=null)?"simpledia":"simple"))
  161. retracer("minus"+i,"&nbsp;")
  162. retracer("majus"+i,"&nbsp;")
  163. }
  164. else{
  165. retracer("car"+i,"&nbsp;")
  166. cecar=CarMin[i]
  167. retracer("minus"+i,cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
  168. cecar=CarMaj[i]
  169. retracer("majus"+i,cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
  170. }
  171. }
  172. }
  173. function distinguer(oui){
  174. for (i=0;i<nbTouches;i++){
  175. if (CarMaj[i]==CarMin[i].toUpperCase()){
  176. cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
  177. if(test(cecar)){retracer("car"+i,oui?(cardia(cecar)):cecar,oui?"simpledia":"simple")}
  178. }
  179. else{
  180. cecar=CarMin[i]
  181. if(test(cecar)){retracer("minus"+i,oui?(cardia(cecar)):cecar,oui?"doubledia":"double")}
  182. cecar=CarMaj[i]
  183. if(test(cecar)){retracer("majus"+i,oui?(cardia(cecar)):cecar,oui?"doubledia":"double")}
  184. }
  185. }
  186. if (!oui){accent="0000"}
  187. }
  188. function MinusMajus(){
  189. for (i=0;i<nbTouches;i++){
  190. if (CarMaj[i]==CarMin[i].toUpperCase()){
  191. cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
  192. retracer("car"+i,(test(cecar)?cardia(cecar):cecar),((dia[hexa(cecar)]!=null||test(cecar))?"simpledia":"simple"))
  193. }
  194. }
  195. }
  196. function test(cecar){return(dia[accent]!=null&&dia[accent][hexa(cecar)]!=null)}
  197. function cardia(cecar){return(fromhexby4tocar(dia[accent][hexa(cecar)]))}
  198. function fromhex(inval){out=0;for (a=inval.length-1;a>=0;a--){out+=Math.pow(16,inval.length-a-1)*hexchars.indexOf(inval.charAt(a))}return out}
  199. function fromhexby4tocar(ceci){out4=new String();for (l=0;l<ceci.length;l+=4){out4+=String.fromCharCode(fromhex(ceci.substring(l,l+4)))}return out4}
  200. function tohex(inval){return hexchars.charAt(inval/16)+hexchars.charAt(inval%16)}
  201. function tohex2(inval){return tohex(inval/256)+tohex(inval%256)}
  202. function hexa(ceci){out="";for (k=0;k<ceci.length;k++){out+=(tohex2(ceci.charCodeAt(k)))}return out}
  203. function getCk(){
  204. fromN=document.cookie.indexOf("langue=")+0;
  205. if((fromN)!=-1){
  206. fromN+=7;
  207. toN=document.cookie.indexOf(";",fromN)+0;
  208. if(toN==-1){
  209. toN=document.cookie.length
  210. }
  211. return unescape(document.cookie.substring(fromN,toN))
  212. }
  213. return ""
  214. }
  215. function setCk(inval){
  216. if(inval!=null){
  217. exp=new Date();
  218. time=365*60*60*24*1000;
  219. exp.setTime(exp.getTime()+time);
  220. document.cookie=escape("langue")+"="+escape(inval)+"; "+"expires="+exp.toGMTString()
  221. }
  222. }
  223. // Arabic Keystroke Translator
  224. function arkey(e) {
  225. if ((document.layers)|(navigator.userAgent.indexOf("MSIE 4")>-1)|(langue!="Arabic")) return true;
  226. if (!e) var e = window.event;
  227. if (e.keyCode) keyCode = e.keyCode;
  228. else if (e.which) keyCode = e.which;
  229. var character = String.fromCharCode(keyCode);
  230. entry = true;
  231. cont=e.srcElement || e.currentTarget || e.target;
  232. if (keyCode>64 && keyCode<91) {
  233. entry=false;
  234. source='ش لاؤ ي ث ب ل ا ه ت ن م ة ى خ ح ض ق س ف ع ر ص ء غ ئ ';
  235. shsource='ِ لآ} ] ُ [ لأأ ÷ ـ ، /   آ × ؛ َ ٌ ٍ لإ  { ً ْ إ ~'; 
  236. if (e.shiftKey) cont.value += shsource.substr((keyCode-64)*2-2,2);
  237. else
  238. cont.value += source.substr((keyCode-64)*2-2,2);
  239. if (cont.value.substr(cont.value.length-1,1)==' ') cont.value=cont.value.substr(0,cont.value.length-1);
  240. }
  241. if (e.shiftKey) {
  242. if (keyCode==186) {cont.value += ':';entry=false;}
  243. if (keyCode==188) {cont.value += ',';entry=false;}
  244. if (keyCode==190) {cont.value += '.';entry=false;}
  245. if (keyCode==191) {cont.value += '؟';entry=false;}
  246. if (keyCode==192) {cont.value += 'ّ';entry=false;}
  247. if (keyCode==219) {cont.value += '<';entry=false;}
  248. if (keyCode==221) {cont.value += '>';entry=false;}
  249. } else {
  250. if (keyCode==186||keyCode==59) {cont.value += 'ك';entry=false;}
  251. if (keyCode==188) {cont.value += 'و';entry=false;}
  252. if (keyCode==190) {cont.value += 'ز';entry=false;}
  253. if (keyCode==191) {cont.value += 'ظ';entry=false;}
  254. if (keyCode==192) {cont.value += 'ذ';entry=false;}
  255. if (keyCode==219) {cont.value += 'ج';entry=false;}
  256. if (keyCode==221) {cont.value += 'د';entry=false;}
  257. if (keyCode==222) {cont.value += 'ط';entry=false;}
  258. }
  259. return entry;
  260. }
  261. function hold_it(e){
  262. if ((document.layers)|(navigator.userAgent.indexOf("MSIE 4")>-1)|(langue!="Arabic")) return true;
  263. var keyCode;
  264. if (!e) var e = window.event;
  265. if (e.keyCode) keyCode = e.keyCode;
  266. else if (e.which) keyCode = e.which;
  267. var character = String.fromCharCode(keyCode);
  268. switch(keyCode){
  269. case 186:
  270. case 188:
  271. case 190:
  272. case 191:
  273. case 192:
  274. case 219:
  275. case 221:
  276. case 222:
  277. case 116:
  278. case 59:
  279. case 47:
  280. case 46:
  281. case 44:
  282. case 39:
  283. return false;
  284. case 92:
  285. return true;
  286. }
  287. if (keyCode<63) return true;
  288. return false;
  289. }
  290. var obj = document.getElementById( 'uni_area' );
  291. if ( obj && langue=="Arabic"){
  292. with (navigator) {
  293. if (appName=="Netscape")
  294. obj.onkeypress = hold_it;
  295. }
  296. obj.onkeydown = arkey;
  297. }
  298. // Arabic Keystroke Translator End