You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2009/09/27 05:11:43 UTC

svn commit: r819248 [7/8] - in /roller/trunk/apps/weblogger/web/roller-ui/authoring/editors: ./ xinha-0.95/ xinha-0.95/examples/ xinha-0.95/images/ xinha-0.95/images/de/ xinha-0.95/images/fr/ xinha-0.95/lang/ xinha-0.95/modules/ xinha-0.95/modules/Colo...

Added: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/modules/Opera/Opera.js
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/modules/Opera/Opera.js?rev=819248&view=auto
==============================================================================
--- roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/modules/Opera/Opera.js (added)
+++ roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/modules/Opera/Opera.js Sun Sep 27 03:11:38 2009
@@ -0,0 +1,464 @@
+/* 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;i<els.length;i++){
+el=els[i];
+if(_2d.isPointInRange(el,0)||(els[i]==_2f&&_2d.startOffset==0)){
+el.removeAttribute("style");
+}
+}
+this.editor._doc.execCommand(_27,UI,_29);
+_2a.restoreSelection(_2c);
+return true;
+break;
+}
+return false;
+};
+Opera.prototype.onMouseDown=function(ev){
+};
+Xinha.prototype.insertNodeAtSelection=function(_32){
+if(_32.ownerDocument!=this._doc){
+try{
+_32=this._doc.adoptNode(_32);
+}
+catch(e){
+}
+}
+this.focusEditor();
+var sel=this.getSelection();
+var _34=this.createRange(sel);
+_34.deleteContents();
+var _35=_34.startContainer;
+var pos=_34.startOffset;
+var _37=_32;
+sel.removeAllRanges();
+switch(_35.nodeType){
+case 3:
+if(_32.nodeType==3){
+_35.insertData(pos,_32.data);
+_34=this.createRange();
+_34.setEnd(_35,pos+_32.length);
+_34.setStart(_35,pos+_32.length);
+sel.addRange(_34);
+}else{
+_35=_35.splitText(pos);
+if(_32.nodeType==11){
+_37=_37.firstChild;
+}
+_35.parentNode.insertBefore(_32,_35);
+this.selectNodeContents(_37);
+this.updateToolbar();
+}
+break;
+case 1:
+if(_32.nodeType==11){
+_37=_37.firstChild;
+}
+_35.insertBefore(_32,_35.childNodes[pos]);
+this.selectNodeContents(_37);
+this.updateToolbar();
+break;
+}
+};
+Xinha.prototype.getParentElement=function(sel){
+if(typeof sel=="undefined"){
+sel=this.getSelection();
+}
+var _39=this.createRange(sel);
+try{
+var p=_39.commonAncestorContainer;
+if(!_39.collapsed&&_39.startContainer==_39.endContainer&&_39.startOffset-_39.endOffset<=1&&_39.startContainer.hasChildNodes()){
+p=_39.startContainer.childNodes[_39.startOffset];
+}
+while(p.nodeType==3){
+p=p.parentNode;
+}
+return p;
+}
+catch(ex){
+return null;
+}
+};
+Xinha.prototype.activeElement=function(sel){
+if((sel===null)||this.selectionEmpty(sel)){
+return null;
+}
+if(!sel.isCollapsed){
+if(sel.anchorNode.childNodes.length>sel.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("(<script[^>]*>[^"+cc+"]*?)("+cc+")([^"+cc+"]*?</script>)"),"$1$3$2");
+ta.value=ta.value.replace(new RegExp("^([^"+cc+"]*)("+cc+")([^"+cc+"]*<body[^>]*>)(.*?)"),"$1$3$2$4");
+ta.value=ta.value.replace(cc,"<span id=\"XinhaOperaCaretMarker\">MARK</span>");
+}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(/(<span\s+id="XinhaOperaCaretMarker"\s*\/?>((\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+="<!DOCTYPE "+doc.doctype.name+" PUBLIC ";
+d+=doc.doctype.publicId?"\""+doc.doctype.publicId+"\"":"";
+d+=doc.doctype.systemId?" \""+doc.doctype.systemId+"\"":"";
+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);
+};
+

Added: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/modules/WebKit/WebKit.js
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/modules/WebKit/WebKit.js?rev=819248&view=auto
==============================================================================
--- roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/modules/WebKit/WebKit.js (added)
+++ roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/modules/WebKit/WebKit.js Sun Sep 27 03:11:38 2009
@@ -0,0 +1,478 @@
+/* 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/WebKit/WebKit.js */
+WebKit._pluginInfo={name:"WebKit",origin:"Xinha Core",version:"$LastChangedRevision:998 $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL:http://svn.xinha.webfactional.com/trunk/modules/WebKit/WebKit.js $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),sponsor:"",sponsor_url:"",license:"htmlArea"};
+function WebKit(_1){
+this.editor=_1;
+_1.WebKit=this;
+}
+WebKit.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":
+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 13:
+if(ev.shiftKey){
+}
+break;
+case 27:
+if(_3._unLink){
+_3._unLink();
+Xinha._stopEvent(ev);
+}
+break;
+case 8:
+case 46:
+if(!ev.shiftKey&&this.handleBackspace()){
+Xinha._stopEvent(ev);
+}
+break;
+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;
+};
+WebKit.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);
+};
+WebKit.prototype.inwardHtml=function(_25){
+return _25;
+};
+WebKit.prototype.outwardHtml=function(_26){
+return _26;
+};
+WebKit.prototype.onExecCommand=function(_27,UI,_29){
+this.editor._doc.execCommand("styleWithCSS",false,false);
+switch(_27){
+case "paste":
+alert(Xinha._lc("The Paste button does not work in the Safari browser for security reasons. Press CTRL-V on your keyboard to paste directly."));
+return true;
+break;
+case "removeformat":
+var _2a=this.editor;
+var sel=_2a.getSelection();
+var _2c=_2a.saveSelection(sel);
+var _2d=_2a.createRange(sel);
+var els=_2a._doc.getElementsByTagName("*");
+els=Xinha.collectionToArray(els);
+var _2f=(_2d.startContainer.nodeType==1)?_2d.startContainer:_2d.startContainer.parentNode;
+var i,el,newNode,fragment,child,r2=_2a._doc.createRange();
+function clean(el){
+if(el.nodeType!=1){
+return;
+}
+el.removeAttribute("style");
+for(var j=0;j<el.childNodes.length;j++){
+clean(el.childNodes[j]);
+}
+if((el.tagName.toLowerCase()=="span"&&!el.attributes.length)||el.tagName.toLowerCase()=="font"){
+r2.selectNodeContents(el);
+fragment=r2.extractContents();
+while(fragment.firstChild){
+child=fragment.removeChild(fragment.firstChild);
+el.parentNode.insertBefore(child,el);
+}
+el.parentNode.removeChild(el);
+}
+}
+if(sel.isCollapsed){
+els=_2a._doc.body.childNodes;
+for(i=0;i<els.length;i++){
+el=els[i];
+if(el.nodeType!=1){
+continue;
+}
+if(el.tagName.toLowerCase()=="span"){
+newNode=_2a.convertNode(el,"div");
+el.parentNode.replaceChild(newNode,el);
+el=newNode;
+}
+clean(el);
+}
+}else{
+for(i=0;i<els.length;i++){
+el=els[i];
+if(_2d.isPointInRange(el,0)||(els[i]==_2f&&_2d.startOffset==0)){
+clean(el);
+}
+}
+}
+r2.detach();
+_2a.restoreSelection(_2c);
+return true;
+break;
+}
+return false;
+};
+WebKit.prototype.onMouseDown=function(ev){
+if(ev.target.tagName.toLowerCase()=="hr"||ev.target.tagName.toLowerCase()=="img"){
+this.editor.selectNodeContents(ev.target);
+}
+};
+Xinha.prototype.insertNodeAtSelection=function(_34){
+var sel=this.getSelection();
+var _36=this.createRange(sel);
+sel.removeAllRanges();
+_36.deleteContents();
+var _37=_36.startContainer;
+var pos=_36.startOffset;
+var _39=_34;
+switch(_37.nodeType){
+case 3:
+if(_34.nodeType==3){
+_37.insertData(pos,_34.data);
+_36=this.createRange();
+_36.setEnd(_37,pos+_34.length);
+_36.setStart(_37,pos+_34.length);
+sel.addRange(_36);
+}else{
+_37=_37.splitText(pos);
+if(_34.nodeType==11){
+_39=_39.firstChild;
+}
+_37.parentNode.insertBefore(_34,_37);
+this.selectNodeContents(_39);
+this.updateToolbar();
+}
+break;
+case 1:
+if(_34.nodeType==11){
+_39=_39.firstChild;
+}
+_37.insertBefore(_34,_37.childNodes[pos]);
+this.selectNodeContents(_39);
+this.updateToolbar();
+break;
+}
+};
+Xinha.prototype.getParentElement=function(sel){
+if(typeof sel=="undefined"){
+sel=this.getSelection();
+}
+var _3b=this.createRange(sel);
+try{
+var p=_3b.commonAncestorContainer;
+if(!_3b.collapsed&&_3b.startContainer==_3b.endContainer&&_3b.startOffset-_3b.endOffset<=1&&_3b.startContainer.hasChildNodes()){
+p=_3b.startContainer.childNodes[_3b.startOffset];
+}
+while(p.nodeType==3){
+p=p.parentNode;
+}
+return p;
+}
+catch(ex){
+return null;
+}
+};
+Xinha.prototype.activeElement=function(sel){
+if((sel===null)||this.selectionEmpty(sel)){
+return null;
+}
+if(!sel.isCollapsed){
+if(sel.anchorNode.childNodes.length>sel.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(_3f){
+var sel=this.getSelection();
+sel.removeAllRanges();
+sel.addRange(_3f);
+};
+Xinha.prototype.selectNodeContents=function(_41,pos){
+this.focusEditor();
+this.forceRedraw();
+var _43;
+var _44=typeof pos=="undefined"?true:false;
+var sel=this.getSelection();
+_43=this._doc.createRange();
+if(_44&&_41.tagName&&_41.tagName.toLowerCase().match(/table|img|input|textarea|select/)){
+_43.selectNode(_41);
+}else{
+_43.selectNodeContents(_41);
+}
+sel.removeAllRanges();
+sel.addRange(_43);
+};
+Xinha.prototype.insertHTML=function(_46){
+var sel=this.getSelection();
+var _48=this.createRange(sel);
+this.focusEditor();
+var _49=this._doc.createDocumentFragment();
+var div=this._doc.createElement("div");
+div.innerHTML=_46;
+while(div.firstChild){
+_49.appendChild(div.firstChild);
+}
+var _4b=this.insertNodeAtSelection(_49);
+};
+Xinha.prototype.getSelectedHTML=function(){
+var sel=this.getSelection();
+if(sel.isCollapsed){
+return "";
+}
+var _4d=this.createRange(sel);
+if(_4d){
+return Xinha.getHTML(_4d.cloneContents(),false,this);
+}else{
+return "";
+}
+};
+Xinha.prototype.getSelection=function(){
+return this._iframe.contentWindow.getSelection();
+};
+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(_4f){
+return _4f.type=="keypress";
+};
+Xinha.prototype.getKey=function(_50){
+var key=String.fromCharCode(parseInt(_50.keyIdentifier.replace(/^U\+/,""),16));
+if(_50.shiftKey){
+return key;
+}else{
+return key.toLowerCase();
+}
+};
+Xinha.getOuterHTML=function(_52){
+return (new XMLSerializer()).serializeToString(_52);
+};
+Xinha.prototype.cc=String.fromCharCode(8286);
+Xinha.prototype.setCC=function(_53){
+var cc=this.cc;
+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("(<script[^>]*>[^"+cc+"]*?)("+cc+")([^"+cc+"]*?</script>)"),"$1$3$2");
+ta.value=ta.value.replace(new RegExp("^([^"+cc+"]*)("+cc+")([^"+cc+"]*<body[^>]*>)(.*?)"),"$1$3$2$4");
+}else{
+var sel=this.getSelection();
+sel.getRangeAt(0).insertNode(this._doc.createTextNode(cc));
+}
+}
+catch(e){
+}
+};
+Xinha.prototype.findCC=function(_5b){
+if(_5b=="textarea"){
+var ta=this._textArea;
+var pos=ta.value.indexOf(this.cc);
+if(pos==-1){
+return;
+}
+var end=pos+this.cc.length;
+var _5f=ta.value.substring(0,pos);
+var _60=ta.value.substring(end,ta.value.length);
+ta.value=_5f;
+ta.scrollTop=ta.scrollHeight;
+var _61=ta.scrollTop;
+ta.value+=_60;
+ta.setSelectionRange(pos,pos);
+ta.focus();
+ta.scrollTop=_61;
+}else{
+var _62=this;
+try{
+var doc=this._doc;
+doc.body.innerHTML=doc.body.innerHTML.replace(new RegExp(this.cc),"<span id=\"XinhaEditingPostion\"></span>");
+var _64=doc.getElementById("XinhaEditingPostion");
+this.selectNodeContents(_64);
+this.scrollToElement(_64);
+_64.parentNode.removeChild(_64);
+this._iframe.contentWindow.focus();
+}
+catch(e){
+}
+}
+};
+Xinha.prototype._standardToggleBorders=Xinha.prototype._toggleBorders;
+Xinha.prototype._toggleBorders=function(){
+var _65=this._standardToggleBorders();
+var _66=this._doc.getElementsByTagName("TABLE");
+for(var i=0;i<_66.length;i++){
+_66[i].style.display="none";
+_66[i].style.display="table";
+}
+return _65;
+};
+Xinha.getDoctype=function(doc){
+var d="";
+if(doc.doctype){
+d+="<!DOCTYPE "+doc.doctype.name+" PUBLIC ";
+d+=doc.doctype.publicId?"\""+doc.doctype.publicId+"\"":"";
+d+=doc.doctype.systemId?" \""+doc.doctype.systemId+"\"":"";
+d+=">";
+}
+return d;
+};
+

Added: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/about.html
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/about.html?rev=819248&view=auto
==============================================================================
--- roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/about.html (added)
+++ roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/about.html Sun Sep 27 03:11:38 2009
@@ -0,0 +1,301 @@
+<!--
+
+(c) dynarch.com, 2003-2004
+Author: Mihai Bazon, http://dynarch.com/mishoo
+Distributed as part of HTMLArea 3.0
+
+"You are not expected to understand this...  I don't neither."
+
+                      (from The Linux Kernel Source Code,
+                            ./arch/x86_64/ia32/ptrace.c:90)
+
+;-)
+
+-->
+
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>About Xinha</title>
+<script type="text/javascript" src="popup.js"></script>
+<script type="text/javascript">
+window.resizeTo(450, 365);
+var TABS = [];
+var CURRENT_TAB = 0;
+var CONTENT_HEIGHT_DIFF = 0;
+var CONTENT_WIDTH_DIFF = 0;
+function selectTab(idx) {
+  var ct = TABS[CURRENT_TAB];
+  ct.className = ct.className.replace(/\s*tab-current\s*/, ' ');
+  ct = TABS[CURRENT_TAB = idx];
+  ct.className += ' tab-current';
+  for (var i = TABS.length; --i >= 0;) {
+    var area = document.getElementById("tab-area-" + i);
+    if (CURRENT_TAB == i) {
+      area.style.display = "block";
+    } else {
+      area.style.display = "none";
+    }
+  }
+  document.body.style.visibility = "hidden";
+  document.body.style.visibility = "visible";
+  document.cookie = "HTMLAREA-ABOUT-TAB=" + idx;
+}
+var editor = null;
+function initDocument() {
+  editor = window.dialogArguments;
+  Xinha = window.opener.Xinha;
+
+  var plugins = document.getElementById("plugins");
+  var j = 0;
+  var html = "<table width='99%' cellpadding='2' cellspacing=2 style='margin-top: 1em; collapse-borders: collapse; border: 1px solid black;'>" +
+    "<thead><tr>" +
+    "<td>Name</td>" +
+    "<td>Developer</td>" +
+    "<td>Sponsored by</td>" +
+    "<td>License</td>" +
+    "</tr></thead><tbody>";
+  for (var i in editor.plugins) {
+    var info = editor.plugins[i];
+    if (typeof info != 'object' || !info.name || typeof info.name !='string')   continue;
+    html += "<tr><td>" + info.name + " v" + info.version + "</td>" +
+            "<td><a href='" + info.developer_url + "' target='_blank' title='Visit developer website'>" +
+      info.developer + "</a></td>" +
+      "<td><a href='" + info.sponsor_url + "' target='_blank' title='Visit sponsor website'>" +
+      info.sponsor + "</a></td>" +
+      "<td>" + info.license + "</td></tr>";
+    ++j;
+  }
+
+  if (j) {
+          html += "</tbody></table>" +
+      "<p>License \"htmlArea\" means that the plugin is distributed under the same terms " +
+      "as Xinha itself.</p>";
+    plugins.innerHTML = "<p>The following plugins have been loaded.</p>" + html;
+  } else {
+    plugins.innerHTML = "<p>No plugins have been loaded</p>";
+  }
+
+  plugins.innerHTML += "<p>User agent reports:<br/>" + navigator.userAgent + "</p>";
+
+  var content = document.getElementById("content");
+  if (window.innerHeight) {
+    CONTENT_HEIGHT_DIFF = window.innerHeight - 250;
+    CONTENT_WIDTH_DIFF = window.innerWidth - content.offsetWidth;
+  } else {
+    CONTENT_HEIGHT_DIFF = document.body.offsetHeight - 250;
+    CONTENT_WIDTH_DIFF = document.body.offsetWidth - 400;
+  }
+  window.onresize();
+  var bar = document.getElementById("tabbar");
+  j = 0;
+  for (var i = bar.firstChild; i; i = i.nextSibling) {
+    TABS.push(i);
+    i.__msh_tab = j;
+    i.onmousedown = function(ev) { selectTab(this.__msh_tab); Xinha._stopEvent(ev || window.event); };
+    var area = document.getElementById("tab-area-" + j);
+    if (/tab-current/.test(i.className)) {
+      CURRENT_TAB = j;
+      area.style.display = "block";
+    } else {
+      area.style.display = "none";
+    }
+    ++j;
+  }
+  if (document.cookie.match(/HTMLAREA-ABOUT-TAB=([0-9]+)/))
+    selectTab(RegExp.$1);
+}
+window.onresize = function() {
+  var content = document.getElementById("content");
+  if (window.innerHeight) {
+    content.style.height = (window.innerHeight - CONTENT_HEIGHT_DIFF) + "px";
+    content.style.width = (window.innerWidth - CONTENT_WIDTH_DIFF) + "px";
+  } else {
+    content.style.height = (document.body.offsetHeight - CONTENT_HEIGHT_DIFF) + "px";
+    //content.style.width = (document.body.offsetWidth - CONTENT_WIDTH_DIFF) + "px";
+  }
+}
+</script>
+<style>
+  html, body { height: 100%}
+  html,body,textarea,table
+  { font-family: helvetica,arial,sans-serif;
+    font-size: 11px; padding: 0px; margin: 0px;
+  }
+
+  body { padding: 0px; background: #f5f6f6; color: black; }
+  a:link, a:visited { color: #00f; }
+  a:hover           { color: #f00; }
+  a:active          { color: #f80; }
+  button            { font: 11px; border-width: 1px; background-color:#f5f6f6; color:black; }
+
+  p { margin: 0.5em 0px; }
+
+  #tdheader h1
+  { font: bold 40px "Staccato222 BT", cursive; margin: 0px; padding-left:4px; border-bottom: 1px solid #6a6; }
+  h1 { font: bold 20px; margin: 0px; border-bottom: 1px solid #6a6; }
+  h2 { font: bold 110%; margin: 0.7em 0px; }
+
+  thead {
+    font-weight: bold;
+    background-color: #CCC;
+  }
+
+  thead td { padding-left:4px; }
+
+  .buttons {
+    text-align: right; padding: 3px;
+    background-color: white;
+    border-top: 1px solid #555;
+  }
+
+  #tabbar {
+    position: relative;
+    left: 10px;
+  }
+  .tab {
+    color: #OOO;
+    cursor: pointer;
+    margin-left: -5px;
+    float: left; position: relative;
+    border: 1px solid #555;
+    top: -3px; left: -2px;
+    padding: 2px 10px 3px 10px;
+    border-top: none; background-color: #CCC;
+    -moz-border-radius: 0px 0px 4px 4px;
+    z-index: 0;
+  }
+  .tab-current
+  {
+    color: #000;
+    top: -4px;
+    background-color: #f5f6f6;
+    padding: 3px 10px 4px 10px;
+    z-index: 10;
+  }
+
+  li, ol, ul { margin-top: 0px; margin-bottom: 0px; }
+</style></head>
+<body onload="__dlg_init(); initDocument();"
+><table cellspacing="0" cellpadding="0" style="border-collapse: collapse;
+      width: 100%; height: 100%;">
+
+<tr style="height: 1em"><td id="tdheader">
+
+<h1><img src="../images/xinha_logo.gif" alt="Xinha" /></h1>
+
+</td></tr>
+<tr><td id="tdcontent" style="padding: 0.5em;">
+
+<div style="overflow: auto; height: 250px;" id="content">
+<div id="tab-areas">
+
+<div id="tab-area-0">
+
+  <p>A free WYSIWYG editor replacement for <tt>&lt;textarea&gt;</tt> fields.</p>
+  <p>Visit the <a href="http://xinha.gogo.co.nz/">Xinha Website</a> for more information.</p>
+
+  <p>
+   Use of Xinha is granted by the terms of the htmlArea License (based on BSD license)
+  </p>
+  <pre>
+   Copyright (c) 2005-2008 Xinha Developer Team and contributors
+  </pre>
+  <p>
+    Xinha was originally based on work by Mihai Bazon which is:
+  </p>
+  <pre>
+Copyright (c) 2003-2004 dynarch.com.
+Copyright (c) 2002-2003 interactivetools.com, inc.
+This copyright notice MUST stay intact for use.
+  </pre>
+</div>
+
+<div id="tab-area-1">
+
+  <p>
+   The development of Xinha would not have been possible without the original work of <a href="http://dynarch.com/">Mihai Bazon</a>, <a href="http://interactivetools.com" target="_blank">InteractiveTools.com</a>, and the many sponsors and contributors from around the world.
+  </p>
+
+</div>
+
+<div id="tab-area-2">
+<pre>htmlArea License (based on BSD license)
+Copyright (c) 2002-2004, interactivetools.com, inc.
+Copyright (c) 2003-2004 dynarch.com
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1) Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+2) Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+3) Neither the name of interactivetools.com, inc. nor the names of its
+   contributors may be used to endorse or promote products derived from this
+   software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.</pre>
+</div>
+
+<div id="tab-area-3">
+<div id="plugins">
+</div>
+</div>
+
+
+<div id="tab-area-4">
+  <script type="text/javascript">
+    if(window.opener && window.opener.Xinha)
+    {
+      var ver = window.opener.Xinha.version;
+      document.write('<pre>'
+                      + '\nRelease: ' + ver.Release + ' (' + ver.Date + ')'
+                      + '\nHead: ' + ver.Head
+                      + '\nRevision: ' + ver.Revision
+                      + '\nLast Changed By: ' + ver.RevisionBy
+                      + '\n' +
+                      '</pre>');
+    }
+    else
+    {
+      document.write('<pre>Version information unavailable.</pre>');
+    }
+  </script>
+</div>
+
+</div></div>
+
+
+</td></tr>
+<tr style="height: 1em"><td id="tdfooter">
+
+
+<div class="buttons">
+<div id="tabbar"
+><div class="tab tab-current"
+>About</div><div class="tab"
+>Thanks</div><div class="tab"
+>License</div><div class="tab"
+>Plugins</div><div class="tab"
+>Version</div></div>
+<button type="button" onclick="__dlg_close(null);">Close</button>
+</div>
+
+</td></tr></table>
+
+</body></html>

Added: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/blank.html
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/blank.html?rev=819248&view=auto
==============================================================================
--- roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/blank.html (added)
+++ roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/blank.html Sun Sep 27 03:11:38 2009
@@ -0,0 +1 @@
+<html><body onload="window.xinhaReadyToRoll = true;"></body></html>
\ No newline at end of file

Added: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/editor_help.html
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/editor_help.html?rev=819248&view=auto
==============================================================================
--- roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/editor_help.html (added)
+++ roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/editor_help.html Sun Sep 27 03:11:38 2009
@@ -0,0 +1,62 @@
+<html>
+ <head>
+  <title>Editor Help</title>
+  <script type="text/javascript" src="popup.js"></script>
+  <link rel="stylesheet" type="text/css" href="popup.css" />
+
+<script type="text/javascript">
+  window.resizeTo(400, 480);
+Xinha = window.opener.Xinha;
+function Init() {
+  __dlg_translate('Xinha');
+  __dlg_init();
+
+}
+
+
+function onCancel() {
+  __dlg_close(null);
+  return false;
+}
+
+</script>
+</head>
+
+<body class="dialog" onload="Init()">
+<div class="title">Xinha Help</div>
+<table width="100%" style="background: white none repeat scroll 0%;">
+  <thead style="border: 1px solid gray; background: silver none repeat scroll 0%;">
+  <tr>
+    <th colspan="2"> 
+      <span style="text-align:center">Keyboard shortcuts</span><br />
+      <span>The editor provides the following key combinations:</span>
+    </th>
+  </tr>
+  </thead>
+  <tbody>
+  <tr><td>ENTER</td><td><span>new paragraph</span>(&lt;P&gt;)</td></tr>
+  <tr><td>SHIFT-ENTER</td><td><span>insert linebreak</span>(&lt;BR&gt;)</td></tr>
+  <tr><td>CTRL-A</td><td><span>Select all</span></td></tr>
+  <tr><td>CTRL-B</td><td><span>Bold</span></td></tr>
+  <tr><td>CTRL-I</td><td><span>Italic</span></td></tr>
+  <tr><td>CTRL-U</td><td><span>Underline</span></td></tr>
+  <tr><td>CTRL-S</td><td><span>Strikethrough</span></td></tr>
+  <tr><td>CTRL-L</td><td><span>Justify Left</span></td></tr>
+  <tr><td>CTRL-E</td><td><span>Justify Center</span></td></tr>
+  <tr><td>CTRL-R</td><td><span>Justify Right</span></td></tr>
+  <tr><td>CTRL-J</td><td><span>Justify Full</span></td></tr>
+  <tr><td>CTRL-Z</td><td><span>Undoes your last action</span></td></tr>
+  <tr><td>CTRL-Y</td><td><span>Redoes your last action</span></td></tr>
+  <tr><td>CTRL-N</td><td><span>Set format to paragraph</span></td></tr>
+  <tr><td>CTRL-0 (zero)</td><td><span>Clean content pasted from Word</span></td></tr>
+  <tr><td>CTRL-1 .. CTRL-6</td><td><span>Headings</span> (&lt;h1&gt; .. &lt;h6&gt;)</td></tr>
+  <tr><td>CTRL-X</td><td><span>Cut selection</span></td></tr>
+  <tr><td>CTRL-C</td><td><span>Copy selection</span></td></tr>
+  <tr><td>CTRL-V</td><td><span>Paste from clipboard</span></td></tr>
+  </tbody>
+</table>
+<div id="buttons">
+  <button type="button" name="cancel" onclick="return onCancel();">Close</button>
+</div>
+</body>
+</html>
\ No newline at end of file

Added: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/popup.css
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/popup.css?rev=819248&view=auto
==============================================================================
--- roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/popup.css (added)
+++ roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/popup.css Sun Sep 27 03:11:38 2009
@@ -0,0 +1,39 @@
+html, body, .dialog {
+  background: ButtonFace;
+  color: ButtonText;
+  font: 11px Tahoma,Verdana,sans-serif;
+  margin: 0px;
+  padding: 0px;
+}
+body { padding: 5px; }
+form { padding: 0px; margin: 0px; }
+form p {
+  margin-top: 5px;
+  margin-bottom: 5px;
+}
+table {
+  font: 11px Tahoma,Verdana,sans-serif;
+}
+select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
+button { width: 70px; }
+table .label { text-align: right; width: 8em; }
+
+.fl { width: 9em; float: left; padding: 2px 5px; text-align: right; }
+.fr { width: 7em; float: left; padding: 2px 5px; text-align: right; }
+fieldset { padding: 0px 10px 5px 5px; }
+.space { padding: 2px; }
+.title { background: #ddf; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
+border-bottom: 1px solid black; letter-spacing: 2px;
+}
+.buttonColor {
+  padding: 1px;
+  cursor: default;
+  border: 1px solid;
+  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+}
+#buttons {
+      margin-top: 1em; 
+      border-top: 1px solid #999;
+      padding: 1em; 
+      text-align: right;
+}
\ No newline at end of file

Added: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/popup.js
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/popup.js?rev=819248&view=auto
==============================================================================
--- roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/popup.js (added)
+++ roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/popup.js Sun Sep 27 03:11:38 2009
@@ -0,0 +1,108 @@
+/* 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/popups/popup.js */
+if(typeof Xinha=="undefined"){
+Xinha=window.opener.Xinha;
+}
+HTMLArea=Xinha;
+function getAbsolutePos(el){
+var r={x:el.offsetLeft,y:el.offsetTop};
+if(el.offsetParent){
+var _3=getAbsolutePos(el.offsetParent);
+r.x+=_3.x;
+r.y+=_3.y;
+}
+return r;
+}
+function comboSelectValue(c,_5){
+var _6=c.getElementsByTagName("option");
+for(var i=_6.length;--i>=0;){
+var op=_6[i];
+op.selected=(op.value==_5);
+}
+c.value=_5;
+}
+function __dlg_onclose(){
+opener.Dialog._return(null);
+}
+function __dlg_init(_9,_a){
+__xinha_dlg_init(_a);
+}
+function __xinha_dlg_init(_b){
+if(window.__dlg_init_done){
+return true;
+}
+if(window.opener._editor_skin){
+var _c=document.getElementsByTagName("head")[0];
+var _d=document.createElement("link");
+_d.type="text/css";
+_d.href=window.opener._editor_url+"skins/"+window.opener._editor_skin+"/skin.css";
+_d.rel="stylesheet";
+_c.appendChild(_d);
+}
+if(!window.dialogArguments&&opener.Dialog._arguments){
+window.dialogArguments=opener.Dialog._arguments;
+}
+var _e=Xinha.pageSize(window);
+if(!_b){
+_b={width:_e.x,height:_e.y};
+}
+window.resizeTo(_b.width,_b.height);
+var _f=Xinha.viewportSize(window);
+window.resizeBy(0,_e.y-_f.y);
+if(_b.top&&_b.left){
+window.moveTo(_b.left,_b.top);
+}else{
+if(!Xinha.is_ie){
+var x=opener.screenX+(opener.outerWidth-_b.width)/2;
+var y=opener.screenY+(opener.outerHeight-_b.height)/2;
+}else{
+var x=(self.screen.availWidth-_b.width)/2;
+var y=(self.screen.availHeight-_b.height)/2;
+}
+window.moveTo(x,y);
+}
+Xinha.addDom0Event(document.body,"keypress",__dlg_close_on_esc);
+window.__dlg_init_done=true;
+}
+function __dlg_translate(_12){
+var _13=["input","select","legend","span","option","td","th","button","div","label","a","img"];
+for(var _14=0;_14<_13.length;++_14){
+var _15=document.getElementsByTagName(_13[_14]);
+for(var i=_15.length;--i>=0;){
+var _17=_15[i];
+if(_17.firstChild&&_17.firstChild.data){
+var txt=Xinha._lc(_17.firstChild.data,_12);
+if(txt){
+_17.firstChild.data=txt;
+}
+}
+if(_17.title){
+var txt=Xinha._lc(_17.title,_12);
+if(txt){
+_17.title=txt;
+}
+}
+if(_17.tagName.toLowerCase()=="input"&&(/^(button|submit|reset)$/i.test(_17.type))){
+var txt=Xinha._lc(_17.value,_12);
+if(txt){
+_17.value=txt;
+}
+}
+}
+}
+document.title=Xinha._lc(document.title,_12);
+}
+function __dlg_close(val){
+opener.Dialog._return(val);
+window.close();
+}
+function __dlg_close_on_esc(ev){
+ev||(ev=window.event);
+if(ev.keyCode==27){
+__dlg_close(null);
+return false;
+}
+return true;
+}
+

Added: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/select_color.html
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/select_color.html?rev=819248&view=auto
==============================================================================
--- roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/select_color.html (added)
+++ roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/popups/select_color.html Sun Sep 27 03:11:38 2009
@@ -0,0 +1,359 @@
+<!--<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-->
+<html><head><title>Select Color</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<script type="text/javascript" src="popup.js"></script>
+<script type="text/javascript">
+window.resizeTo(240, 182);
+// run on page load
+function Init()
+{
+  __dlg_translate('Xinha');
+  __dlg_init();
+  Xinha.addDom0Event(document, 'keypress', __dlg_close_on_esc);
+
+  var color = window.dialogArguments;
+  color = ValidateColor(color) || '000000';
+  View(color);
+}
+// preview color
+function View(color)
+{
+  document.getElementById("ColorPreview").style.backgroundColor = '#' + color;
+  document.getElementById("ColorHex").value = '#' + color;
+}
+// select color
+function Set(string)
+{
+  var color = ValidateColor(string);
+  if (color == null)
+  {
+    alert("Invalid color code: " + string);
+  }
+  else
+  {
+    View(color);
+    __dlg_close(color);
+  }
+}
+// return valid color code
+function ValidateColor(string)
+{
+  string = string || '';
+  string = string + "";
+  string = string.toUpperCase();
+  var chars = '0123456789ABCDEF';
+  var out   = '';
+  // remove invalid color chars
+  for (var i=0; i<string.length; i++)
+  {
+    var schar = string.charAt(i);
+    if (chars.indexOf(schar) != -1) out += schar;
+  }
+  // check length
+  if (out.length != 6) return null;
+  return out;
+}
+</script>
+<style type="text/css">
+body { background:buttonface; margin:0; padding:0; }
+form { margin:0; padding:0; }
+#containerpreview td { background:buttonface; }
+#preview { background-color:#000000; padding:1px; height:21px; width:50px; }
+#ColorPreview { height:100%; width:100%; }
+#ColorHex { font-size:12px; background:buttonface; border:0; }
+#palettecolor { cursor:pointer; }
+#palettecolor td { width:10px; height:10px; }
+</style>
+</head>
+<body class="dialog" onload="Init()">
+
+<form action="#" method="get" onsubmit="Set(document.getElementById('ColorHex').value); return false;">
+<table border="0" cellspacing="0" cellpadding="4" width="100%" id="containerpreview">
+ <tr>
+  <td style="vertical-align: middle;"><div id="preview"><div id="ColorPreview"></div></div></td>
+  <td style="vertical-align: middle;" width="100%"><input type="text" name="ColorHex"
+    id="ColorHex" value="" size=15></td>
+ </tr>
+</table>
+</form>
+
+<table id="palettecolor" border="0" cellspacing="1" cellpadding="0" width="100%" bgcolor="#000000">
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#003300" onmouseover="View('003300')" onclick="Set('003300')"></td>
+<td bgcolor="#006600" onmouseover="View('006600')" onclick="Set('006600')"></td>
+<td bgcolor="#009900" onmouseover="View('009900')" onclick="Set('009900')"></td>
+<td bgcolor="#00CC00" onmouseover="View('00CC00')" onclick="Set('00CC00')"></td>
+<td bgcolor="#00FF00" onmouseover="View('00FF00')" onclick="Set('00FF00')"></td>
+<td bgcolor="#330000" onmouseover="View('330000')" onclick="Set('330000')"></td>
+<td bgcolor="#333300" onmouseover="View('333300')" onclick="Set('333300')"></td>
+<td bgcolor="#336600" onmouseover="View('336600')" onclick="Set('336600')"></td>
+<td bgcolor="#339900" onmouseover="View('339900')" onclick="Set('339900')"></td>
+<td bgcolor="#33CC00" onmouseover="View('33CC00')" onclick="Set('33CC00')"></td>
+<td bgcolor="#33FF00" onmouseover="View('33FF00')" onclick="Set('33FF00')"></td>
+<td bgcolor="#660000" onmouseover="View('660000')" onclick="Set('660000')"></td>
+<td bgcolor="#663300" onmouseover="View('663300')" onclick="Set('663300')"></td>
+<td bgcolor="#666600" onmouseover="View('666600')" onclick="Set('666600')"></td>
+<td bgcolor="#669900" onmouseover="View('669900')" onclick="Set('669900')"></td>
+<td bgcolor="#66CC00" onmouseover="View('66CC00')" onclick="Set('66CC00')"></td>
+<td bgcolor="#66FF00" onmouseover="View('66FF00')" onclick="Set('66FF00')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#333333" onmouseover="View('333333')" onclick="Set('333333')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#000033" onmouseover="View('000033')" onclick="Set('000033')"></td>
+<td bgcolor="#003333" onmouseover="View('003333')" onclick="Set('003333')"></td>
+<td bgcolor="#006633" onmouseover="View('006633')" onclick="Set('006633')"></td>
+<td bgcolor="#009933" onmouseover="View('009933')" onclick="Set('009933')"></td>
+<td bgcolor="#00CC33" onmouseover="View('00CC33')" onclick="Set('00CC33')"></td>
+<td bgcolor="#00FF33" onmouseover="View('00FF33')" onclick="Set('00FF33')"></td>
+<td bgcolor="#330033" onmouseover="View('330033')" onclick="Set('330033')"></td>
+<td bgcolor="#333333" onmouseover="View('333333')" onclick="Set('333333')"></td>
+<td bgcolor="#336633" onmouseover="View('336633')" onclick="Set('336633')"></td>
+<td bgcolor="#339933" onmouseover="View('339933')" onclick="Set('339933')"></td>
+<td bgcolor="#33CC33" onmouseover="View('33CC33')" onclick="Set('33CC33')"></td>
+<td bgcolor="#33FF33" onmouseover="View('33FF33')" onclick="Set('33FF33')"></td>
+<td bgcolor="#660033" onmouseover="View('660033')" onclick="Set('660033')"></td>
+<td bgcolor="#663333" onmouseover="View('663333')" onclick="Set('663333')"></td>
+<td bgcolor="#666633" onmouseover="View('666633')" onclick="Set('666633')"></td>
+<td bgcolor="#669933" onmouseover="View('669933')" onclick="Set('669933')"></td>
+<td bgcolor="#66CC33" onmouseover="View('66CC33')" onclick="Set('66CC33')"></td>
+<td bgcolor="#66FF33" onmouseover="View('66FF33')" onclick="Set('66FF33')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#666666" onmouseover="View('666666')" onclick="Set('666666')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#000066" onmouseover="View('000066')" onclick="Set('000066')"></td>
+<td bgcolor="#003366" onmouseover="View('003366')" onclick="Set('003366')"></td>
+<td bgcolor="#006666" onmouseover="View('006666')" onclick="Set('006666')"></td>
+<td bgcolor="#009966" onmouseover="View('009966')" onclick="Set('009966')"></td>
+<td bgcolor="#00CC66" onmouseover="View('00CC66')" onclick="Set('00CC66')"></td>
+<td bgcolor="#00FF66" onmouseover="View('00FF66')" onclick="Set('00FF66')"></td>
+<td bgcolor="#330066" onmouseover="View('330066')" onclick="Set('330066')"></td>
+<td bgcolor="#333366" onmouseover="View('333366')" onclick="Set('333366')"></td>
+<td bgcolor="#336666" onmouseover="View('336666')" onclick="Set('336666')"></td>
+<td bgcolor="#339966" onmouseover="View('339966')" onclick="Set('339966')"></td>
+<td bgcolor="#33CC66" onmouseover="View('33CC66')" onclick="Set('33CC66')"></td>
+<td bgcolor="#33FF66" onmouseover="View('33FF66')" onclick="Set('33FF66')"></td>
+<td bgcolor="#660066" onmouseover="View('660066')" onclick="Set('660066')"></td>
+<td bgcolor="#663366" onmouseover="View('663366')" onclick="Set('663366')"></td>
+<td bgcolor="#666666" onmouseover="View('666666')" onclick="Set('666666')"></td>
+<td bgcolor="#669966" onmouseover="View('669966')" onclick="Set('669966')"></td>
+<td bgcolor="#66CC66" onmouseover="View('66CC66')" onclick="Set('66CC66')"></td>
+<td bgcolor="#66FF66" onmouseover="View('66FF66')" onclick="Set('66FF66')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#999999" onmouseover="View('999999')" onclick="Set('999999')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#000099" onmouseover="View('000099')" onclick="Set('000099')"></td>
+<td bgcolor="#003399" onmouseover="View('003399')" onclick="Set('003399')"></td>
+<td bgcolor="#006699" onmouseover="View('006699')" onclick="Set('006699')"></td>
+<td bgcolor="#009999" onmouseover="View('009999')" onclick="Set('009999')"></td>
+<td bgcolor="#00CC99" onmouseover="View('00CC99')" onclick="Set('00CC99')"></td>
+<td bgcolor="#00FF99" onmouseover="View('00FF99')" onclick="Set('00FF99')"></td>
+<td bgcolor="#330099" onmouseover="View('330099')" onclick="Set('330099')"></td>
+<td bgcolor="#333399" onmouseover="View('333399')" onclick="Set('333399')"></td>
+<td bgcolor="#336699" onmouseover="View('336699')" onclick="Set('336699')"></td>
+<td bgcolor="#339999" onmouseover="View('339999')" onclick="Set('339999')"></td>
+<td bgcolor="#33CC99" onmouseover="View('33CC99')" onclick="Set('33CC99')"></td>
+<td bgcolor="#33FF99" onmouseover="View('33FF99')" onclick="Set('33FF99')"></td>
+<td bgcolor="#660099" onmouseover="View('660099')" onclick="Set('660099')"></td>
+<td bgcolor="#663399" onmouseover="View('663399')" onclick="Set('663399')"></td>
+<td bgcolor="#666699" onmouseover="View('666699')" onclick="Set('666699')"></td>
+<td bgcolor="#669999" onmouseover="View('669999')" onclick="Set('669999')"></td>
+<td bgcolor="#66CC99" onmouseover="View('66CC99')" onclick="Set('66CC99')"></td>
+<td bgcolor="#66FF99" onmouseover="View('66FF99')" onclick="Set('66FF99')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#CCCCCC" onmouseover="View('CCCCCC')" onclick="Set('CCCCCC')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#0000CC" onmouseover="View('0000CC')" onclick="Set('0000CC')"></td>
+<td bgcolor="#0033CC" onmouseover="View('0033CC')" onclick="Set('0033CC')"></td>
+<td bgcolor="#0066CC" onmouseover="View('0066CC')" onclick="Set('0066CC')"></td>
+<td bgcolor="#0099CC" onmouseover="View('0099CC')" onclick="Set('0099CC')"></td>
+<td bgcolor="#00CCCC" onmouseover="View('00CCCC')" onclick="Set('00CCCC')"></td>
+<td bgcolor="#00FFCC" onmouseover="View('00FFCC')" onclick="Set('00FFCC')"></td>
+<td bgcolor="#3300CC" onmouseover="View('3300CC')" onclick="Set('3300CC')"></td>
+<td bgcolor="#3333CC" onmouseover="View('3333CC')" onclick="Set('3333CC')"></td>
+<td bgcolor="#3366CC" onmouseover="View('3366CC')" onclick="Set('3366CC')"></td>
+<td bgcolor="#3399CC" onmouseover="View('3399CC')" onclick="Set('3399CC')"></td>
+<td bgcolor="#33CCCC" onmouseover="View('33CCCC')" onclick="Set('33CCCC')"></td>
+<td bgcolor="#33FFCC" onmouseover="View('33FFCC')" onclick="Set('33FFCC')"></td>
+<td bgcolor="#6600CC" onmouseover="View('6600CC')" onclick="Set('6600CC')"></td>
+<td bgcolor="#6633CC" onmouseover="View('6633CC')" onclick="Set('6633CC')"></td>
+<td bgcolor="#6666CC" onmouseover="View('6666CC')" onclick="Set('6666CC')"></td>
+<td bgcolor="#6699CC" onmouseover="View('6699CC')" onclick="Set('6699CC')"></td>
+<td bgcolor="#66CCCC" onmouseover="View('66CCCC')" onclick="Set('66CCCC')"></td>
+<td bgcolor="#66FFCC" onmouseover="View('66FFCC')" onclick="Set('66FFCC')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#FFFFFF" onmouseover="View('FFFFFF')" onclick="Set('FFFFFF')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#0000FF" onmouseover="View('0000FF')" onclick="Set('0000FF')"></td>
+<td bgcolor="#0033FF" onmouseover="View('0033FF')" onclick="Set('0033FF')"></td>
+<td bgcolor="#0066FF" onmouseover="View('0066FF')" onclick="Set('0066FF')"></td>
+<td bgcolor="#0099FF" onmouseover="View('0099FF')" onclick="Set('0099FF')"></td>
+<td bgcolor="#00CCFF" onmouseover="View('00CCFF')" onclick="Set('00CCFF')"></td>
+<td bgcolor="#00FFFF" onmouseover="View('00FFFF')" onclick="Set('00FFFF')"></td>
+<td bgcolor="#3300FF" onmouseover="View('3300FF')" onclick="Set('3300FF')"></td>
+<td bgcolor="#3333FF" onmouseover="View('3333FF')" onclick="Set('3333FF')"></td>
+<td bgcolor="#3366FF" onmouseover="View('3366FF')" onclick="Set('3366FF')"></td>
+<td bgcolor="#3399FF" onmouseover="View('3399FF')" onclick="Set('3399FF')"></td>
+<td bgcolor="#33CCFF" onmouseover="View('33CCFF')" onclick="Set('33CCFF')"></td>
+<td bgcolor="#33FFFF" onmouseover="View('33FFFF')" onclick="Set('33FFFF')"></td>
+<td bgcolor="#6600FF" onmouseover="View('6600FF')" onclick="Set('6600FF')"></td>
+<td bgcolor="#6633FF" onmouseover="View('6633FF')" onclick="Set('6633FF')"></td>
+<td bgcolor="#6666FF" onmouseover="View('6666FF')" onclick="Set('6666FF')"></td>
+<td bgcolor="#6699FF" onmouseover="View('6699FF')" onclick="Set('6699FF')"></td>
+<td bgcolor="#66CCFF" onmouseover="View('66CCFF')" onclick="Set('66CCFF')"></td>
+<td bgcolor="#66FFFF" onmouseover="View('66FFFF')" onclick="Set('66FFFF')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#FF0000" onmouseover="View('FF0000')" onclick="Set('FF0000')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#990000" onmouseover="View('990000')" onclick="Set('990000')"></td>
+<td bgcolor="#993300" onmouseover="View('993300')" onclick="Set('993300')"></td>
+<td bgcolor="#996600" onmouseover="View('996600')" onclick="Set('996600')"></td>
+<td bgcolor="#999900" onmouseover="View('999900')" onclick="Set('999900')"></td>
+<td bgcolor="#99CC00" onmouseover="View('99CC00')" onclick="Set('99CC00')"></td>
+<td bgcolor="#99FF00" onmouseover="View('99FF00')" onclick="Set('99FF00')"></td>
+<td bgcolor="#CC0000" onmouseover="View('CC0000')" onclick="Set('CC0000')"></td>
+<td bgcolor="#CC3300" onmouseover="View('CC3300')" onclick="Set('CC3300')"></td>
+<td bgcolor="#CC6600" onmouseover="View('CC6600')" onclick="Set('CC6600')"></td>
+<td bgcolor="#CC9900" onmouseover="View('CC9900')" onclick="Set('CC9900')"></td>
+<td bgcolor="#CCCC00" onmouseover="View('CCCC00')" onclick="Set('CCCC00')"></td>
+<td bgcolor="#CCFF00" onmouseover="View('CCFF00')" onclick="Set('CCFF00')"></td>
+<td bgcolor="#FF0000" onmouseover="View('FF0000')" onclick="Set('FF0000')"></td>
+<td bgcolor="#FF3300" onmouseover="View('FF3300')" onclick="Set('FF3300')"></td>
+<td bgcolor="#FF6600" onmouseover="View('FF6600')" onclick="Set('FF6600')"></td>
+<td bgcolor="#FF9900" onmouseover="View('FF9900')" onclick="Set('FF9900')"></td>
+<td bgcolor="#FFCC00" onmouseover="View('FFCC00')" onclick="Set('FFCC00')"></td>
+<td bgcolor="#FFFF00" onmouseover="View('FFFF00')" onclick="Set('FFFF00')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#00FF00" onmouseover="View('00FF00')" onclick="Set('00FF00')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#990033" onmouseover="View('990033')" onclick="Set('990033')"></td>
+<td bgcolor="#993333" onmouseover="View('993333')" onclick="Set('993333')"></td>
+<td bgcolor="#996633" onmouseover="View('996633')" onclick="Set('996633')"></td>
+<td bgcolor="#999933" onmouseover="View('999933')" onclick="Set('999933')"></td>
+<td bgcolor="#99CC33" onmouseover="View('99CC33')" onclick="Set('99CC33')"></td>
+<td bgcolor="#99FF33" onmouseover="View('99FF33')" onclick="Set('99FF33')"></td>
+<td bgcolor="#CC0033" onmouseover="View('CC0033')" onclick="Set('CC0033')"></td>
+<td bgcolor="#CC3333" onmouseover="View('CC3333')" onclick="Set('CC3333')"></td>
+<td bgcolor="#CC6633" onmouseover="View('CC6633')" onclick="Set('CC6633')"></td>
+<td bgcolor="#CC9933" onmouseover="View('CC9933')" onclick="Set('CC9933')"></td>
+<td bgcolor="#CCCC33" onmouseover="View('CCCC33')" onclick="Set('CCCC33')"></td>
+<td bgcolor="#CCFF33" onmouseover="View('CCFF33')" onclick="Set('CCFF33')"></td>
+<td bgcolor="#FF0033" onmouseover="View('FF0033')" onclick="Set('FF0033')"></td>
+<td bgcolor="#FF3333" onmouseover="View('FF3333')" onclick="Set('FF3333')"></td>
+<td bgcolor="#FF6633" onmouseover="View('FF6633')" onclick="Set('FF6633')"></td>
+<td bgcolor="#FF9933" onmouseover="View('FF9933')" onclick="Set('FF9933')"></td>
+<td bgcolor="#FFCC33" onmouseover="View('FFCC33')" onclick="Set('FFCC33')"></td>
+<td bgcolor="#FFFF33" onmouseover="View('FFFF33')" onclick="Set('FFFF33')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#0000FF" onmouseover="View('0000FF')" onclick="Set('0000FF')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#990066" onmouseover="View('990066')" onclick="Set('990066')"></td>
+<td bgcolor="#993366" onmouseover="View('993366')" onclick="Set('993366')"></td>
+<td bgcolor="#996666" onmouseover="View('996666')" onclick="Set('996666')"></td>
+<td bgcolor="#999966" onmouseover="View('999966')" onclick="Set('999966')"></td>
+<td bgcolor="#99CC66" onmouseover="View('99CC66')" onclick="Set('99CC66')"></td>
+<td bgcolor="#99FF66" onmouseover="View('99FF66')" onclick="Set('99FF66')"></td>
+<td bgcolor="#CC0066" onmouseover="View('CC0066')" onclick="Set('CC0066')"></td>
+<td bgcolor="#CC3366" onmouseover="View('CC3366')" onclick="Set('CC3366')"></td>
+<td bgcolor="#CC6666" onmouseover="View('CC6666')" onclick="Set('CC6666')"></td>
+<td bgcolor="#CC9966" onmouseover="View('CC9966')" onclick="Set('CC9966')"></td>
+<td bgcolor="#CCCC66" onmouseover="View('CCCC66')" onclick="Set('CCCC66')"></td>
+<td bgcolor="#CCFF66" onmouseover="View('CCFF66')" onclick="Set('CCFF66')"></td>
+<td bgcolor="#FF0066" onmouseover="View('FF0066')" onclick="Set('FF0066')"></td>
+<td bgcolor="#FF3366" onmouseover="View('FF3366')" onclick="Set('FF3366')"></td>
+<td bgcolor="#FF6666" onmouseover="View('FF6666')" onclick="Set('FF6666')"></td>
+<td bgcolor="#FF9966" onmouseover="View('FF9966')" onclick="Set('FF9966')"></td>
+<td bgcolor="#FFCC66" onmouseover="View('FFCC66')" onclick="Set('FFCC66')"></td>
+<td bgcolor="#FFFF66" onmouseover="View('FFFF66')" onclick="Set('FFFF66')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#FFFF00" onmouseover="View('FFFF00')" onclick="Set('FFFF00')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#990099" onmouseover="View('990099')" onclick="Set('990099')"></td>
+<td bgcolor="#993399" onmouseover="View('993399')" onclick="Set('993399')"></td>
+<td bgcolor="#996699" onmouseover="View('996699')" onclick="Set('996699')"></td>
+<td bgcolor="#999999" onmouseover="View('999999')" onclick="Set('999999')"></td>
+<td bgcolor="#99CC99" onmouseover="View('99CC99')" onclick="Set('99CC99')"></td>
+<td bgcolor="#99FF99" onmouseover="View('99FF99')" onclick="Set('99FF99')"></td>
+<td bgcolor="#CC0099" onmouseover="View('CC0099')" onclick="Set('CC0099')"></td>
+<td bgcolor="#CC3399" onmouseover="View('CC3399')" onclick="Set('CC3399')"></td>
+<td bgcolor="#CC6699" onmouseover="View('CC6699')" onclick="Set('CC6699')"></td>
+<td bgcolor="#CC9999" onmouseover="View('CC9999')" onclick="Set('CC9999')"></td>
+<td bgcolor="#CCCC99" onmouseover="View('CCCC99')" onclick="Set('CCCC99')"></td>
+<td bgcolor="#CCFF99" onmouseover="View('CCFF99')" onclick="Set('CCFF99')"></td>
+<td bgcolor="#FF0099" onmouseover="View('FF0099')" onclick="Set('FF0099')"></td>
+<td bgcolor="#FF3399" onmouseover="View('FF3399')" onclick="Set('FF3399')"></td>
+<td bgcolor="#FF6699" onmouseover="View('FF6699')" onclick="Set('FF6699')"></td>
+<td bgcolor="#FF9999" onmouseover="View('FF9999')" onclick="Set('FF9999')"></td>
+<td bgcolor="#FFCC99" onmouseover="View('FFCC99')" onclick="Set('FFCC99')"></td>
+<td bgcolor="#FFFF99" onmouseover="View('FFFF99')" onclick="Set('FFFF99')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#00FFFF" onmouseover="View('00FFFF')" onclick="Set('00FFFF')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#9900CC" onmouseover="View('9900CC')" onclick="Set('9900CC')"></td>
+<td bgcolor="#9933CC" onmouseover="View('9933CC')" onclick="Set('9933CC')"></td>
+<td bgcolor="#9966CC" onmouseover="View('9966CC')" onclick="Set('9966CC')"></td>
+<td bgcolor="#9999CC" onmouseover="View('9999CC')" onclick="Set('9999CC')"></td>
+<td bgcolor="#99CCCC" onmouseover="View('99CCCC')" onclick="Set('99CCCC')"></td>
+<td bgcolor="#99FFCC" onmouseover="View('99FFCC')" onclick="Set('99FFCC')"></td>
+<td bgcolor="#CC00CC" onmouseover="View('CC00CC')" onclick="Set('CC00CC')"></td>
+<td bgcolor="#CC33CC" onmouseover="View('CC33CC')" onclick="Set('CC33CC')"></td>
+<td bgcolor="#CC66CC" onmouseover="View('CC66CC')" onclick="Set('CC66CC')"></td>
+<td bgcolor="#CC99CC" onmouseover="View('CC99CC')" onclick="Set('CC99CC')"></td>
+<td bgcolor="#CCCCCC" onmouseover="View('CCCCCC')" onclick="Set('CCCCCC')"></td>
+<td bgcolor="#CCFFCC" onmouseover="View('CCFFCC')" onclick="Set('CCFFCC')"></td>
+<td bgcolor="#FF00CC" onmouseover="View('FF00CC')" onclick="Set('FF00CC')"></td>
+<td bgcolor="#FF33CC" onmouseover="View('FF33CC')" onclick="Set('FF33CC')"></td>
+<td bgcolor="#FF66CC" onmouseover="View('FF66CC')" onclick="Set('FF66CC')"></td>
+<td bgcolor="#FF99CC" onmouseover="View('FF99CC')" onclick="Set('FF99CC')"></td>
+<td bgcolor="#FFCCCC" onmouseover="View('FFCCCC')" onclick="Set('FFCCCC')"></td>
+<td bgcolor="#FFFFCC" onmouseover="View('FFFFCC')" onclick="Set('FFFFCC')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#FF00FF" onmouseover="View('FF00FF')" onclick="Set('FF00FF')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#9900FF" onmouseover="View('9900FF')" onclick="Set('9900FF')"></td>
+<td bgcolor="#9933FF" onmouseover="View('9933FF')" onclick="Set('9933FF')"></td>
+<td bgcolor="#9966FF" onmouseover="View('9966FF')" onclick="Set('9966FF')"></td>
+<td bgcolor="#9999FF" onmouseover="View('9999FF')" onclick="Set('9999FF')"></td>
+<td bgcolor="#99CCFF" onmouseover="View('99CCFF')" onclick="Set('99CCFF')"></td>
+<td bgcolor="#99FFFF" onmouseover="View('99FFFF')" onclick="Set('99FFFF')"></td>
+<td bgcolor="#CC00FF" onmouseover="View('CC00FF')" onclick="Set('CC00FF')"></td>
+<td bgcolor="#CC33FF" onmouseover="View('CC33FF')" onclick="Set('CC33FF')"></td>
+<td bgcolor="#CC66FF" onmouseover="View('CC66FF')" onclick="Set('CC66FF')"></td>
+<td bgcolor="#CC99FF" onmouseover="View('CC99FF')" onclick="Set('CC99FF')"></td>
+<td bgcolor="#CCCCFF" onmouseover="View('CCCCFF')" onclick="Set('CCCCFF')"></td>
+<td bgcolor="#CCFFFF" onmouseover="View('CCFFFF')" onclick="Set('CCFFFF')"></td>
+<td bgcolor="#FF00FF" onmouseover="View('FF00FF')" onclick="Set('FF00FF')"></td>
+<td bgcolor="#FF33FF" onmouseover="View('FF33FF')" onclick="Set('FF33FF')"></td>
+<td bgcolor="#FF66FF" onmouseover="View('FF66FF')" onclick="Set('FF66FF')"></td>
+<td bgcolor="#FF99FF" onmouseover="View('FF99FF')" onclick="Set('FF99FF')"></td>
+<td bgcolor="#FFCCFF" onmouseover="View('FFCCFF')" onclick="Set('FFCCFF')"></td>
+<td bgcolor="#FFFFFF" onmouseover="View('FFFFFF')" onclick="Set('FFFFFF')"></td>
+</tr>
+</table>
+
+</body></html>
\ No newline at end of file

Added: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/release-notes.txt
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/release-notes.txt?rev=819248&view=auto
==============================================================================
--- roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/release-notes.txt (added)
+++ roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/release-notes.txt Sun Sep 27 03:11:38 2009
@@ -0,0 +1,212 @@
+Xinha - The Community-Built Online HTML Editor
+
+For bug reports, forum, and updates go to 
+http://xinha.org
+
+Release History
+Xinha 0.95
+Bugs Fixed
+ * fixed #1040 htmlRemoveTags doesn't work in IE 
+ * fixed #645 IE Save as function only saves the original html 
+ * fixed #1136 FF3 Linux select boxes in toolbar are too small 
+ * fixed #1100 Extended File Manager - Error after opening window
+ * fixed #1103 [TransformInnerHTML] IE breaks singlet attributes starting with "no"
+ * fixed #1086 Repeated javascript insertion in onclick attributes
+ * fixed #1094 IE throws error in Xinha.loadStyle function
+ * fixed  #1117 IE returns javascript error -1072896658
+ * fixed #993 PageStyle to override styles in PageStylesheets
+ * #1112 switching between modes leaves strange characters in source 
+ * fixed #1128 loading fails when Fullscreen tried to load as plugin
+ * fixed #1126 Percent (%) in URL prevent stripSelfNamedAnchors from working  
+ * fixed #1120 HTML select overlaps color picker in IE6
+ * #1115 + #1127 fixed compatibility issues with Firefox 3
+ * #961 +  #1130 changed behaviour of xinha_config.baseHref
+ * fixed #645 Save as function only saves the original html
+ * fixed #1040 htmlRemoveTags doesn't work in IE
+ * fixed #1015 Mozilla shows scrollbars on click in Stylist 
+ * #918 removed mozParaHandler dirty as it had been broken for a long time
+ * fixed #1015 Mozilla shows scrollbars on click in Stylist 
+ * fixed #1148 HTML entities break when cursor is inside when switching from HTML to WYSIWYG 
+ * fixed #1151 form action always made absolute
+ * fixed #1155 InsertAnchor broken in IE 7
+ * fixed #1158 [ImageManager] in Japanese environment, an error occurs by reading of lang/ja.js in IE6/7 
+ * fixed #1152 Plugins using surroundHTML (EditTag, LangMarks) no longer work in IE7
+ * fixed #1161 permission error from ColorPicker.js
+ * fixed #1181 [TableOperations] Table Options dialog first entry for border style faulty
+ * fixed #1185 [TableOperations] IE: style float broken
+ * fixed #1197 [Linker] IE shows bug in line 262
+ * fixed #1200 [Linker] Dialog does not show if scanned folder empty
+ 
+Enhancements
+ * #1143 add Safari support
+ * #938  add Opera support
+ * #1138 added API functions Xinha.getEditor(), Xinha.prototype.getPluginInstance(), Xinha.addOnloadHandler() 
+ * #1137 [Equation] FF3 fixes & improved way of avoiding formula changes in editor
+ * #1150 synchronize "Remove Format" between browsers
+ * added plugin PreserveScripts for enhanced editing of pages containing PHP and/or JavaScript ()
+ * Loading message facelift
+ * added XinhaLoader.js for enhanced user experience through early loading message
+ * made Xinha.makeEditors accept a DOM reference to the textarea instead of the id as part of xinha_editors array (#1105)
+ * #1123 Allow return of PHP array from xinha_pass_to_php_backend
+ * [Linker] scan.php: Allow specification of base url to use (so that a subdirectory can be used as $dir and return appropriate urls to the files (prefixing the url
+ * [ExtendedFileManager] new Version
+ * #961 +  #1130 changed behaviour of xinha_config.baseHref
+ * #1137 [Equation] improved way of avoiding formula changes in editor
+ * #442 removed alert "Your Document is not well formed..."
+ * #1119 disabled Firefox 2 spell check when ContextMenu is enabled 
+ * added a plugin "GenericPlugin" as a democase for plugin event handlers
+ * #1171 [SmartReplace] now also replaces three dots with an ellipsis
+ * #1119 [ContextMenu] optionally switch of Firefox Spell check
+ * #1172 [LangMarks] make available languages configurable
+ * enhanced behaviour when xinha_config.baseHref is set to another server
+ * #1195 Allow to specify an external url to load a plugin from
+ * #1201 Add inwardHtml/outwardHtml functions to Config object
+ 
+I18n
+ * #1109 Spanish language extended
+ * #1116 [ExtendedFileManager] added French translation
+ * #853 updated Translation for farsi
+ * fixed wrong encoding in Spanish language file 
+ * fixed no bold/italic/underline button images in Spanish
+ *  #1194 [ExtendedFileManager] updated French translation
+
+ 
+Xinha 0.94
+ * Ticket #1093 [InsertSmiley] remove smiley gifs from trunk
+ * fixed Ticket #1019 Cusor not jumping to editable part of window when clicked in IE
+ * [TableOperations] Add config option to not dispaly toolbar buttons
+ * fixed Ticket #1021  Prevent ExtendedFileManager from masking ImageManager
+ * fixed Ticket #1023 [ImageManager] Add config item to allow the advanced image options to be hidden from the user
+ * fixed Ticket #1026 fix problems with loading skins
+ * fixed Tickets #1030 & #1031: slow loading large pages in IE
+ * fixed Ticket #1034 [ExtendedFileManager] Color pickers shown when use_color_pickers is false
+ * fixed Ticket #1035 [TransformInnerHTML] tags corruptedunder certain circumstances
+ * fixed Ticket #1036 [ExtendedFileManager] window is only resized after all thumbnails have benn loaded, which can take quite some time
+ * fixed Ticket #1039 Firefox full page adds multiple paragraphs after view source
+ * fixed Ticket #1019 Cusor not jumping to editable part of window when clicked in IE7
+ * fixed Ticket #1046 Error in IE 6 when switching from text to wysiwyg
+ * [DOMwalk] linebreaks inserted before <br />s
+ * catch error in IE when trying to restore selection on non-displayed area
+ * fixed Ticket #973 Error switching wysiwyg/html including javascript file on the code
+ * fixed Ticket #1028  - [Linker] automatically (attempt to) work around an issue with mod_security being triggered because of the charset on our POST requests
+ * fixed Ticket #1055 [Stylist] Inappropriate styles (for other tags) are shown
+ * added Dutch language files
+ * added new hook 'onBeforeSubmit' for firePluginEvent()
+ * added new hook 'onBeforeUnload' for firePluginEvent()
+ * fixed Ticket #1048 Full Screen plugin doesn't load if many editors on page
+ * fixed Ticket #1053 ListType plugin doesn't work in panel config with multiple editors
+ * fixed Ticket #1026 Skins referenced with <link>-tags don't work anymore
+ * fixed Ticket #1059 [Equation] loosing formula onsubmit
+ * fixed Ticket #1060 [Equation] various updates
+ * [Equation] preserve formula on reload in Mozilla
+ * [Equation] updated ASCIIMathML.js
+ * [Skin:silva] padding and border on textarea make the textmode too wide 
+ * fixed Ticket#1001 Editor loads a bunch of null urls in ie
+ * fixed Ticket #1068 [TranformInnerHTML] newlines added after </script>
+ * fixed Ticket#1069 Editor document URL prefixed to any href that only consists of URL parameters
+ * added Thai translation for core
+ * added complete Portuguese Brazilian translation
+ * updated lc_parse script
+ * fixed Ticket #1071 [ExtendedFileManager] external image URL image inserted with width/height 0, amking it invisible
+ * fixed Ticket #1074 [SuperClean] throws warnings in PHP 5
+ * fixed Ticket #1079 [DynamicCSS] lists Xinha internal CSS
+ * fixed Ticket #1080 Some plugins leave behind stylesheet links in fullpage mode
+ * fixed Ticket #1083 Convert URLs to links - Error
+ * fixed Ticket #1084 URL auto-linking (Gecko): URLs with user:password@domain.tld falsely recognized as email address
+ * fixed Ticket #1085 URL auto-linking (Gecko): IP numbers don't work
+ * fixed Ticket #1081 Control character is not being removed inside SCRIPT tags or HEAD when switching from textmode to htmlmode
+ * fixed Ticket #1078 [InsertImage] spacing attributes: inconsistent behaviour when editing image
+ * fixed Ticket #1089 [Color Picker] Localize OK Label
+ * fixed Ticket #1091 [SaveSubmit] does not correctly submit value of checkboxes and radio buttons
+
+Xinha 0.93
+ - fixed Ticket #967 Font Color Picker stops working after using one of ImageManager, ExtendedFileManager, FullPage, or HorizontalRule
+ - fixed Ticket #965 When switching between Xinhas in the same page, in textmode toolbar stays disabled
+ - fixwd Ticket #963 DOMwalk IE: head tag attributes without quotes and closing slash
+ - Ticket #962 DOMwalk Mozilla: improved source indentation
+ - fixed Ticket #957 If item in in xinha_editors is not a textarea: skip gracefully
+ - fixed Ticket #900: catch an fatal error that occured sometimes when switching between modes in fullpage mode in Mozilla
+ - fixed Ticket #969 DOMwalk Gecko: line breaks rendered as <br>s inside <pre> blocks
+ - fixed Ticket #976 Loading message misplaced in IE7
+ - fixed Ticket #977 TableOperations toolbar off-place in ext_example.html
+ - fixed Ticket #978 defining a padding for <td>s in global css affects Xinha framework
+ - Ticket #979 improve checking for non-supported browsers
+ - fixed Ticket #934 SuperClean plugin returns just quotation when executed on localhost
+ - Ticket #929 Save changes on page unload fixed for Mozilla 
+ - fixed Ticket #980 ImageManager color format bug
+ - fixed Ticket #981 No doctype in iframe content document/ editor always in quirks mode
+ - fixed Ticket #543 Stylist Panel overflow broken
+ - Ticket #983 added id for iframe
+ - fixed Ticket #984 !ExtendedFileManager produces php warning
+ - optimized icon file size
+ - fixed !JavaScript error in !ImageManager/!ExtendedFileManager image editor
+ - Ticket #908* Prompts broken in IE7: fixed for EFM, !ImageManager & !TableOperations
+ - Fixes for TableOperations, tickets #82, #908*, #912 and #947
+ - fixed Ticket #998* whitespace added before and/or after content (in non-fullpage mode)
+ - fixed slow unloading in Mozilla
+ - Fix focus problem when switching from html to wysiwyg in Gecko. See ticket #900.
+ - fixed toolbar floating issue
+ - fixed #1003 HTML length limited to 1024 characters with plugin CharCounter
+ - Ticket #1000 new public methods for getting/setting editor content
+ - fixed #735 - IE eating scripts and comments at the beginning of pages.
+ - Added new config variables to set iframe width if less than editor width (ticket:322) and set alignment of toolbar buttons.
+ - added Basque translation for XinhaCore
+ - prevent an error if server is set to parse .js files as PHP
+ - Ticket #127 plugin HtmlEntities: Entities.js  file corrupt
+
+Xinha 0.92beta
+ - fixed Ticket #831 stop empty anchors from being removed
+ - Make htmlarea.js just load XinhaCore.js instead of being a copy of it.
+ - fixed Ticket #445 Toggle TableBorder doesn't work if this.fullpage=true or using FullPage plugin
+ - fixed Ticket #551 shape and coord attributes of area element are ignored by IE
+ - fixed Ticket #650 SpellChecker is not compatible with FullPage plugin
+ - fixed Ticket #816 CharacterMap and ListType panel modes make editor jump to top in IE
+ - fixed Ticket #570 change behaviour of justify when an image is selected to make the image float left/right, 
+   click the justify button again to undo it
+ - fixed Ticket #891 noscript content got escaped
+ - fixed Ticket #857 Firefox fails to load in fullpage mode when <link ..> tag in wrong place.
+ - fixed Ticket #841 Spell Checker - Won't return to xinha.
+ - fixed Ticket #914 All buttons stay grey & this.getParentElement is not a function message when not calling
+   Xinha.loadPlugins() in xinha_init function
+ - fixed Ticket #911 Background color does not work in Firefox
+ - fixed Ticket #912 an error is thrown in Mozilla when clicking merge cells button and fewer than 2 cells are selected
+ - fixed Ticket #816 CharacterMap and ListType panel modes make editor jump to top in IE
+ - fixed Ticket #917 getHTMLWrapper in IE renders attributes like _stylist_usedtobe="[object Object]"
+ - fixed Ticket #556 stripBaseHref didn't work without baseHref defined explicitly.
+ - Update InsertPicture plugin Update
+ - fixed Ticket #921 EFM extended file manager - iframe height problem (IE)
+ - Ticket #923 colorPicker face lift & localisation
+ - fixed Ticket #924 EFM + ImageManager re-transforming of url to original image after automatic resize broken
+ - Ticket #900- retain editing position position between modes
+ - fixed Ticket #928 ImageManager fails if (another) Files.php exists in include path
+ - fixed Ticket #935 EFM demo_images php upload allowed: possible security risk
+ - Ticket #939 Japanese langage support 
+ - fixed Ticket #3 Horizontal Rule Selection
+ - Plugin ExtendedFileManager: added doc to allowed upload extensions
+ - Plugin PasteText update
+ - Plugin HtmlEntities: default preset iso-8859-1
+ - fixed Ticket #948 IE: inline styles are not rendered by DOMwalk getHTML()
+ - Plugin HorizontalRule update
+ - Plugin SaveSubmit update
+ - Plugin Linker update
+ - fixed Ticket #823 editor contents was not submitted when using JavaScript form.submit() without prior form.onsubmit()
+ - fixed Ticket #459 all body attributes removed in full page mode in FireFox
+ - _editor_url is now converted to absolute if it is relative. 
+ - fixed Ticket #594 IE: insertHTML() inserts HTML outside editor when editor is not focussed
+ - Ticket #954 FullScreen mode can now be called programmatically or on startup with or without button
+ - fixed Ticket #321 FullScreen : select elements show through in IE6 
+ - fixed Ticket #953 Statusbar has ugly white gap at the bottom when switching back from full screen in IE 
+ - fixed Ticket #952 FullScreen: scrollbars don't disappear in IE in QuirksMode
+ - fixed Ticket #603 Popop Dialog Height problems
+ - fixed Ticket #955 DOMwalk getHTML outputs empty attribute with value "true" instead of attribute name and some are skipped at all
+ 
+Xinha 0.91beta
+ - changed namespace from HTMLArea to Xinha
+ - the core file is now named XinhaCore.js instead of htmlarea.js,
+   please change your pages accordingly (the htmlarea.js will be removed!)
+ - the color picker script is now loaded on demand to reduce initial loading time
+ 
+Xinha 0.9beta
+This equals Xinha revision 635 of Jan 11 2007
+ - All JavaScript files over 2kb have been compressed using the dojo JavaScript compressor
+ - All gifs have been optimized using Trout's GIF Optimizer version 2.3
\ No newline at end of file

Added: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/blue-look/button-background.png
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/blue-look/button-background.png?rev=819248&view=auto
==============================================================================
Binary file - no diff available.

Propchange: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/blue-look/button-background.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/blue-look/separator.gif
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/blue-look/separator.gif?rev=819248&view=auto
==============================================================================
Binary file - no diff available.

Propchange: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/blue-look/separator.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/blue-look/skin.css
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/blue-look/skin.css?rev=819248&view=auto
==============================================================================
--- roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/blue-look/skin.css (added)
+++ roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/blue-look/skin.css Sun Sep 27 03:11:38 2009
@@ -0,0 +1,98 @@
+.htmlarea .toolbar, .htmlarea .toolbar .button
+{
+  background-color:#f7f8fd;
+}
+
+.htmlarea .toolbarRow
+{
+  margin-top:2px;
+  margin-bottom:2px;
+  border:1px dotted #DEDEDE;
+  padding:2px;
+  -moz-border-radius:3px;
+  margin:4px;
+  height:25px;
+}
+
+.htmlarea .toolbar .button
+{
+  background-image: url(button-background.png);
+  width:20px;
+  height:20px;
+  padding:0px;
+  border:1px solid #f7f8fd;
+}
+
+.buttonImageContainer
+{
+  position:relative;
+  left:1px;
+  top :1px;
+}
+
+.htmlarea .toolbar .separator {
+  margin:0px;
+  background-image: url(separator.gif);
+  border:1px #f7f8fd;
+  width:   7px;
+  height: 20px;
+  padding: 0px;
+}
+
+.htmlarea .toolbar a.button:hover
+{
+  border: 1px solid;
+  border-color: white #CCC #CCC white;
+}
+
+.htmlarea .toolbar a.buttonDisabled:hover
+{
+  border-color: #f7f8fd;
+}
+
+.htmlarea .toolbar .button.buttonActive,
+.htmlarea .toolbar .button.buttonPressed
+{
+  border: 1px solid;
+  border-color: #CCC white white #CCC;
+}
+
+.htmlarea .statusBar {
+  border-color: #CCC white white #CCC;
+  padding: 0px;
+  height:20px;
+  background-image: url(button-background.png);
+  background-repeat: repeat-x;
+  background-color: #f7f8fd;
+  color: ButtonText;
+  font: 11px helvetica,arial,sans-serif;
+}
+
+.htmlarea .statusBar .statusBarTree
+{
+  display:block;
+  margin: 3px;
+}
+
+.htmlarea .statusBar .statusBarTree a
+{
+  padding: 2px 5px;
+  color: #00f;
+  text-decoration:none;
+}
+
+.htmlarea .panel h1
+{
+  background-image: url('button-background.png');
+  background-repeat: repeat-x;
+  background-color: #f7f8fd;
+}
+.dialog {
+  background-color:#f7f8fd;
+}
+.dialog .title {
+  background-image: url(button-background.png);
+}  
+.dialog button{
+  background-image: url(button-background.png);
+}
\ No newline at end of file

Added: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/green-look/button-background.gif
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/green-look/button-background.gif?rev=819248&view=auto
==============================================================================
Binary file - no diff available.

Propchange: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/green-look/button-background.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/green-look/separator.gif
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/green-look/separator.gif?rev=819248&view=auto
==============================================================================
Binary file - no diff available.

Propchange: roller/trunk/apps/weblogger/web/roller-ui/authoring/editors/xinha-0.95/skins/green-look/separator.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream