--- /dev/null
+copyhint = true;
+function clipboardcopy(val) {
+ if (window && window.clipboardData) {
+ // msie
+ return window.clipboardData.setData('text', val);
+ }
+
+ if (netscape && netscape.security) {
+ // request access to XPCOM api
+ try {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
+ }
+ catch(e) {
+ if (copyhint)
+ alert('Cannot access clipboard.\nSet boolean signed.applets.codebase_principal_support in about:config');
+ copyhint = false;
+ return false;
+ }
+
+ // use nsIClipboard interface
+ try {
+ Components.classes['@mozilla.org/widget/clipboardhelper;1']
+ .getService(Components.interfaces.nsIClipboardHelper)
+ .copyString(val);
+ return true;
+ }
+ catch(e) {
+ alert('Copy failed');
+ return false;
+ }
+ }
+}
+
+charmatch = /^U\+([0-9A-F]{4,})/;
+function copycellchars() {
+ var unicode = charmatch.exec(this.title);
+ var str = String.fromCharCode(parseInt(unicode[1], 16));
+ return clipboardcopy(str);
+}
+
+var cells = document.getElementsByTagName('TD');
+for (var i = 0; i < cells.length; i++) {
+ if (!cells[i].title) continue;
+ if (!charmatch.test(cells[i].title)) continue;
+ cells[i].onclick = copycellchars;
+}
+