Index: openacs-4/packages/acs-templating/www/resources/xinha-nightly/modules/Opera/Opera.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/resources/xinha-nightly/modules/Opera/Opera.js,v diff -u -r1.1 -r1.2 --- openacs-4/packages/acs-templating/www/resources/xinha-nightly/modules/Opera/Opera.js 13 May 2008 18:53:46 -0000 1.1 +++ openacs-4/packages/acs-templating/www/resources/xinha-nightly/modules/Opera/Opera.js 16 Jan 2009 09:05:47 -0000 1.2 @@ -1,464 +1,2 @@ -/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */ -/* This file is part of version 0.95 released Mon, 12 May 2008 17:33:15 +0200 */ -/* The URL of the most recent version of this file is http://svn.xinha.webfactional.com/trunk/modules/Opera/Opera.js */ -Opera._pluginInfo={name:"Opera",origin:"Xinha Core",version:"$LastChangedRevision:970 $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL:http://svn.xinha.webfactional.com/trunk/modules/Opera/Opera.js $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),sponsor:"Gogo Internet Services Limited",sponsor_url:"http://www.gogo.co.nz/",license:"htmlArea"}; -function Opera(_1){ -this.editor=_1; -_1.Opera=this; -} -Opera.prototype.onKeyPress=function(ev){ -var _3=this.editor; -var s=_3.getSelection(); -if(_3.isShortCut(ev)){ -switch(_3.getKey(ev).toLowerCase()){ -case "z": -if(_3._unLink&&_3._unlinkOnUndo){ -Xinha._stopEvent(ev); -_3._unLink(); -_3.updateToolbar(); -return true; -} -break; -case "a": -sel=_3.getSelection(); -sel.removeAllRanges(); -range=_3.createRange(); -range.selectNodeContents(_3._doc.body); -sel.addRange(range); -Xinha._stopEvent(ev); -return true; -break; -case "v": -if(!_3.config.htmlareaPaste){ -return true; -} -break; -} -} -switch(_3.getKey(ev)){ -case " ": -var _5=function(_6,_7){ -var _8=_6.nextSibling; -if(typeof _7=="string"){ -_7=_3._doc.createElement(_7); -} -var a=_6.parentNode.insertBefore(_7,_8); -Xinha.removeFromParent(_6); -a.appendChild(_6); -_8.data=" "+_8.data; -s.collapse(_8,1); -_3._unLink=function(){ -var t=a.firstChild; -a.removeChild(t); -a.parentNode.insertBefore(t,a); -Xinha.removeFromParent(a); -_3._unLink=null; -_3._unlinkOnUndo=false; -}; -_3._unlinkOnUndo=true; -return a; -}; -if(_3.config.convertUrlsToLinks&&s&&s.isCollapsed&&s.anchorNode.nodeType==3&&s.anchorNode.data.length>3&&s.anchorNode.data.indexOf(".")>=0){ -var _b=s.anchorNode.data.substring(0,s.anchorOffset).search(/\S{4,}$/); -if(_b==-1){ -break; -} -if(_3._getFirstAncestor(s,"a")){ -break; -} -var _c=s.anchorNode.data.substring(0,s.anchorOffset).replace(/^.*?(\S*)$/,"$1"); -var _d=_c.match(Xinha.RE_email); -if(_d){ -var _e=s.anchorNode; -var _f=_e.splitText(s.anchorOffset); -var _10=_e.splitText(_b); -_5(_10,"a").href="mailto:"+_d[0]; -break; -} -RE_date=/([0-9]+\.)+/; -RE_ip=/(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/; -var _11=_c.match(Xinha.RE_url); -if(_11){ -if(RE_date.test(_c)){ -break; -} -var _12=s.anchorNode; -var _13=_12.splitText(s.anchorOffset); -var _14=_12.splitText(_b); -_5(_14,"a").href=(_11[1]?_11[1]:"http://")+_11[2]; -break; -} -} -break; -} -switch(ev.keyCode){ -case 27: -if(_3._unLink){ -_3._unLink(); -Xinha._stopEvent(ev); -} -break; -break; -case 8: -case 46: -if(!ev.shiftKey&&this.handleBackspace()){ -Xinha._stopEvent(ev); -} -default: -_3._unlinkOnUndo=false; -if(s.anchorNode&&s.anchorNode.nodeType==3){ -var a=_3._getFirstAncestor(s,"a"); -if(!a){ -break; -} -if(!a._updateAnchTimeout){ -if(s.anchorNode.data.match(Xinha.RE_email)&&a.href.match("mailto:"+s.anchorNode.data.trim())){ -var _16=s.anchorNode; -var _17=function(){ -a.href="mailto:"+_16.data.trim(); -a._updateAnchTimeout=setTimeout(_17,250); -}; -a._updateAnchTimeout=setTimeout(_17,1000); -break; -} -var m=s.anchorNode.data.match(Xinha.RE_url); -if(m&&a.href.match(new RegExp("http(s)?://"+Xinha.escapeStringForRegExp(s.anchorNode.data.trim())))){ -var _19=s.anchorNode; -var _1a=function(){ -m=_19.data.match(Xinha.RE_url); -if(m){ -a.href=(m[1]?m[1]:"http://")+m[2]; -} -a._updateAnchTimeout=setTimeout(_1a,250); -}; -a._updateAnchTimeout=setTimeout(_1a,1000); -} -} -} -break; -} -return false; -}; -Opera.prototype.handleBackspace=function(){ -var _1b=this.editor; -setTimeout(function(){ -var sel=_1b.getSelection(); -var _1d=_1b.createRange(sel); -var SC=_1d.startContainer; -var SO=_1d.startOffset; -var EC=_1d.endContainer; -var EO=_1d.endOffset; -var _22=SC.nextSibling; -if(SC.nodeType==3){ -SC=SC.parentNode; -} -if(!(/\S/.test(SC.tagName))){ -var p=document.createElement("p"); -while(SC.firstChild){ -p.appendChild(SC.firstChild); -} -SC.parentNode.insertBefore(p,SC); -Xinha.removeFromParent(SC); -var r=_1d.cloneRange(); -r.setStartBefore(_22); -r.setEndAfter(_22); -r.extractContents(); -sel.removeAllRanges(); -sel.addRange(r); -} -},10); -}; -Opera.prototype.inwardHtml=function(_25){ -_25=_25.replace(/<(\/?)del(\s|>|\/)/ig,"<$1strike$2"); -return _25; -}; -Opera.prototype.outwardHtml=function(_26){ -return _26; -}; -Opera.prototype.onExecCommand=function(_27,UI,_29){ -switch(_27){ -case "removeformat": -var _2a=this.editor; -var sel=_2a.getSelection(); -var _2c=_2a.saveSelection(sel); -var _2d=_2a.createRange(sel); -var els=_2a._doc.body.getElementsByTagName("*"); -var _2f=(_2d.startContainer.nodeType==1)?_2d.startContainer:_2d.startContainer.parentNode; -var i,el; -if(sel.isCollapsed){ -_2d.selectNodeContents(_2a._doc.body); -} -for(i=0;isel.anchorOffset&&sel.anchorNode.childNodes[sel.anchorOffset].nodeType==1){ -return sel.anchorNode.childNodes[sel.anchorOffset]; -}else{ -if(sel.anchorNode.nodeType==1){ -return sel.anchorNode; -}else{ -return null; -} -} -} -return null; -}; -Xinha.prototype.selectionEmpty=function(sel){ -if(!sel){ -return true; -} -if(typeof sel.isCollapsed!="undefined"){ -return sel.isCollapsed; -} -return true; -}; -Xinha.prototype.saveSelection=function(){ -return this.createRange(this.getSelection()).cloneRange(); -}; -Xinha.prototype.restoreSelection=function(_3d){ -var sel=this.getSelection(); -sel.removeAllRanges(); -sel.addRange(_3d); -}; -Xinha.prototype.selectNodeContents=function(_3f,pos){ -this.focusEditor(); -this.forceRedraw(); -var _41; -var _42=typeof pos=="undefined"?true:false; -var sel=this.getSelection(); -_41=this._doc.createRange(); -if(_42&&_3f.tagName&&_3f.tagName.toLowerCase().match(/table|img|input|textarea|select/)){ -_41.selectNode(_3f); -}else{ -_41.selectNodeContents(_3f); -} -sel.removeAllRanges(); -sel.addRange(_41); -}; -Xinha.prototype.insertHTML=function(_44){ -var sel=this.getSelection(); -var _46=this.createRange(sel); -this.focusEditor(); -var _47=this._doc.createDocumentFragment(); -var div=this._doc.createElement("div"); -div.innerHTML=_44; -while(div.firstChild){ -_47.appendChild(div.firstChild); -} -var _49=this.insertNodeAtSelection(_47); -}; -Xinha.prototype.getSelectedHTML=function(){ -var sel=this.getSelection(); -if(sel.isCollapsed){ -return ""; -} -var _4b=this.createRange(sel); -return Xinha.getHTML(_4b.cloneContents(),false,this); -}; -Xinha.prototype.getSelection=function(){ -var sel=this._iframe.contentWindow.getSelection(); -if(sel&&sel.focusNode&&sel.focusNode.tagName&&sel.focusNode.tagName=="HTML"){ -var bod=this._doc.getElementsByTagName("body")[0]; -var rng=this.createRange(); -rng.selectNodeContents(bod); -sel.removeAllRanges(); -sel.addRange(rng); -sel.collapseToEnd(); -} -return sel; -}; -Xinha.prototype.createRange=function(sel){ -this.activateEditor(); -if(typeof sel!="undefined"){ -try{ -return sel.getRangeAt(0); -} -catch(ex){ -return this._doc.createRange(); -} -}else{ -return this._doc.createRange(); -} -}; -Xinha.prototype.isKeyEvent=function(_50){ -return _50.type=="keypress"; -}; -Xinha.prototype.getKey=function(_51){ -return String.fromCharCode(_51.charCode); -}; -Xinha.getOuterHTML=function(_52){ -return (new XMLSerializer()).serializeToString(_52); -}; -Xinha.prototype.setCC=function(_53){ -var cc=String.fromCharCode(8286); -try{ -if(_53=="textarea"){ -var ta=this._textArea; -var _56=ta.selectionStart; -var _57=ta.value.substring(0,_56); -var _58=ta.value.substring(_56,ta.value.length); -if(_58.match(/^[^<]*>/)){ -var _59=_58.indexOf(">")+1; -ta.value=_57+_58.substring(0,_59)+cc+_58.substring(_59,_58.length); -}else{ -ta.value=_57+cc+_58; -} -ta.value=ta.value.replace(new RegExp("(&[^"+cc+"]*?)("+cc+")([^"+cc+"]*?;)"),"$1$3$2"); -ta.value=ta.value.replace(new RegExp("(]*>[^"+cc+"]*?)("+cc+")([^"+cc+"]*?)"),"$1$3$2"); -ta.value=ta.value.replace(new RegExp("^([^"+cc+"]*)("+cc+")([^"+cc+"]*]*>)(.*?)"),"$1$3$2$4"); -ta.value=ta.value.replace(cc,"MARK"); -}else{ -var sel=this.getSelection(); -var _5b=this._doc.createElement("span"); -_5b.id="XinhaOperaCaretMarker"; -sel.getRangeAt(0).insertNode(_5b); -} -} -catch(e){ -} -}; -Xinha.prototype.findCC=function(_5c){ -if(_5c=="textarea"){ -var ta=this._textArea; -var pos=ta.value.search(/(((\s|(MARK))*<\/span>)?)/); -if(pos==-1){ -return; -} -var cc=RegExp.$1; -var end=pos+cc.length; -var _61=ta.value.substring(0,pos); -var _62=ta.value.substring(end,ta.value.length); -ta.value=_61; -ta.scrollTop=ta.scrollHeight; -var _63=ta.scrollTop; -ta.value+=_62; -ta.setSelectionRange(pos,pos); -ta.focus(); -ta.scrollTop=_63; -}else{ -var _64=this._doc.getElementById("XinhaOperaCaretMarker"); -if(_64){ -this.focusEditor(); -var rng=this.createRange(); -rng.selectNode(_64); -var sel=this.getSelection(); -sel.addRange(rng); -sel.collapseToStart(); -this.scrollToElement(_64); -_64.parentNode.removeChild(_64); -return; -} -} -}; -Xinha.getDoctype=function(doc){ -var d=""; -if(doc.doctype){ -d+=""; -} -return d; -}; -Xinha.prototype._standardInitIframe=Xinha.prototype.initIframe; -Xinha.prototype.initIframe=function(){ -if(!this._iframeLoadDone){ -if(this._iframe.contentWindow&&this._iframe.contentWindow.xinhaReadyToRoll){ -this._iframeLoadDone=true; -this._standardInitIframe(); -}else{ -var _69=this; -setTimeout(function(){ -_69.initIframe(); -},5); -} -} -}; -Xinha._addEventOperaOrig=Xinha._addEvent; -Xinha._addEvent=function(el,_6b,_6c){ -if(el.tagName&&el.tagName.toLowerCase()=="select"&&_6b=="change"){ -return Xinha.addDom0Event(el,_6b,_6c); -} -return Xinha._addEventOperaOrig(el,_6b,_6c); -}; - +/* This compressed file is part of Xinha. For uncomressed sources, forum, and bug reports, go to xinha.org */ +Opera._pluginInfo={name:"Opera",origin:"Xinha Core",version:"$LastChangedRevision: 1084 $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.org/trunk/modules/Opera/Opera.js $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),sponsor:"Gogo Internet Services Limited",sponsor_url:"http://www.gogo.co.nz/",license:"htmlArea"};function Opera(a){this.editor=a;a.Opera=this}Opera.prototype.onKeyPress=function(u){var d=this.editor;var j=d.getSelection();if(d.isShortCut(u)){switch(d.getKey(u).toLowerCase()){case"z":if(d._unLink&&d._unlinkOnUndo){Xinha._stopEvent(u);d._unLink();d.updateToolbar();return true}break;case"a":sel=d.getSelection();sel.removeAllRanges();range=d.createRange();range.selectNodeContents(d._doc.body);sel.addRange(range);Xinha._stopEvent(u);return true;break;case"v":if(!d.config.htmlareaPaste){return true}break}}switch(d.getKey(u)){case" ":var g=function(y,m){var x=y.nextSibling;if(typeof m=="string"){m=d._doc.createElement(m)}var s=y.parentNode.insertBefore(m,x);Xinha.removeFromParent(y);s.appendChild(y);x.data=" "+x.data;j.collapse(x,1);d._unLink=function(){var a=s.firstChild;s.removeChild(a);s.parentNode.insertBefore(a,s);Xinha.removeFromParent(s);d._unLink=null;d._unlinkOnUndo=false};d._unlinkOnUndo=true;return s};if(d.config.convertUrlsToLinks&&j&&j.isCollapsed&&j.anchorNode.nodeType==3&&j.anchorNode.data.length>3&&j.anchorNode.data.indexOf(".")>=0){var t=j.anchorNode.data.substring(0,j.anchorOffset).search(/\S{4,}$/);if(t==-1){break}if(d._getFirstAncestor(j,"a")){break}var h=j.anchorNode.data.substring(0,j.anchorOffset).replace(/^.*?(\S*)$/,"$1");var e=h.match(Xinha.RE_email);if(e){var v=j.anchorNode;var f=v.splitText(j.anchorOffset);var k=v.splitText(t);g(k,"a").href="mailto:"+e[0];break}RE_date=/([0-9]+\.)+/;RE_ip=/(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/;var p=h.match(Xinha.RE_url);if(p){if(RE_date.test(h)){break}var i=j.anchorNode;var b=i.splitText(j.anchorOffset);var q=i.splitText(t);g(q,"a").href=(p[1]?p[1]:"http://")+p[2];break}}break}switch(u.keyCode){case 27:if(d._unLink){d._unLink();Xinha._stopEvent(u)}break;break;case 8:case 46:if(!u.shiftKey&&this.handleBackspace()){Xinha._stopEvent(u)}default:d._unlinkOnUndo=false;if(j.anchorNode&&j.anchorNode.nodeType==3){var w=d._getFirstAncestor(j,"a");if(!w){break}if(!w._updateAnchTimeout){if(j.anchorNode.data.match(Xinha.RE_email)&&w.href.match("mailto:"+j.anchorNode.data.trim())){var l=j.anchorNode;var c=function(){w.href="mailto:"+l.data.trim();w._updateAnchTimeout=setTimeout(c,250)};w._updateAnchTimeout=setTimeout(c,1000);break}var n=j.anchorNode.data.match(Xinha.RE_url);if(n&&w.href.match(new RegExp("http(s)?://"+Xinha.escapeStringForRegExp(j.anchorNode.data.trim())))){var o=j.anchorNode;var r=function(){n=o.data.match(Xinha.RE_url);if(n){w.href=(n[1]?n[1]:"http://")+n[2]}w._updateAnchTimeout=setTimeout(r,250)};w._updateAnchTimeout=setTimeout(r,1000)}}}break}return false};Opera.prototype.handleBackspace=function(){var a=this.editor;setTimeout(function(){var e=a.getSelection();var g=a.createRange(e);var f=g.startContainer;var i=g.startOffset;var c=g.endContainer;var h=g.endOffset;var j=f.nextSibling;if(f.nodeType==3){f=f.parentNode}if(!(/\S/.test(f.tagName))){var d=document.createElement("p");while(f.firstChild){d.appendChild(f.firstChild)}f.parentNode.insertBefore(d,f);Xinha.removeFromParent(f);var b=g.cloneRange();b.setStartBefore(j);b.setEndAfter(j);b.extractContents();e.removeAllRanges();e.addRange(b)}},10)};Opera.prototype.inwardHtml=function(a){a=a.replace(/<(\/?)del(\s|>|\/)/ig,"<$1strike$2");return a};Opera.prototype.outwardHtml=function(a){return a};Opera.prototype.onExecCommand=function(f,e,d){switch(f){case"removeformat":var k=this.editor;var c=k.getSelection();var l=k.saveSelection(c);var j=k.createRange(c);var g=k._doc.body.getElementsByTagName("*");var a=(j.startContainer.nodeType==1)?j.startContainer:j.startContainer.parentNode;var h,b;if(c.isCollapsed){j.selectNodeContents(k._doc.body)}for(h=0;ha.anchorOffset&&a.anchorNode.childNodes[a.anchorOffset].nodeType==1){return a.anchorNode.childNodes[a.anchorOffset]}else{if(a.anchorNode.nodeType==1){return a.anchorNode}else{return null}}}return null};Xinha.prototype.selectionEmpty=function(a){if(!a){return true}if(typeof a.isCollapsed!="undefined"){return a.isCollapsed}return true};Xinha.prototype.saveSelection=function(){return this.createRange(this.getSelection()).cloneRange()};Xinha.prototype.restoreSelection=function(a){var b=this.getSelection();b.removeAllRanges();b.addRange(a)};Xinha.prototype.selectNodeContents=function(b,d){this.focusEditor();this.forceRedraw();var a;var e=typeof d=="undefined"?true:false;var c=this.getSelection();a=this._doc.createRange();if(e&&b.tagName&&b.tagName.toLowerCase().match(/table|img|input|textarea|select/)){a.selectNode(b)}else{a.selectNodeContents(b)}c.removeAllRanges();c.addRange(a);if(typeof d!="undefined"){if(d){c.collapse(a.startContainer,a.startOffset)}else{c.collapse(a.endContainer,a.endOffset)}}};Xinha.prototype.insertHTML=function(c){var e=this.getSelection();var a=this.createRange(e);this.focusEditor();var b=this._doc.createDocumentFragment();var f=this._doc.createElement("div");f.innerHTML=c;while(f.firstChild){b.appendChild(f.firstChild)}var d=this.insertNodeAtSelection(b)};Xinha.prototype.getSelectedHTML=function(){var b=this.getSelection();if(b.isCollapsed){return""}var a=this.createRange(b);return Xinha.getHTML(a.cloneContents(),false,this)};Xinha.prototype.getSelection=function(){var c=this._iframe.contentWindow.getSelection();if(c&&c.focusNode&&c.focusNode.tagName&&c.focusNode.tagName=="HTML"){var b=this._doc.getElementsByTagName("body")[0];var a=this.createRange();a.selectNodeContents(b);c.removeAllRanges();c.addRange(a);c.collapseToEnd()}return c};Xinha.prototype.createRange=function(b){this.activateEditor();if(typeof b!="undefined"){try{return b.getRangeAt(0)}catch(a){return this._doc.createRange()}}else{return this._doc.createRange()}};Xinha.prototype.isKeyEvent=function(a){return a.type=="keypress"};Xinha.prototype.getKey=function(a){return String.fromCharCode(a.charCode)};Xinha.getOuterHTML=function(a){return(new XMLSerializer()).serializeToString(a)};Xinha.cc=String.fromCharCode(8286);Xinha.prototype.setCC=function(i){var c=Xinha.cc;try{if(i=="textarea"){var f=this._textArea;var g=f.selectionStart;var k=f.value.substring(0,g);var a=f.value.substring(g,f.value.length);if(a.match(/^[^<]*>/)){var j=a.indexOf(">")+1;f.value=k+a.substring(0,j)+c+a.substring(j,a.length)}else{f.value=k+c+a}f.value=f.value.replace(new RegExp("(&[^"+c+"]*?)("+c+")([^"+c+"]*?;)"),"$1$3$2");f.value=f.value.replace(new RegExp("(]*>[^"+c+"]*?)("+c+")([^"+c+"]*?<\/script>)"),"$1$3$2");f.value=f.value.replace(new RegExp("^([^"+c+"]*)("+c+")([^"+c+"]*]*>)(.*?)"),"$1$3$2$4");f.value=f.value.replace(c,'MARK')}else{var b=this.getSelection();var d=this._doc.createElement("span");d.id="XinhaOperaCaretMarker";b.getRangeAt(0).insertNode(d)}}catch(h){}};Xinha.prototype.findCC=function(i){if(i=="textarea"){var h=this._textArea;var j=h.value.search(/(((\s|(MARK))*<\/span>)?)/);if(j==-1){return}var e=RegExp.$1;var f=j+e.length;var k=h.value.substring(0,j);var b=h.value.substring(f,h.value.length);h.value=k;h.scrollTop=h.scrollHeight;var d=h.scrollTop;h.value+=b;h.setSelectionRange(j,j);h.focus();h.scrollTop=d}else{var g=this._doc.getElementById("XinhaOperaCaretMarker");if(g){this.focusEditor();var a=this.createRange();a.selectNode(g);var c=this.getSelection();c.addRange(a);c.collapseToStart();this.scrollToElement(g);g.parentNode.removeChild(g);return}}};Xinha.getDoctype=function(a){var b="";if(a.doctype){b+=""}return b};Xinha.prototype._standardInitIframe=Xinha.prototype.initIframe;Xinha.prototype.initIframe=function(){if(!this._iframeLoadDone){if(this._iframe.contentWindow&&this._iframe.contentWindow.xinhaReadyToRoll){this._iframeLoadDone=true;this._standardInitIframe()}else{var a=this;setTimeout(function(){a.initIframe()},5)}}};Xinha._addEventOperaOrig=Xinha._addEvent;Xinha._addEvent=function(a,c,b){if(a.tagName&&a.tagName.toLowerCase()=="select"&&c=="change"){return Xinha.addDom0Event(a,c,b)}return Xinha._addEventOperaOrig(a,c,b)}; \ No newline at end of file