editor_base.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760
  1. var gSetColorType = "";
  2. var gIsIE = document.all;
  3. var gIEVer = fGetIEVer();
  4. var gLoaded = false;
  5. var ev = null;
  6. var gIsHtml = true;
  7. var pos = 0;
  8. var sLength = 0;
  9. function fGetEv(e){
  10. ev = e;
  11. }
  12. function fGetIEVer(){
  13. var iVerNo = 0;
  14. var sVer = navigator.userAgent;
  15. if(sVer.indexOf("MSIE")>-1){
  16. var sVerNo = sVer.split(";")[1];
  17. sVerNo = sVerNo.replace("MSIE","");
  18. iVerNo = parseFloat(sVerNo);
  19. }
  20. return iVerNo;
  21. }
  22. function fSetEditable(){
  23. var f = window.frames["HtmlEditor"];
  24. f.document.designMode="on";
  25. if(!gIsIE)
  26. f.document.execCommand("useCSS",false, true);
  27. }
  28. function renewContent() {
  29. var evalevent = function (obj) {
  30. var script = obj.parentNode.innerHTML;
  31. var re = /onclick="(.+?)["|>]/ig;
  32. var matches = re.exec(script);
  33. if(matches != null) {
  34. matches[1] = matches[1].replace(/this\./ig, 'obj.');
  35. eval(matches[1]);
  36. }
  37. };
  38. if(window.confirm('您确定要恢复上次保存?')) {
  39. var data = loadUserdata('home');
  40. if(in_array((data = trim(data)), ['', 'null', 'false', null, false])) {
  41. parent.showDialog('没有可以恢复的数据!');
  42. return;
  43. }
  44. var data = data.split(/\x09\x09/);
  45. if(parent.$('subject')) {
  46. var formObj = parent.$('subject').form;
  47. } else if(parent.$('title')) {
  48. var formObj = parent.$('title').form;
  49. } else {
  50. return;
  51. }
  52. for(var i = 0; i < formObj.elements.length; i++) {
  53. var el = formObj.elements[i];
  54. if(el.name != '' && (el.tagName == 'TEXTAREA' || el.tagName == 'INPUT' && (el.type == 'text' || el.type == 'checkbox' || el.type == 'radio'))) {
  55. for(var j = 0; j < data.length; j++) {
  56. var ele = data[j].split(/\x09/);
  57. if(ele[0] == el.name) {
  58. elvalue = !isUndefined(ele[3]) ? ele[3] : '';
  59. if(ele[1] == 'INPUT') {
  60. if(ele[2] == 'text') {
  61. el.value = elvalue;
  62. } else if((ele[2] == 'checkbox' || ele[2] == 'radio') && ele[3] == el.value) {
  63. el.checked = true;
  64. evalevent(el);
  65. }
  66. } else if(ele[1] == 'TEXTAREA') {
  67. if(ele[0] == 'message' || ele[0] == 'content') {
  68. var f = window.frames["HtmlEditor"];
  69. f.document.body.innerHTML = elvalue;
  70. } else {
  71. el.value = elvalue;
  72. }
  73. }
  74. break
  75. }
  76. }
  77. }
  78. }
  79. }
  80. }
  81. function fSetFrmClick(){
  82. var f = window.frames["HtmlEditor"];
  83. f.document.onclick = function(){
  84. fHideMenu();
  85. }
  86. if(gIsIE) {
  87. f.document.attachEvent("onkeydown", listenKeyDown);
  88. } else {
  89. f.addEventListener('keydown', function(e) {listenKeyDown(e);}, true);
  90. }
  91. }
  92. function listenKeyDown(event) {
  93. parent.gIsEdited = true;
  94. parent.ctrlEnter(event, 'issuance');
  95. }
  96. window.onload = function(){
  97. try{
  98. gLoaded = true;
  99. fSetEditable();
  100. fSetFrmClick();
  101. }catch(e){
  102. }
  103. }
  104. window.onbeforeunload = parent.edit_save;
  105. function fSetColor(){
  106. var dvForeColor =$("dvForeColor");
  107. if(dvForeColor.getElementsByTagName("TABLE").length == 1){
  108. dvForeColor.innerHTML = drawCube() + dvForeColor.innerHTML;
  109. }
  110. }
  111. document.onmousemove = function(e){
  112. if(gIsIE) var el = event.srcElement;
  113. else var el = e.target;
  114. var tdView = $("tdView");
  115. var tdColorCode = $("tdColorCode");
  116. if(el.tagName == "IMG"){
  117. try{
  118. if(fInObj(el, "dvForeColor")){
  119. tdView.bgColor = el.parentNode.bgColor;
  120. tdColorCode.innerHTML = el.parentNode.bgColor
  121. }
  122. }catch(e){}
  123. }
  124. }
  125. function fInObj(el, id){
  126. if(el){
  127. if(el.id == id){
  128. return true;
  129. }else{
  130. if(el.parentNode){
  131. return fInObj(el.parentNode, id);
  132. }else{
  133. return false;
  134. }
  135. }
  136. }
  137. }
  138. function fDisplayObj(id){
  139. var o = $(id);
  140. if(o) o.style.display = "";
  141. }
  142. document.onclick = function(e){
  143. if(gIsIE) var el = event.srcElement;
  144. else var el = e.target;
  145. var dvForeColor =$("dvForeColor");
  146. var dvPortrait =$("dvPortrait");
  147. if(el.tagName == "IMG"){
  148. try{
  149. if(fInObj(el, "dvForeColor")){
  150. format(gSetColorType, el.parentNode.bgColor);
  151. dvForeColor.style.display = "none";
  152. return;
  153. }
  154. }catch(e){}
  155. try{
  156. if(fInObj(el, "dvPortrait")){
  157. format("InsertImage", el.src);
  158. dvPortrait.style.display = "none";
  159. return;
  160. }
  161. }catch(e){}
  162. }
  163. try{
  164. if(fInObj(el, "createUrl") || fInObj(el, "createImg") || fInObj(el, "createSwf") || fInObj(el, "createPage")){
  165. return;
  166. }
  167. }catch(e){}
  168. fHideMenu();
  169. var hideId = "";
  170. if(arrMatch[el.id]){
  171. hideId = arrMatch[el.id];
  172. fDisplayObj(hideId);
  173. }
  174. }
  175. var arrMatch = {
  176. imgFontface:"fontface",
  177. imgFontsize:"fontsize",
  178. imgFontColor:"dvForeColor",
  179. imgBackColor:"dvForeColor",
  180. imgFace:"dvPortrait",
  181. imgAlign:"divAlign",
  182. imgList:"divList",
  183. imgInOut:"divInOut",
  184. faceBox:"editFaceBox",
  185. icoUrl:"createUrl",
  186. icoSwf:"createSwf",
  187. icoPage:"createPage"
  188. }
  189. function format(type, para){
  190. var f = window.frames["HtmlEditor"];
  191. var sAlert = "";
  192. if(!gIsIE){
  193. switch(type){
  194. case "Cut":
  195. sAlert = "您的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl+X)来完成";
  196. break;
  197. case "Copy":
  198. sAlert = "您的浏览器安全设置不允许编辑器自动执行拷贝操作,请使用键盘快捷键(Ctrl+C)来完成";
  199. break;
  200. case "Paste":
  201. sAlert = "您的浏览器安全设置不允许编辑器自动执行粘贴操作,请使用键盘快捷键(Ctrl+V)来完成";
  202. break;
  203. }
  204. }
  205. if(sAlert != ""){
  206. alert(sAlert);
  207. return;
  208. }
  209. f.focus();
  210. if(!para){
  211. if(gIsIE){
  212. f.document.execCommand(type);
  213. }else{
  214. f.document.execCommand(type,false,false);
  215. }
  216. }else{
  217. if(type == 'insertHTML') {
  218. try{
  219. f.document.execCommand('insertHTML', false, para);
  220. }catch(exp){
  221. var obj = f.document.selection.createRange();
  222. obj.pasteHTML(para);
  223. obj.collapse(false);
  224. obj.select();
  225. }
  226. } else {
  227. try{
  228. f.document.execCommand(type,false,para);
  229. }catch(exp){}
  230. }
  231. }
  232. f.focus();
  233. }
  234. function setMode(bStatus){
  235. var sourceEditor = $("sourceEditor");
  236. var HtmlEditor = $("HtmlEditor");
  237. var divEditor = $("divEditor");
  238. var f = window.frames["HtmlEditor"];
  239. var body = f.document.getElementsByTagName("BODY")[0];
  240. if(bStatus){
  241. sourceEditor.style.display = "block";
  242. divEditor.style.display = "none";
  243. sourceEditor.value = body.innerHTML;
  244. $('uchome-editstatus').value = 'code';
  245. }else{
  246. sourceEditor.style.display = "none";
  247. divEditor.style.display = "";
  248. body.innerHTML = sourceEditor.value;
  249. $('uchome-editstatus').value = 'html';
  250. }
  251. }
  252. function foreColor(e) {
  253. fDisplayColorBoard(e);
  254. gSetColorType = "foreColor";
  255. }
  256. function faceBox(e) {
  257. if(gIsIE){
  258. var e = window.event;
  259. }
  260. var dvFaceBox = $("editFaceBox");
  261. var iX = e.clientX;
  262. var iY = e.clientY;
  263. dvFaceBox.style.display = "";
  264. dvFaceBox.style.left = (iX-140) + "px";
  265. dvFaceBox.style.top = 33 + "px";
  266. dvFaceBox.innerHTML = "";
  267. var faceul = document.createElement("ul");
  268. for(i=1; i<31; i++) {
  269. var faceli = document.createElement("li");
  270. faceli.innerHTML = '<img src="' + parent.STATICURL + 'image/smiley/comcom/'+i+'.gif" onclick="insertImg(this.src);" class="cur1" />';
  271. faceul.appendChild(faceli);
  272. }
  273. dvFaceBox.appendChild(faceul);
  274. return true;
  275. }
  276. function insertImg(src) {
  277. format("insertHTML", '<img src="' + src + '"/>');
  278. }
  279. function doodleBox(event, id) {
  280. if(parent.$('uchome-ttHtmlEditor') != null) {
  281. parent.showWindow(id, 'home.php?mod=magic&mid=doodle&showid=blog_doodle&target=uchome-ttHtmlEditor&from=editor');
  282. } else {
  283. alert("找不到涂鸦板初始化数据");
  284. }
  285. }
  286. function backColor(e){
  287. var sColor = fDisplayColorBoard(e);
  288. if(gIsIE)
  289. gSetColorType = "backcolor";
  290. else
  291. gSetColorType = "backcolor";
  292. }
  293. function fDisplayColorBoard(e){
  294. if(gIsIE){
  295. var e = window.event;
  296. }
  297. if(gIEVer<=5.01 && gIsIE){
  298. var arr = showModalDialog("ColorSelect.htm", "", "font-family:Verdana; font-size:12; status:no; dialogWidth:21em; dialogHeight:21em");
  299. if (arr != null) return arr;
  300. return;
  301. }
  302. var dvForeColor =$("dvForeColor");
  303. var iX = e.clientX;
  304. var iY = e.clientY;
  305. dvForeColor.style.display = "";
  306. dvForeColor.style.left = (iX-30) + "px";
  307. dvForeColor.style.top = 33 + "px";
  308. return true;
  309. }
  310. function createLink(e, show) {
  311. if(typeof show == 'undefined') {
  312. var urlObj = $('insertUrl');
  313. var sURL = urlObj.value;
  314. if ((sURL!=null) && (sURL!="http://")){
  315. setCaret();
  316. format("CreateLink", sURL);
  317. }
  318. fHide($('createUrl'));
  319. urlObj.value = 'http://';
  320. } else {
  321. if(gIsIE){
  322. var e = window.event;
  323. }
  324. getCaret();
  325. var dvUrlBox = $("createUrl");
  326. var iX = e.clientX;
  327. var iY = e.clientY;
  328. dvUrlBox.style.display = "";
  329. dvUrlBox.style.left = (iX-300) + "px";
  330. dvUrlBox.style.top = 33 + "px";
  331. }
  332. }
  333. function getCaret() {
  334. if(gIsIE){
  335. window.frames["HtmlEditor"].focus();
  336. var ran = window.frames["HtmlEditor"].document.selection.createRange();
  337. pos = ran.getBookmark();
  338. }
  339. }
  340. function setCaret() {
  341. if(gIsIE){
  342. window.frames["HtmlEditor"].focus();
  343. var range = window.frames["HtmlEditor"].document.body.createTextRange();
  344. range.moveToBookmark(pos);
  345. range.select();
  346. pos = null;
  347. }
  348. }
  349. function clearLink() {
  350. format("Unlink", false);
  351. }
  352. function createImg(e, show) {
  353. if(typeof show == 'undefined') {
  354. var imgObj = $('imgUrl');
  355. var sPhoto = imgObj.value;
  356. if ((sPhoto!=null) && (sPhoto!="http://")){
  357. setCaret();
  358. format("InsertImage", sPhoto);
  359. }
  360. fHide($('createImg'));
  361. imgObj.value = 'http://';
  362. } else {
  363. if(gIsIE){
  364. var e = window.event;
  365. }
  366. getCaret();
  367. var dvImgBox = $("createImg");
  368. var iX = e.clientX;
  369. var iY = e.clientY;
  370. dvImgBox.style.display = "";
  371. dvImgBox.style.left = (iX-300) + "px";
  372. dvImgBox.style.top = 33 + "px";
  373. }
  374. }
  375. function createFlash(e, show) {
  376. if(typeof show == 'undefined') {
  377. var flashtag = '';
  378. var vObj = $('videoUrl');
  379. var sFlash = vObj.value;
  380. if ((sFlash!=null) && (sFlash!="http://")){
  381. setCaret();
  382. var sFlashType = $('vtype').value;
  383. if(sFlashType==1) {
  384. flashtag = '[flash=media]';
  385. } else if(sFlashType==2) {
  386. flashtag = '[flash=real]';
  387. } else if(sFlashType==3) {
  388. flashtag = '[flash=mp3]';
  389. } else {
  390. flashtag = '[flash]';
  391. }
  392. format("insertHTML", flashtag + sFlash + '[/flash]');
  393. }
  394. fHide($('createSwf'));
  395. vObj.value = 'http://';
  396. } else {
  397. if(gIsIE){
  398. var e = window.event;
  399. }
  400. getCaret();
  401. var dvSwfBox = $("createSwf");
  402. var iX = e.clientX;
  403. var iY = e.clientY;
  404. dvSwfBox.style.display = "";
  405. dvSwfBox.style.left = (iX-350) + "px";
  406. dvSwfBox.style.top = 33 + "px";
  407. }
  408. }
  409. String.prototype.trim = function(){
  410. return this.replace(/(^\s*)|(\s*$)/g, "");
  411. }
  412. function fSetBorderMouseOver(obj) {
  413. obj.style.borderRight="1px solid #aaa";
  414. obj.style.borderBottom="1px solid #aaa";
  415. obj.style.borderTop="1px solid #fff";
  416. obj.style.borderLeft="1px solid #fff";
  417. }
  418. function fSetBorderMouseOut(obj) {
  419. obj.style.border="none";
  420. }
  421. function fSetBorderMouseDown(obj) {
  422. obj.style.borderRight="1px #F3F8FC solid";
  423. obj.style.borderBottom="1px #F3F8FC solid";
  424. obj.style.borderTop="1px #cccccc solid";
  425. obj.style.borderLeft="1px #cccccc solid";
  426. }
  427. function fDisplayElement(element,displayValue) {
  428. if(gIEVer<=5.01 && gIsIE){
  429. alert('只支持IE 5.01以上版本');
  430. return;
  431. }
  432. fHideMenu();
  433. if ( typeof element == "string" )
  434. element = $(element);
  435. if (element == null) return;
  436. element.style.display = displayValue;
  437. if(gIsIE){
  438. var e = event;
  439. var target = e.srcElement;
  440. }else{
  441. var e = ev;
  442. var target = e.target;
  443. }
  444. var iX = f_GetX(target);
  445. element.style.display = "";
  446. element.style.left = (iX) + "px";
  447. element.style.top = 33 + "px";
  448. return true;
  449. }
  450. function fSetModeTip(obj){
  451. var x = f_GetX(obj);
  452. var y = f_GetY(obj);
  453. var dvModeTip = $("dvModeTip");
  454. if(!dvModeTip){
  455. var dv = document.createElement("DIV");
  456. dv.style.position = "absolute";
  457. dv.style.top = 33 + "px";
  458. dv.style.left = (x-40) + "px";
  459. dv.style.zIndex = "999";
  460. dv.style.fontSize = "12px";
  461. dv.id = "dvModeTip";
  462. dv.style.padding = "2px";
  463. dv.style.border = "1px #000000 solid";
  464. dv.style.backgroundColor = "#FFFFCC";
  465. dv.innerHTML = "编辑源码";
  466. document.body.appendChild(dv);
  467. }else{
  468. dvModeTip.style.display = "";
  469. }
  470. }
  471. function fHideTip(){
  472. $("dvModeTip").style.display = "none";
  473. }
  474. function f_GetX(e)
  475. {
  476. var l=e.offsetLeft;
  477. while(e=e.offsetParent){
  478. l+=e.offsetLeft;
  479. }
  480. return l;
  481. }
  482. function f_GetY(e)
  483. {
  484. var t=e.offsetTop;
  485. while(e=e.offsetParent){
  486. t+=e.offsetTop;
  487. }
  488. return t;
  489. }
  490. function fHideMenu(){
  491. try{
  492. var arr = ["fontface", "fontsize", "dvForeColor", "dvPortrait", "divAlign", "divList" ,"divInOut", "editFaceBox", "createUrl", "createImg", "createSwf", "createPage"];
  493. for(var i=0;i<arr.length;i++){
  494. var obj = $(arr[i]);
  495. if(obj){
  496. obj.style.display = "none";
  497. }
  498. }
  499. try{
  500. parent.LetterPaper.control(window, "hide");
  501. }catch(exp){}
  502. }catch(exp){}
  503. }
  504. function $(id){
  505. return document.getElementById(id);
  506. }
  507. function fHide(obj){
  508. obj.style.display="none";
  509. }
  510. function pageBreak(e, show) {
  511. if(!show) {
  512. var obj = $('pageTitle');
  513. var title = obj ? obj.value : '';
  514. if(obj) {
  515. obj.value = '';
  516. }
  517. var insertText = title ? '[title='+title+']': '';
  518. setCaret();
  519. format("insertHTML", '<br /><strong>##########NextPage'+insertText+'##########</strong><br /><br />');
  520. if(parent.showInnerNav && typeof parent.showInnerNav == 'function') {
  521. parent.showInnerNav();
  522. }
  523. fHide($('createPage'));
  524. } else {
  525. if(gIsIE){
  526. var e = window.event;
  527. }
  528. getCaret();
  529. var dvSwfBox = $("createPage");
  530. var iX = e.clientX;
  531. var iY = e.clientY;
  532. dvSwfBox.style.display = "";
  533. dvSwfBox.style.left = (iX-300) + "px";
  534. dvSwfBox.style.top = 33 + "px";
  535. }
  536. }
  537. function changeEditType(flag, ev){
  538. gIsHtml = flag;
  539. try{
  540. var mod = parent.MM["compose"];
  541. mod.html = flag;
  542. }catch(exp){}
  543. try{
  544. var dvhtml = $("dvhtml");
  545. var dvtext = $("dvtext");
  546. var HtmlEditor = window.frames["HtmlEditor"];
  547. var ifmHtmlEditor = $("HtmlEditor");
  548. var sourceEditor = $("sourceEditor");
  549. var switchMode = $("switchMode");
  550. var sourceEditor = $("sourceEditor");
  551. var dvHtmlLnk = $("dvHtmlLnk");
  552. var dvToolbar = $('dvToolbar');
  553. if(flag){
  554. dvhtml.style.display = "";
  555. dvtext.style.display = "none";
  556. dvToolbar.className = 'toobar';
  557. if(switchMode.checked){
  558. sourceEditor.value = dvtext.value;
  559. $('uchome-editstatus').value = 'code';
  560. }else{
  561. if(document.all){
  562. HtmlEditor.document.body.innerText = dvtext.value;
  563. } else {
  564. HtmlEditor.document.body.innerHTML = dvtext.value.unescapeHTML();
  565. }
  566. $('uchome-editstatus').value = 'html';
  567. }
  568. }else{
  569. function sub1(){
  570. dvhtml.style.display = "none";
  571. dvtext.style.display = "";
  572. dvToolbar.className = 'toobarmini';
  573. if(switchMode.checked){
  574. dvtext.value = sourceEditor.value.unescapeHTML();
  575. }else{
  576. if(document.all){
  577. dvtext.value = HtmlEditor.document.body.innerText;
  578. }else{
  579. dvtext.value = HtmlEditor.document.body.innerHTML.unescapeHTML();
  580. }
  581. }
  582. }
  583. ev = ev || event;
  584. if(ev){
  585. if(window.confirm("转换为纯文本时将会遗失某些格式。\n您确定要继续吗?")){
  586. $('uchome-editstatus').value = 'text';
  587. sub1();
  588. }else{
  589. return;
  590. }
  591. }
  592. }
  593. }catch(exp){
  594. }
  595. }
  596. function changeEditFull(flag, ev) {
  597. if(parent.changeEditFull) {
  598. parent.changeEditFull(flag);
  599. ev = ev || event;
  600. var ele = ev.target || ev.srcElement;
  601. ele.innerHTML = flag ? '返回' : '全屏';
  602. ele.onclick = function() {changeEditFull(!flag, ev)};
  603. }
  604. }
  605. String.prototype.stripTags = function(){
  606. return this.replace(/<\/?[^>]+>/gi, '');
  607. };
  608. String.prototype.unescapeHTML = function(){
  609. var div = document.createElement('div');
  610. div.innerHTML = this.stripTags();
  611. return div.childNodes[0].nodeValue;
  612. };
  613. var s = "";
  614. var hex = new Array(6)
  615. hex[0] = "FF"
  616. hex[1] = "CC"
  617. hex[2] = "99"
  618. hex[3] = "66"
  619. hex[4] = "33"
  620. hex[5] = "00"
  621. function drawCell(red, green, blue) {
  622. var color = '#' + red + green + blue;
  623. if(color == "#000066") color = "#000000";
  624. s += '<TD BGCOLOR="' + color + '" style="height:12px;width:12px;" >';
  625. s += '<IMG '+ ((document.all)?"":"src='editor_none.gif'") +' HEIGHT=12 WIDTH=12>';
  626. s += '</TD>';
  627. }
  628. function drawRow(red, blue) {
  629. s += '<TR>';
  630. for (var i = 0; i < 6; ++i) {
  631. drawCell(red, hex[i], blue)
  632. }
  633. s += '</TR>';
  634. }
  635. function drawTable(blue) {
  636. s += '<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>';
  637. for (var i = 0; i < 6; ++i) {
  638. drawRow(hex[i], blue)
  639. }
  640. s += '</TABLE>';
  641. }
  642. function drawCube() {
  643. s += '<TABLE CELLPADDING=0 CELLSPACING=0 style="border:1px #888888 solid"><TR>';
  644. for (var i = 0; i < 2; ++i) {
  645. s += '<TD BGCOLOR="#FFFFFF">';
  646. drawTable(hex[i])
  647. s += '</TD>';
  648. }
  649. s += '</TR><TR>';
  650. for (var i = 2; i < 4; ++i) {
  651. s += '<TD BGCOLOR="#FFFFFF">';
  652. drawTable(hex[i])
  653. s += '</TD>';
  654. }
  655. s += '</TR></TABLE>';
  656. return s;
  657. }
  658. function EV(){}
  659. EV.getTarget = fGetTarget;
  660. EV.getEvent = fGetEvent;
  661. EV.stopEvent = fStopEvent;
  662. EV.stopPropagation = fStopPropagation;
  663. EV.preventDefault = fPreventDefault;
  664. function fGetTarget(ev, resolveTextNode){
  665. if(!ev) ev = this.getEvent();
  666. var t = ev.target || ev.srcElement;
  667. if (resolveTextNode && t && "#text" == t.nodeName) {
  668. return t.parentNode;
  669. } else {
  670. return t;
  671. }
  672. }
  673. function fGetEvent (e) {
  674. var ev = e || window.event;
  675. if (!ev) {
  676. var c = this.getEvent.caller;
  677. while (c) {
  678. ev = c.arguments[0];
  679. if (ev && Event == ev.constructor) {
  680. break;
  681. }
  682. c = c.caller;
  683. }
  684. }
  685. return ev;
  686. }
  687. function fStopEvent(ev) {
  688. if(!ev) ev = this.getEvent();
  689. this.stopPropagation(ev);
  690. this.preventDefault(ev);
  691. }
  692. function fStopPropagation(ev) {
  693. if(!ev) ev = this.getEvent();
  694. if (ev.stopPropagation) {
  695. ev.stopPropagation();
  696. } else {
  697. ev.cancelBubble = true;
  698. }
  699. }
  700. function fPreventDefault(ev) {
  701. if(!ev) ev = this.getEvent();
  702. if (ev.preventDefault) {
  703. ev.preventDefault();
  704. } else {
  705. ev.returnValue = false;
  706. }
  707. }
  708. function getExt(path) {
  709. return path.lastIndexOf('.') == -1 ? '' : path.substr(path.lastIndexOf('.') + 1, path.length).toLowerCase();
  710. }
  711. function checkURL(obj, mod) {
  712. if(mod) {
  713. if(obj.value == 'http://') {
  714. obj.value = '';
  715. }
  716. } else {
  717. if(obj.value == '') {
  718. obj.value = 'http://';
  719. }
  720. }
  721. }