Further work on Moodle integration.
[moodle/mihaisucan.git] / lib / editor / tinymce / jscripts / tiny_mce / plugins / paintweb / editor_plugin.js
blob7b2b6075ab19997a13dc617efbad743a2f4a7c93
1 (function(){var S=null;var C=null;var a=null;var X=null;var D=null;var R=5000;var b=null;var d=30000;var N=null;var Y=false;var g=null;var f=null;var H=null;var O=false;var K=null;var Z=false;var I=null;if(!window.tinymce){alert("It looks like the PaintWeb plugin for TinyMCE cannot run.TinyMCE was not detected!");return }if(!window.XMLHttpRequest||!window.getComputedStyle||!document.createElement("canvas").getContext){return }var L=(function(){var m=navigator.userAgent.toLowerCase(),k=window.opera||/\b(opera|presto)\b/.test(m),i=!k&&/\b(applewebkit|webkit)\b/.test(m),j=!k&&!i&&/\bgecko\b/.test(m);if(i){return true}if(j){var l=/\brv\:([^;\)\s]+)[;\)\s]/.exec(m);if(l&&l[1]){l=l[1].replace(/[^\d]+$/,"").split(".");if(l[0]==1&&l[1]<=9&&l[2]<1){return true}}}return false})();function h(){if(window.PaintWeb){U();return }var i=f.getParam("paintweb_config"),j=i.tinymce.paintwebFolder+"paintweb.js";tinymce.ScriptLoader.load(j,U)}function U(){if(X){return }X=new PaintWeb();a=X.config;var j=f.getParam("paintweb_config"),i=f.getElement();pNode=g.parentNode,pwContainer=document.createElement("div");pNode.insertBefore(pwContainer,i.nextSibling);if(!PaintWeb.baseFolder){PaintWeb.baseFolder=j.tinymce.paintwebFolder}j.imageLoad=H;j.guiPlaceholder=pwContainer;if(!j.lang){j.lang=f.getParam("language")}for(var k in j){a[k]=j[k]}X.init(T)}function T(i){if(C&&f){C.title=f.getLang("paintweb.overlayButton","Edit");C.replaceChild(document.createTextNode(C.title),C.firstChild)}if(i.state!==PaintWeb.INIT_DONE){alert("PaintWeb initialization failed! "+i.errorMessage);X=null;H=null;f=null;return }I=window.pwlib;X.events.add("imageSave",M);X.events.add("imageSaveResult",P);Q(i)}function G(i){i.preventDefault();Y=true;X.imageSave()}function c(i){i.preventDefault();A()}function M(j){if(a.tinymce.imageSaveDataURL){j.preventDefault();var i=O?"-":f.dom.getAttrib(H,"src");X.events.dispatch(new I.appEvent.imageSaveResult(true,i,j.dataURL))}else{if(D&&!b){D.firstChild.innerHTML=f.getLang("paintweb.statusSavingImage","Saving image...")}}}function P(i){if(!H){return }if(D){if(i.successful){D.firstChild.innerHTML=f.getLang("paintweb.statusImageSaved","Image save was succesful!")}else{D.firstChild.innerHTML=f.getLang("paintweb.statusImageSaveFailed","Image save failed!")}b=setTimeout(F,R)}if(i.successful){Z=true;if(i.urlNew){K=i.urlNew}if(Y){Y=false;A()}}}function F(){if(!D||!H){return }b=null;D.firstChild.innerHTML=f.getLang("paintweb.statusImageEditing","You are editing {file}.")}function E(){if(!J(H)){H=null;return false}if(N){clearTimeout(N);N=null}var j=function(){if(C&&C.parentNode){C.title=f.getLang("paintweb.overlayLoading","Loading PaintWeb...");C.replaceChild(document.createTextNode(C.title),C.firstChild)}if(X){X.imageLoad(H);Q()}else{h()}};var l=function(){H.removeEventListener("load",l,false);O=false;j()};var k=f.dom.getAttrib(H,"src");if(k.substr(0,5)==="data:"){O=true}else{O=false}var i=O&&L?f.getParam("paintweb_config"):null;if(i&&i.tinymce.imageDataURLfilter){tinymce.util.XHR.send({url:i.tinymce.imageDataURLfilter,content_type:"application/x-www-form-urlencoded",data:"url=-&dataURL="+encodeURIComponent(k),error:function(){if(window.console&&console.log){console.log("TinyMCE.PaintWeb: failed to preload image data URL!")}j()},success:function(m){if(!m){j();return }m=tinymce.util.JSON.parse(m);if(!m||!m.successful||!m.urlNew){j();return }K=H.src;H.addEventListener("load",l,false);f.dom.setAttrib(H,"src",m.urlNew)}})}else{j()}k=null;return true}function W(l,i,n,o,p){l=parseInt(l)||0;i=parseInt(i)||0;if(!l||!i){return }var j=document.createElement("canvas"),k=j.getContext("2d");j.width=l;j.height=i;if(n){k.fillStyle=n;k.fillRect(0,0,l,i)}f.execCommand("mceInsertContent",false,'<img id="paintwebNewImage">');var m=f.dom.get("paintwebNewImage");if(!m||m.id!=="paintwebNewImage"||m.nodeName.toLowerCase()!=="img"){return }if(o){m.setAttribute("alt",o)}if(p){m.setAttribute("title",p)}m.src=j.toDataURL();m.setAttribute("mce_src",m.src);m.removeAttribute("id");H=m;j=null;k=null;E()}function Q(i){if(!i||i.type!=="appInit"){X.gui.show()}g.style.display="none";if(!D){return }F();var j=a.guiPlaceholder;if(!D.parentNode){j.parentNode.insertBefore(D,j)}}function A(){X.gui.hide();if(C&&f){C.title=f.getLang("paintweb.overlayButton","Edit");C.replaceChild(document.createTextNode(C.title),C.firstChild)}if(D&&D.parentNode){g.parentNode.removeChild(D)}if(K){if(K.substr(0,5)!=="data:"){f.dom.setAttrib(H,"src",K)}else{H.src=K;if(H.hasAttribute("mce_src")){H.setAttribute("mce_src",K)}}K=null}else{if(!O&&Z){var j=f.dom.getAttrib(H,"src"),i=(new Date()).getMilliseconds()*Math.round(Math.random()*100);if(j.indexOf("?")===-1){j+="?"+i}else{if(/\?[0-9]+$/.test(j)){j=j.replace(/\?[0-9]+$/,"?"+i)}else{if(/&[0-9]+$/.test(j)){j=j.replace(/&[0-9]+$/,"&"+i)}else{j+="&"+i}}}f.dom.setAttrib(H,"src",j)}}g.style.display="";H=null;Z=false;f.focus();if(!N){N=setTimeout(B,d)}}function B(){if(X){X.destroy();var i=a.guiPlaceholder.parentNode;i.removeChild(a.guiPlaceholder);X=null;a=null;N=null}}function e(){if(H){return }var i=this.selection.getNode();f=this;g=this.getContainer();H=i;if(!E()&&i.nodeName.toLowerCase()!=="img"){this.windowManager.open({file:S+"/newimage.html",width:350+parseInt(this.getLang("paintweb.dlg_delta_width",0)),height:200+parseInt(this.getLang("paintweb.dlg_delta_height",0)),inline:1},{plugin_url:S,newImageFn:W})}}function J(m){if(!m){return false}var i=m.src;if(m.nodeName.toLowerCase()!=="img"||!i){return false}var l=i.indexOf(":"),k=i.substr(0,l+1).toLowerCase();if(k==="data:"){return true}if(k!=="http:"&&k!=="https:"){return false}var j=i.replace(/^https?:\/\//i,"");l=j.indexOf("/");if(l>-1){j=j.substr(0,l)}if(j!==window.location.host){return false}return true}function V(k){if(!k||!k.getDoc){return }var n=k.getDoc();if(!n||!n.getElementsByClassName){return }var j=n.getElementsByClassName(C.className),m;for(var l=0;l<j.length;l++){m=j[l].parentNode;m.removeChild(j[l])}}tinymce.PluginManager.requireLangPack("paintweb");tinymce.create("tinymce.plugins.paintweb",{init:function(i,k){S=k;i.addCommand("paintwebEdit",e,i);i.addButton("paintwebEdit",{title:"paintweb.toolbarButton",cmd:"paintwebEdit",image:S+"/img/paintweb2.gif"});i.onNodeChange.add(this.edNodeChange);var j=i.getParam("paintweb_config")||{};if(!j.tinymce){j.tinymce={}}if(j.tinymce.contextMenuItem&&i.plugins.contextmenu){i.plugins.contextmenu.onContextMenu.add(this.pluginContextMenu)}if(j.tinymce.overlayButton){i.onClick.add(this.edClick);i.onPreProcess.add(this.edPreProcess);i.onBeforeGetContent.add(this.edPreProcess);i.onRemove.add(this.edPreProcess);i.onInit.add(V);C=document.createElement("a");overlayStyle=C.style;C.className="paintwebOverlayButton";C.title=i.getLang("paintweb.overlayButton","Edit");C.appendChild(document.createTextNode(C.title));overlayStyle.position="absolute";overlayStyle.background="#fff";overlayStyle.padding="4px 6px";overlayStyle.border="1px solid #000";overlayStyle.textDecoration="none";overlayStyle.color="#000"}if(j.tinymce.dblclickHandler){i.onDblClick.add(this.edDblClick)}if(j.tinymce.pluginBar){D=document.createElement("div");var m=document.createElement("a"),l=document.createElement("a"),n=document.createElement("span");m.className="paintweb_tinymce_save";m.href="#";m.title=i.getLang("paintweb.imageSaveButtonTitle","Save the image and return to TinyMCE.");m.appendChild(document.createTextNode(i.getLang("paintweb.imageSaveButton","Save")));m.addEventListener("click",G,false);l.className="paintweb_tinymce_cancel";l.href="#";l.title=i.getLang("paintweb.cancelEditButtonTitle","Cancel image edits and return to TinyMCE.");l.appendChild(document.createTextNode(i.getLang("paintweb.cancelEditButton","Cancel")));l.addEventListener("click",c,false);D.className="paintweb_tinymce_status";D.style.display="none";D.appendChild(n);D.appendChild(m);D.appendChild(l)}},edPreProcess:function(i){if(C&&C.parentNode){C._targetImage=null;pNode=C.parentNode;pNode.removeChild(C)}V(i)},edNodeChange:function(j,i,m){if(!H&&C&&m&&m.className===C.className&&m._targetImage===m.previousSibling){return }var l=!J(m),k=null;if(m.nodeName.toLowerCase()==="img"&&l){i.setDisabled("paintwebEdit",true);i.setActive("paintwebEdit",false)}else{i.setDisabled("paintwebEdit",false);i.setActive("paintwebEdit",!l)}if(!C){return }if(C.parentNode){C._targetImage=null;k=C.parentNode;k.removeChild(C)}if(m.nextSibling&&m.nextSibling.className===C.className){k=m.parentNode;k.removeChild(m.nextSibling)}if(m.className===C.className){k=m.parentNode;k.removeChild(m)}if(!l){C._targetImage=m;C.style.top=(m.offsetTop+5)+"px";C.style.left=(m.offsetLeft+5)+"px";C.title=j.getLang("paintweb.overlayButton","Edit");C.replaceChild(document.createTextNode(C.title),C.firstChild);k=m.parentNode;k.insertBefore(C,m.nextSibling)}else{if(C._targetImage){C._targetImage=null}}},edClick:function(i,j){if(!H&&C&&j.target&&j.target.className===C.className&&C._targetImage){f=i;g=i.getContainer();H=C._targetImage;E()}},edDblClick:function(i,j){if(!H&&J(j.target)){f=i;g=i.getContainer();H=j.target;j.target.focus();E()}},pluginContextMenu:function(j,k,i){if(J(i)){k.add({title:"paintweb.contextMenuEdit",cmd:"paintwebEdit",image:S+"/img/paintweb2.gif"})}},getInfo:function(){return{longname:"PaintWeb - online painting application",author:"Mihai Şucan",authorurl:"http://www.robodesign.ro/mihai",infourl:"http://code.google.com/p/paintweb",version:"0.9"}}});tinymce.PluginManager.add("paintweb",tinymce.plugins.paintweb)})();