/* jProcessingJS v0.9 https://github.com/GildasP/jProcessingJS by Gildas P. / http://www.gildasp.fr */ function jProcessingJS(e,t){if(typeof e=="object"){var n={fullscreen:false,responsive:true,mouseoverlay:false,preventmouse:true,touchenabled:true,optmath:false};if(typeof t=="undefined"){var t=n}else{for(key in n){if(!t[key])t[key]=n[key]}}e.canvas=e.externals.canvas;e.canvas.style.outline="none";e.canvas.style["-webkit-tap-highlight-color"]="rgba(255, 255, 255, 0)";e.transBackground=function(){this.background(0,0)};if(t.responsive||t.mouseoverlay){var r=function(e){var t=e.offsetParent;var n=0;var r=0;while(t){n+=t.offsetLeft;r+=t.offsetTop;t=t.offsetParent}var i=e.offsetLeft+n;var s=e.offsetTop+r;return new Array(i,s)}}if(t.fullscreen){e.canvasX=0;e.canvasY=0;var i=function(){e.size(window.innerWidth,window.innerHeight,e.externals.context)};var s=window.onresize;window.onresize=function(){if(s)s();i()};i();var o=getComputedStyle(e.canvas)["position"];if(o!="fixed"&&o!="absolute"){e.canvas.style.position="fixed"}}else if(t.responsive){var i=function(){var t=r(e.canvas);e.canvasX=t[0];e.canvasY=t[1];e.size(e.canvas.offsetWidth,e.canvas.offsetHeight,e.externals.context)};var s=window.onresize;window.onresize=function(){if(s)s();i()};i()}else if(t.mouseoverlay){var i=function(){var t=r(e.canvas);e.canvasX=t[0];e.canvasY=t[1]};var s=window.onresize;window.onresize=function(){if(s)s();i()};i()}if(t.mouseoverlay){if(typeof e.mouseMoved=="function"){e.mouseMoved_=e.mouseMoved}else{e.mouseMoved_=function(){}}e.mouseMoved=function(){};if(typeof e.mouseDragged=="function"){e.mouseDragged_=e.mouseDragged}else{e.mouseDragged_=function(){}}e.mouseDragged=function(){};if(typeof e.mouseOver=="function"){e.mouseOver_=e.mouseOver}else{e.mouseOver_=function(){}}e.mouseOver=function(){};if(typeof e.mouseOut=="function"){e.mouseOut_=e.mouseOut}else{e.mouseOut_=function(){}}e.mouseOut=function(){};if(typeof e.mousePressed=="function"){e.mousePressed_=e.mousePressed}else{e.mousePressed_=function(){}}e.mousePressed=function(){};if(typeof e.mouseReleased=="function"){e.mouseReleased_=e.mouseReleased}else{e.mouseReleased_=function(){}}e.mouseReleased=function(){};if(typeof e.mouseClicked=="function"){e.mouseClicked_=e.mouseClicked}else{e.mouseClicked_=function(){}}e.mouseClicked=function(){};e.updateMousePosition=function(){};var u=false;var a=function(t,n){var r=t-e.canvasX;var i=n-e.canvasY;if(!u&&r>0&&r0&&i=e.width||i<=0||i>=e.height)){u=false;e.mouseOut_()}if(u){e.pmouseX=e.mouseX;e.pmouseY=e.mouseY;e.mouseX=r;e.mouseY=i;e.mouseMoved_();if(e.__mousePressed)e.mouseDragged_()}};var f=function(t){if(u){switch(t){case 1:e.mouseButton=37;break;case 2:e.mouseButton=3;break;case 3:e.mouseButton=39;break}e.__mousePressed=true;e.mousePressed_()}};var l=function(){if(u){e.__mousePressed=false;e.mouseReleased_();e.mouseClicked_()}};var c=function(e){a(e.pageX,e.pageY)};var h=function(e){e.preventDefault();var t=e.originalEvent.changedTouches[0];a(t.pageX,t.pageY)};var p=function(e){if(t.preventmouse){e.preventDefault()}f(e.which)};var d=function(e){e.preventDefault();f(1)};var v=function(e){if(t.preventmouse){e.preventDefault()}l()};var m=function(e){e.preventDefault();l()};document.addEventListener("mousemove",c,false);document.addEventListener("mousedown",p,false);document.addEventListener("mouseup",v,false);if(t.touchenabled){document.addEventListener("touchmove",h,false);document.addEventListener("touchstart",d,false);document.addEventListener("touchend",m,false)}}if(t.optMath){e.round=function(e){return.5+e<<0};e.floor=function(e){return e>>0};e.abs=function(e){return e<0?~(e++):e};e.min=function(e,t){return e