function addChars(tag,p){var str=tag.data;if(str!=null){for(var i=0;i<str.length;i++){var obj=new Object();obj.ch=str.charAt(i);obj.tag=tag;obj.pos=i;obj.parent=p;XCHARS[XINDEX]=obj;XINDEX++;}}}function atext(tag,level,parent){if(tag.nodeType==1){if(tag.hasChildNodes()){for(var i=0;i<tag.childNodes.length;i++){atext(tag.childNodes[i],level+1,tag);}}else{addChars(tag,parent);}}else{addChars(tag,parent);}}function removeEmptyTags(tag){if(tag.nodeType==1&&tag.hasChildNodes()){for(var i=0;i<tag.childNodes.length;i++){var child=tag.childNodes[i];if(child.data==null||child.data.length==null){}else if(child.data.length==0&&!tag.hasChildNodes()){tag.removeChild(child);}else{removeEmptyTags(child);}}}}function equals(ch1,ch2){if(ch1.charCodeAt(0)==160)ch1=' '.charAt(0);if(ch2!=null&&ch2.charCodeAt(0)==160)ch2=' '.charAt(0);return(ch1==ch2);}function mergeText(editID,fieldID){var field=null;for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];field=inst.getDoc().getElementById(fieldID);}var edit=document.getElementById(editID);if(edit!=null){var p=doGetCaretPosition(edit);XCHARS=new Array();XINDEX=0;atext(field,0);var bg=0;var nt=edit.value;for(;bg<p&&bg<XCHARS.length&&bg<nt.length&&equals(nt.charAt(bg),XCHARS[bg].ch);bg++);var VT=new Array();var XDEL=new Array();var vtx=0;for(var i=0;i<bg;i++){VT[vtx++]=XCHARS[i];}var x=XCHARS.length-nt.length+p;var xd=0;for(var i=vtx;i<x;i++){XDEL[xd++]=XCHARS[i];}removeChars(XDEL);removeEmptyTags(field);if(bg<p){var last=XCHARS[bg<XCHARS.length?bg:XCHARS.length-1];var pos;var s;if(last==null){s='';pos=0;}else{s=last.tag.data;pos=last.pos;if(pos==0&&bg>0){last=XCHARS[bg-1];s=last.tag.data;pos=last.pos;}}for(var i=p-1;i>=bg;i--){var d='';if(pos>0){d=s.substring(0,pos);}d+=nt.charAt(i);if(pos<s.length){d+=s.substring(pos);}s=d;}if(last==null){field.innerText=s;}else{last.tag.data=s;}}for(var i=x;i<XCHARS.length;i++){VT[vtx++]=XCHARS[i];}}setTiming(edit,fieldID);}function removeChars(x){var xl=x.length;for(var i=xl-1;i>=0;i--){var tag=x[i].tag;var pos=x[i].pos;var s=tag.data;var nt='';if(pos>0){nt=s.substring(0,pos);}if(pos+1<s.length){nt+=s.substring(pos+1);}tag.data=nt;}}function doGetCaretPosition(oField){if(oField==null){return 0;}var iCaretPos=0;if(document.selection){oField.focus();var oSel=document.selection.createRange();oSel.moveStart('character',-oField.value.length);iCaretPos=oSel.text.length;}else if(oField.selectionStart||oField.selectionStart=='0')iCaretPos=oField.selectionEnd;return iCaretPos;}function init(){setTiming(txt,'ala');}function clearTiming(edit){if(edit.timer!=null){clearTimeout(edit.timer);edit.timer=null;}}function setTiming(edit,fieldID){debug=document.getElementById('debug');if(edit.timer!=null){clearTimeout(edit.timer);edit.timer=null;}edit.timer=setTimeout('mergeText("'+edit.id+'","'+fieldID+'")',100);}
