/**
   @license
   Copyright 2010 Hanov Solutions Inc. All Rights Reserved

   steve.hanov@gmail.com
 */
function u(){return function(){}}function D(a){return function(b){this[a]=b}}function H(a){return function(){return this[a]}}function aa(a){return function(){return a}}function I(){this.J()}
I.prototype={J:function(){this.id=ba++;this.rect=new K(0,0,1,1);this.u=new L;this.parent=null;this.children=[]},Wa:[],oa:H("Wa"),kd:function(a){for(var b=this.oa(),c=0;c<b.length;c++){var d=a.U(b[c].name);d!==undefined&&this.setProperty(b[c].name,d)}},setProperty:function(a,b){this[a]=b},U:function(a){return this[a]},save:function(){var a={};a.type="Node";a.matrix=this.u.save();a.children=[];for(var b=0;b<this.children.length;b++)a.children.push(this.children[b].save());return a},load:function(a){var b=
a.matrix,c=new L;c.O=b.m11;c.P=b.m12;c.Q=b.m21;c.R=b.m22;c.A=b.dx;c.w=b.dy;this.u=c;for(b=this.children.length=0;b<a.children.length;b++){c=M(a.children[b]);c.parent=this;this.children.push(c)}},Bc:function(){return this.parent.parent!==null},duplicate:function(){return M(this.save())},ha:function(a,b){for(var c=0;c<this.children.length;c++){var d=this.children[c].ha(a,b);if(d)return d}return null},t:function(a){for(var b=0;b<this.children.length;b++){this.children[b].t(a);if(b===0)this.rect=ca(this.children[b].rect);
else this.rect.Ab(this.children[b].rect)}},transform:function(a){this.u=a.Tb(this.u)},Kb:H("u"),Ga:D("u"),c:function(a){for(var b=this.children.length-1;b>=0;b--)this.children[b].c(a)},uc:function(a){for(var b,c=0;c<this.children.length;c++){if(this.children[c]===a)return this;if(b=this.children[c].uc(a))return b}return null},H:function(a,b){b===-1?this.children.push(a):this.children.splice(b,0,a);a.parent=this},removeChild:function(a){for(var b=0;b<this.children.length;b++)if(this.children[b]===
a){this.children.splice(b,1);a.parent=null;return b}return-1},db:aa(false),ga:u(),Ta:aa(null),Ra:u(),ia:u()};var ba=1;window.BaseNode=I;var N=[],ea=null;function fa(){for(var a=[],b=0;b<N.length;b++)N[b].complete?N[b].pb(N[b],N[b].Za):a.push(N[b]);N=a;if(N.length)setTimeout(fa,250);else ea=false}function ga(a,b){var c=new Image;N.push(c);c.pb=b;c.src=a;c.Za=a;c.onload=function(){if(this.complete)for(var d=0;d<N.length;d++){if(N[d]===this){N.splice(d,1);b(c,c.Za);break}}else if(!ea){ea=true;setTimeout(fa,250)}};return c}function O(){this.J.apply(this,arguments)}var ha={textFillStyle:"#000000",fontName:"FG Virgil",fontSize:20};
O.prototype={J:function(a){this.F.J.apply(this);this.D=window.document?document.createElement("img"):{};this.textFillStyle=ha.textFillStyle;this.fontName=ha.fontName;this.fontSize=ha.fontSize;this.xa=100;this.wa=15;this.rect=new K(0,0,this.xa,this.wa);this.Ee=0;this.Za=this.Yc="";this.complete=this.Qb=false;if(a!==undefined){this.text=a;this.wc()}},load:function(a){this.F.load.apply(this,[a]);this.textFillStyle=a.fillStyle;this.fontName=a.fontName;this.fontSize=a.fontSize;this.text=a.text},save:function(){var a=
this.F.save.apply(this);a.type="TextNode";a.fillStyle=this.textFillStyle;a.text=this.text;a.fontName=this.fontName;a.fontSize=this.fontSize;return a},Wa:[{name:"text",display:"Text",type:"text"},{name:"textFillStyle",display:"Text Colour",type:"colour"},{name:"fontSize",display:"Font Size",type:"select",b:[{name:"10",value:10},{name:"12",value:12},{name:"15",value:15},{name:"20",value:20},{name:"30",value:30},{name:"40",value:40},{name:"50",value:50},{name:"60",value:60}]},{name:"fontName",display:"Font",
type:"select",b:[{name:"FG Virgil",value:"FG Virgil"},{name:"Arial",value:"Arial"},{name:"Times New Roman",value:"Times New Roman"},{name:"Stinky Kitty",value:"Stinky Kitty"},{name:"FG Bunnigrrrl",value:"FG Bunnigrrrl's handwriting"},{name:"FG Amura",value:"FG Amura"}]}],setProperty:function(a,b){ha[a]=b;this[a]=b},ha:function(a,b){return a>=this.rect.x&&a<this.rect.x+this.rect.width&&b>=this.rect.y&&b<this.rect.y+this.rect.height?this:null},wc:function(){if(window.document){var a=this;this.Za="button.cgi?font="+
this.fontName+"&size="+this.fontSize+"&text="+encodeURIComponent(this.text)+"&fill="+encodeURIComponent(this.textFillStyle)+"&stroke="+encodeURIComponent(this.strokeStyle)+"&lineWidth="+this.lineWidth;if(this.Yc!==this.Za&&!this.Qb){this.Qb=true;ga(this.Za,function(b,c){a.Wd(b,c)});return false}}return true},Wd:function(a,b){this.Qb=false;this.Yc=b;this.D=a;this.complete=true;this.path!==undefined?this.path.t(this.a):this.t(this.a);ia.kb();ia.c()},t:function(a){this.a=a;if(window.document){if(this.wc()&&
this.complete){this.xa=this.D.width;this.wa=this.D.height}}else{a.font=""+this.fontSize+"px "+this.fontName+"";this.xa=a.measureText(this.text).width;this.wa=this.fontSize*1.5}a=this.u.apply(0,0);var b=this.u.apply(this.xa,0),c=this.u.apply(this.xa,this.wa),d=this.u.apply(0,this.wa);this.rect.x=a.x;this.rect.y=a.y;this.rect.width=0;this.rect.height=0;this.rect.$a(b.x,b.y);this.rect.$a(c.x,c.y);this.rect.$a(d.x,d.y)},c:function(a){a.save();a.transform(this.u.O,this.u.Q,this.u.P,this.u.R,this.u.A,this.u.w);
if(window.document===undefined){a.font=""+this.fontSize+"px "+this.fontName+"";a.fillStyle=this.textFillStyle;a.fillText(this.text,0,0)}else if(this.complete)try{a.drawImage(this.D,0,0)}catch(b){}else{a.strokeStyle="#008888";a.lineWidth=1;a.beginPath();a.moveTo(0,0);a.lineTo(this.xa,this.wa);a.moveTo(this.xa,0);a.lineTo(0,this.wa);a.rect(0,0,this.xa,this.wa);a.stroke()}a.restore()}};O.prototype=$.extend({},I.prototype,O.prototype);O.prototype.F=I.prototype;window.TextNode=O;function ja(a){this.Zc=a}ja.prototype.print=function(a){a=a.split("\n");for(var b=0;b<a.length;b++){this.Zc.appendChild(document.createTextNode(a[b]));b<a.length-1&&this.Zc.appendChild(document.createElement("br"))}};
ja.prototype.gb=function(){function a(g,j){g.Ia=j?"":g.Pd?"-":g.Ia;var l=g.min-g.C.length+1-g.Ia.length;l=Array(l<0?0:l).join(g.Zb);return g.left?g.Zb==="0"||j?g.Ia+g.C+l.replace(/0/g," "):g.Ia+g.C+l:g.Zb==="0"||j?g.Ia+l+g.C:l+g.Ia+g.C}if(typeof arguments!=="undefined")if(!(arguments.length<1)){var b=arguments;if(b[0]instanceof Array)b=b[0];if(typeof b[0]==="string"){var c=b[0],d=RegExp(/(%([%]|(\-)?(\+|\x20)?(0)?(\d+)?(\.(\d)?)?([bcdfosxX])))/g),e=[],f=[],h=0,o=0,q=0;o=0;for(var k="",i=null;;){i=
d.exec(c);if(!i)break;if(i[9])h+=1;o=o;q=d.lastIndex-i[0].length;f[f.length]=c.substring(o,q);o=d.lastIndex;e[e.length]={match:i[0],left:i[3]?true:false,Ia:i[4]||"",Zb:i[5]||" ",min:i[6]||0,tb:i[8],code:i[9]||"%",Pd:parseInt(b[h],10)<0?true:false,C:String(b[h])}}f[f.length]=c.substring(o);if(!(b.length-1<h)){c=null;for(c=0;c<e.length;c++){if(e[c].code==="%")b="%";else if(e[c].code==="b"){e[c].C=String(Math.abs(parseInt(e[c].C,10)).toString(2));b=a(e[c],true)}else if(e[c].code==="c"){e[c].C=String(String.fromCharCode(parseInt(Math.abs(parseInt(e[c].C,
10)),10)));b=a(e[c],true)}else if(e[c].code==="d"){e[c].C=String(Math.abs(parseInt(e[c].C,10)));b=a(e[c],false)}else if(e[c].code==="f"){e[c].C=String(Math.abs(parseFloat(e[c].C)).toFixed(e[c].tb?e[c].tb:6));b=a(e[c],false)}else if(e[c].code==="o"){e[c].C=String(Math.abs(parseInt(e[c].C,10)).toString(8));b=a(e[c],false)}else if(e[c].code==="s"){e[c].C=e[c].C.substring(0,e[c].tb?e[c].tb:e[c].C.length);b=a(e[c],true)}else if(e[c].code==="x"){e[c].C=String(Math.abs(parseInt(e[c].C,10)).toString(16));
b=a(e[c],false)}else if(e[c].code==="X"){e[c].C=String(Math.abs(parseInt(e[c].C,10)).toString(16));b=a(e[c],false).toUpperCase()}else b=e[c].match;k+=f[c];k+=b}k+=f[c];this.print(k)}}}};function P(a,b){this.type=a;this.b=b;if(this.b.length<4)throw"Bad value";}var ka,Q=0,la=1,ma=2,na=3;P.prototype={toString:function(){function a(c){c=Math.round(c*255);return c<16?"0"+c.toString(16):c.toString(16)}var b=this.Qa(Q);return b.b[3]===1?"#"+a(b.b[0])+a(b.b[1])+a(b.b[2]):"rgba("+Math.round(b.b[0]*255)+","+Math.round(b.b[1]*255)+","+Math.round(b.b[2]*255)+","+b.b[3]+")"},Qa:function(a){return ka[this.type][a](this)}};
(function(){function a(k){var i=k.b[0],g=k.b[1],j=k.b[2];if(i<0)i+=360;var l=Math.floor(i/60)%6,p=i/60-Math.floor(i/60);i=j*(1-g);var v=j*(1-p*g);g=j*(1-(1-p)*g);var y,A,m;switch(l){case 0:y=j;A=g;m=i;break;case 1:y=v;A=j;m=i;break;case 2:y=i;A=j;m=g;break;case 3:y=i;A=v;m=j;break;case 4:y=g;A=i;m=j;break;case 5:y=j;A=i;m=v;break}return new P(Q,[y,A,m,k.b[3]])}function b(k){var i,g=k.b[0],j=k.b[1],l=k.b[2],p=Math.max(g,j,l),v=Math.min(g,j,l);if(p===v)i=0;else if(p===g)i=(60*(j-l)/(p-v)+360)%360;else if(p===
j)i=60*(l-g)/(p-v)+120;else if(p===l)i=60*(g-j)/(p-v)+240;return new P(ma,[i,p===0?0:1-v/p,p,k.b[3]])}function c(k){function i(p){return p>6/29*(6/29)*(6/29)?Math.pow(p,1/3):1/3*29/6*(29/6)*p+4/29}var g={za:1/3,Aa:1/3,Oa:1/3},j=i(k.b[0]/g.za),l=i(k.b[1]/g.Aa);return new P(na,[116*l-16,500*(j-l),200*(l-i(k.b[2]/g.Oa)),k.b[3]])}function d(k){var i=(k.b[0]+16)/116,g=i+k.b[1]/500,j=i-k.b[2]/200,l={za:1/3,Aa:1/3,Oa:1/3},p=6/29;return new P(P.ye,[g>p?l.za*g*g*g:(g-16/116)*3*p*p*l.za,i>p?l.Aa*i*i*i:(i-16/
116)*3*p*p*l.Aa,j>p?l.Oa*j*j*j:(j-16/116)*3*p*p*l.Ge,k.b[3]])}function e(k){for(var i=[],g=0;g<3;g++)i[g]=k.b[g]<=0.04045?k.b[g]/12.92:Math.pow((k.b[g]+0.055)/1.055,2.4);return new P(la,[0.4124*i[0]+0.3576*i[1]+0.1805*i[2],0.2126*i[0]+0.7152*i[1]+0.0722*i[2],0.0193*i[0]+0.1192*i[1]+0.9505*i[2],k.b[3]])}function f(k){var i=[],g=[];i[0]=3.241*k.za-1.5374*k.Aa-0.4986*k.Oa;i[1]=-0.9692*k.za+1.876*k.Aa+0.0416*k.Oa;i[2]=0.0556*k.za-0.204*k.Aa+1.057*k.Oa;for(var j=0;j<3;j++)g[j]=i[j]<=0.0031308?12.92*i[j]:
1.055*Math.pow(i[j],1/2.4)-0.055;g[3]=k.b[3];return new P(Q,g)}function h(k){return new P(k.type,k.b.concat())}function o(k){return c(e(k))}function q(k){return b(f(k))}ka=[[h,e,b,o],[f,h,q,c],[a,function(k){return e(a(k))},h,function(k){return o(a(k))}],[function(k){return f(d(k))},d,function(k){return q(d(k))},h]]})();
var qa={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",
darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",
gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",
lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",
orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",
snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function ra(a){this.o=document.createElement("div");this.canvas=document.createElement("canvas");this.height=this.width=a;this.canvas.width=this.width;this.canvas.height=this.height;this.canvas.style.cursor="crosshair";this.a=this.canvas.getContext("2d");this.o.appendChild(this.canvas);var b=document.createElement("input");b.type="range";if("min"in b){this.o.appendChild(document.createElement("br"));this.o.appendChild(b);b.min=0;b.max=255;b.value=255;this.Pa=b}else this.Pa=null;this.B=this.height;
this.ua=this.height*0.8;if(ra[a])this.data=ra[a];else{b=this.a.getImageData(0,0,this.B,this.B);for(var c=this.B/2,d=this.ua/2,e,f=0;f<this.B;f++){var h=Math.sqrt(c*c-(f-c)*(f-c)),o=Math.floor(-h+c),q=Math.floor(h+c),k=d*d-(f-c)*(f-c);if(k>=0){h=Math.sqrt(k);k=Math.floor(-h+c);var i=Math.floor(h+c);h=f*this.B*4+o*4;for(o=o;o<=k;o++){e=Math.atan2(f-c,o-c);e=new P(ma,[e/Math.PI*180,1,1,1]);e=e.Qa(Q);b.data[h++]=e.b[0]*255;b.data[h++]=e.b[1]*255;b.data[h++]=e.b[2]*255;b.data[h++]=255}h=f*this.B*4+i*4;
o=i}else{h=f*this.B*4+o*4;o=o}for(;o<=q;o++){e=Math.atan2(f-c,o-c);e=new P(ma,[e/Math.PI*180,1,1,1]);e=e.Qa(Q);b.data[h++]=e.b[0]*255;b.data[h++]=e.b[1]*255;b.data[h++]=e.b[2]*255;b.data[h++]=255}}this.data=b;ra[a]=b}this.I=new P(ma,[20,1,1,1]);this.update();this.c();var g=this;g.Eb=false;g.eb="";$(this.canvas).mousedown(function(j){var l=$(g.canvas).offset(),p=j.pageX-l.left;l=j.pageY-l.top;g.Eb=true;g.nc(p,l);j.stopPropagation();j.preventDefault()});$(this.canvas).mousemove(function(j){if(g.Eb){var l=
$(g.canvas).offset();g.nc(j.pageX-l.left,j.pageY-l.top)}j.stopPropagation();j.preventDefault()});$(window).mouseup(function(){g.Eb=false;g.eb=""});this.Pa!==null&&$(this.Pa).change(function(){g.I.b[3]=g.Pa.value/255;g.update();g.c()})}
ra.prototype={le:function(a){var b=a;if(b.toLowerCase()in qa)b=qa[b.toLowerCase()];var c=/rgba\( *([0-9]+) *, *([0-9]+) *, *([0-9]+) *, *([0-9\.]+) *\)/,d;a=/\#([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])/i.exec(b);if(a!==null){b=parseInt(a[1],16)/255;c=parseInt(a[2],16)/255;d=parseInt(a[3],16)/255;a=1}else{a=c.exec(b);if(a!==null){b=parseFloat(a[1])/255;c=parseFloat(a[2])/255;d=parseFloat(a[3])/255;a=parseFloat(a[4])}else{b=1;c=0;a=d=1}}this.I=(new P(Q,[b,c,d,a])).Qa(ma);if(this.Pa!==null)this.Pa.value=
Math.round(this.I.b[3]*255);this.c();this.update()},update:function(){this.Oc&&this.Oc(this.I.toString())},c:function(){this.a.save();this.a.lineWidth=1;this.a.fillStyle="rgb(128, 128, 128)";this.a.fillRect(0,0,this.width,this.height);this.a.putImageData(this.data,0,0);var a=this.I.b[0]/180*Math.PI;this.a.beginPath();var b={x:Math.cos(a)*this.ua/2+this.B/2,y:Math.sin(a)*this.ua/2+this.B/2},c={x:Math.cos(a+2*Math.PI/3)*this.ua/2+this.B/2,y:Math.sin(a+2*Math.PI/3)*this.ua/2+this.B/2},d={x:Math.cos(a+
4*Math.PI/3)*this.ua/2+this.B/2,y:Math.sin(a+4*Math.PI/3)*this.ua/2+this.B/2},e={x:Math.cos(a)*this.B/2+this.B/2,y:Math.sin(a)*this.B/2+this.B/2};a={x:c.x+(d.x-c.x)/2,y:c.y+(d.y-c.y)/2};this.a.moveTo(b.x,b.y);this.a.lineTo(c.x,c.y);this.a.lineTo(d.x,d.y);this.a.lineTo(b.x,b.y);var f=this.a.createLinearGradient(c.x,c.y,d.x,d.y);f.addColorStop(0,"#ffffff");f.addColorStop(1,"#000000");this.a.fillStyle=f;this.a.fill();f=this.a.createLinearGradient(b.x,b.y,a.x,a.y);var h=this.I.Qa(ma);h.b[1]=1;h.b[2]=
1;h=h.Qa(Q);h.b[3]=1;f.addColorStop(0,h.toString());h.b[3]=0;f.addColorStop(1,h.toString());this.a.fillStyle=f;this.a.fill();this.strokeStyle="#000000";this.a.beginPath();this.a.moveTo(b.x,b.y);this.a.lineTo(e.x,e.y);this.a.stroke();f=1-this.I.b[2];e=this.I.b[1]*b.x+f*d.x+(1-this.I.b[1]-f)*c.x;f=this.I.b[1]*b.y+f*d.y+(1-this.I.b[1]-f)*c.y;this.a.beginPath();this.a.arc(e,f,4,0,2*Math.PI,false);this.a.stroke();this.a.restore();this.de=b;this.ee=c;this.fe=d;this.Ce=a},nc:function(a,b){var c=Math.sqrt((a-
this.B/2)*(a-this.B/2)+(b-this.B/2)*(b-this.B/2));if(this.eb==="ring"||this.eb!=="triangle"&&c>=this.ua/2&&c<=this.B/2){this.I.b[0]=Math.atan2(this.B/2-b,this.B/2-a)/Math.PI*180+180;if(this.I.b[1]===0){this.I.b[1]=1;this.I.b[2]=1}this.eb="ring"}else{var d,e=this.de;c=this.ee;var f=this.fe;d=(e.x-f.x)*(c.y-f.y)-(c.x-f.x)*(e.y-f.y);c=((c.y-f.y)*(a-f.x)-(c.x-f.x)*(b-f.y))/d;d=(-(e.y-f.y)*(a-f.x)+(e.x-f.x)*(b-f.y))/d;d=1-Math.max(0,c)-Math.max(0,d);this.I.b[1]=Math.min(Math.max(c,0),1);this.I.b[2]=1-
Math.min(Math.max(d,0),1);this.eb="triangle"}this.c();this.update()}};function sa(a,b,c,d){this.view=a;this.f=b;this.name=c;this.value=d;this.Kc=[];for(a=0;a<this.f.length;a++){b=this.f[a];if(this.name in b)this.Kc[a]=b.U(this.name)}}sa.prototype={execute:function(){for(var a=0;a<this.f.length;a++){var b=this.f[a];if(b.U(this.name)!==undefined){b.setProperty(this.name,this.value);b.t(R.j.a)}}this.view.c()},M:function(){for(var a=0;a<this.f.length;a++){var b=this.f[a];if(this.name in b){b.setProperty(this.name,this.Kc[a]);b.t(R.j.a)}}this.view.c()}};
function ta(){this.o=document.createElement("div");$(this.o).addClass("PropertyPanel");this.ub=[];this.vb={};this.view=null;this.f=[];this.action=null}
ta.prototype={Md:function(a){this.action=null;this.ub.length=0;this.vb={};this.f=a.concat();for(var b=false,c=0;c<a.length;c++){var d=a[c];if(d.Bc())b=true;for(var e=d.oa(),f=0;f<e.length;f++)this.Ld(e[f],d)}this.md();d=$("<div>").addClass("keydiv");$(this.o).append(d);d.append("<h1>Keyboard</h1>");e=[{key:"C",description:"Draw curves"},{key:"L",description:"Draw lines"}];a.length>0&&e.push({key:"Del",description:"Delete Selection"},{key:"Ctrl+D",description:"Duplicate Selection"},{key:"PageUp",description:"Move selection closer"},
{key:"PageDown",description:"Move selection away"});a.length>1&&e.push({key:"Ctrl+G",description:"Group selection"});b&&e.push({key:"Ctrl+Shift+G",description:"Break apart group"});e.push({key:"+",description:"Zoom in"});e.push({key:"-",description:"Zoom out"});e.push({key:"Arrow Keys",description:"Move while zoomed"});for(c=0;c<e.length;c++){a=$("<a>").text(e[c].key).addClass("key");a=$("<p>").append(a);a[0].appendChild(document.createTextNode(e[c].description));d.append(a)}},Ld:function(a,b){var c;
if(a.name in this.vb){c=this.vb[a.name];if(c.value!==b.U(a.name))c.value=null}else{c={ie:a,value:b.U(a.name)};this.ub.push(c);this.vb[a.name]=c}},md:function(){$(this.o).empty();var a,b,c=this;function d(){c.apply(this.Va.name,this.Va.b[parseInt(this.value,10)].value)}function e(j){j.keyCode===13&&c.apply(this.Va.name,this.value)}function f(){c.ue(this)}for(a=0;a<this.ub.length;a++){var h=this.ub[a],o=h.ie,q=document.createElement("div");b=document.createElement("span");b.appendChild(document.createTextNode(o.display));
q.appendChild(b);q.appendChild(document.createElement("br"));if(o.type==="select"){var k=document.createElement("select");for(b=0;b<o.b.length;b++){var i=o.b[b],g=document.createElement("option");g.appendChild(document.createTextNode(i.name));g.setAttribute("value",b);i.value===h.value&&g.setAttribute("selected","");k.appendChild(g)}k.Va=o;k.onchange=d;q.appendChild(k)}else if(o.type==="colour"){b=document.createElement("input");b.setAttribute("type","text");b.value=h.value;b.Va=o;$(b).keydown(e);
q.appendChild(b);h=document.createElement("img");h.src="wd-wheel.png";h.style.verticalAlign="middle";h.input=b;q.appendChild(h);$(h).click(f)}else if(o.type==="text"){b=document.createElement("input");b.setAttribute("type","text");b.value=h.value;b.Va=o;$(b).keydown(e);q.appendChild(b)}else throw"Error: No such property";this.o.appendChild(q)}},apply:function(a,b){this.view.v.execute(new sa(this.view,this.f,a,b))},ue:function(a){if(!a.Gd){var b=new ra(120),c=this;b.le(a.input.value);b.Oc=function(d){c.jd(d,
a.input,a.input.Va)};a.Fe=b;a.Gd=true;a.parentNode.appendChild(b.o)}},jd:function(a,b,c){if(this.action===null||this.action.name!==c.name){this.action=new sa(this.view,this.f,c.name,a);this.view.v.execute(this.action,true)}this.action.value=a;b.value=a;for(b=0;b<this.f.length;b++){var d=this.f[b];d.setProperty(c.name,a);d.t()}this.view.c()}};function ua(){this.Da=[];this.next=0;this.fa=false}
ua.prototype={execute:function(a,b){this.next<this.length&&this.Da.slice(this.next,this.length-this.next);this.Da.push(a);b||a.execute();this.fa=true;this.next=this.Da.length},M:function(){if(this.pc()){this.Da[--this.next].M();this.fa=true}},$b:function(){if(this.oc()){this.Da[this.next++].execute();this.fa=true}},pc:function(){return this.next>0},oc:function(){return this.next<this.Da.length},clear:function(){this.next=this.Da.length=0;this.fa=false}};function va(a,b){this.x=a;this.y=b}function wa(a,b,c,d){var e=Math.sqrt((a-c)*(a-c)+(b-d)*(b-d));return{x:c!==a?(c-a)/e:1,y:d!==b?(d-b)/e:0}}function K(a,b,c,d){this.x=a;this.y=b;this.width=c;this.height=d;this.je()}
K.prototype={save:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},clone:function(){return new K(this.x,this.y,this.width,this.height)},Ab:function(a){if(a.x<this.x){this.width+=this.x-a.x;this.x=a.x}if(a.y<this.y){this.height+=this.y-a.y;this.y=a.y}if(a.x+a.width>this.x+this.width)this.width+=a.x+a.width-this.x-this.width;if(a.y+a.height>this.y+this.height)this.height+=a.y+a.height-this.y-this.height},$a:function(a,b){if(a<this.x){this.width+=this.x-a;this.x=a}else if(a>
this.x+this.width)this.width=a-this.x;if(b<this.y){this.height+=this.y-b;this.y=b}else if(b>this.y+this.height)this.height=b-this.y},contains:function(a){return this.x<=a.x&&this.x+this.width>a.x+a.width&&this.y<=a.y&&this.y+this.height>a.y+a.height},rc:function(a,b){return this.x<=a&&this.x+this.width>a&&this.y<=b&&this.y+this.height>b},je:function(){if(this.width<0){this.x+=this.width;this.width=-this.width}if(this.height<0){this.y+=this.height;this.height=-this.height}},Hd:function(a,b){this.x-=
a/2;this.y-=b/2;this.width+=a;this.height+=b}};function ca(a){var b;if(a instanceof Function)return a;else if(a instanceof Array)b=a.concat();else if(a instanceof Object){b={};for(var c in a)b[c]=ca(a[c])}else b=a;return b}function L(){this.O=1;this.Q=this.P=0;this.R=1;this.w=this.A=0}
L.prototype={save:function(){return{m11:this.O,m12:this.P,m21:this.Q,m22:this.R,dx:this.A,dy:this.w}},Tb:function(a){var b=new L;b.O=this.O*a.O+this.P*a.Q;b.Q=this.Q*a.O+this.R*a.Q;b.P=this.O*a.P+this.P*a.R;b.R=this.Q*a.P+this.R*a.R;b.A=this.O*a.A+this.P*a.w+this.A;b.w=this.Q*a.A+this.R*a.w+this.w;return b},apply:function(a,b){return new va(this.O*a+this.P*b+this.A,this.Q*a+this.R*b+this.w)}};
function Aa(a,b,c,d){if(c===undefined){this.O=a;this.Q=this.P=0;this.R=b;this.w=this.A=0}else{this.O=a;this.Q=this.P=0;this.R=b;this.A=c-a*c;this.w=d-b*d}}Aa.prototype=L.prototype;function Ba(a,b,c){var d=Math.cos(a);a=Math.sin(a);this.O=d;this.P=a;this.Q=-a;this.R=d;this.A=-b*d-c*a+b;this.w=b*a-c*d+c}Ba.prototype=L.prototype;function Ca(a,b){this.O=1;this.Q=this.P=0;this.R=1;this.A=a;this.w=b}Ca.prototype=L.prototype;
function Da(a,b,c,d,e,f,h,o,q,k){var i=(b+d)/2,g=(c+e)/2,j=(d+f)/2,l=(e+h)/2,p=(f+o)/2,v=(h+q)/2,y=(i+j)/2,A=(g+l)/2;j=(j+p)/2;l=(l+v)/2;var m=(y+j)/2,n=(A+l)/2,r=o-b,s=q-c;d=Math.abs((d-o)*s-(e-q)*r);f=Math.abs((f-o)*s-(h-q)*r);if((d+f)*(d+f)<k*(r*r+s*s))a.push(new va(m,n));else{Da(a,b,c,i,g,y,A,m,n,k);Da(a,m,n,j,l,p,v,o,q,k)}}function Ea(a){this.D=a}
Ea.prototype={clear:function(){for(var a=0;a<this.D.width*this.D.height*4;a++)this.D.data[a]=0},getImageData:H("D"),width:function(){return this.D.width},height:function(){return this.D.height},get:function(a,b){var c=this.D.width*b*4+a*4;return this.D.data[c]|this.D.data[c+1]<<8|this.D.data[c+2]<<16|this.D.data[c+3]<<24},Xa:function(a,b,c){a=this.D.width*b*4+a*4;this.D.data[a]=c&255;this.D.data[a+1]=c>>8&255;this.D.data[a+2]=c>>16&255;this.D.data[a+3]=c>>24&255},Ac:u()};
function Fa(a,b){this.aa=a;this.jb=b;this.data=[]}
Fa.prototype={width:H("aa"),height:H("jb"),getImageData:function(){var a=document.createElement("canvas");a.width=this.aa;a.height=this.jb;a=a.getContext("2d").getImageData(0,0,this.aa,this.jb);for(var b=this.aa*this.jb,c=0;c<b;c++){var d=this.data[c]===true?255:0;a.data[c*4]=d;a.data[c*4+1]=d;a.data[c*4+2]=d;a.data[c*4+3]=255}return a},get:function(a,b){return this.data[this.aa*b+a]===true},Xa:function(a,b,c){this.data[this.aa*b+a]=c},Ac:function(a,b,c){c=this.aa*a+c;for(a=this.aa*a+b;a<c;a++)this.data[a]=
!this.data[a]},ud:function(){for(var a=0;a<this.data.length-1;a++)if(this.data[a+1])return{x:a%this.aa,y:Math.floor(a/this.aa)};return null}};function Ga(){this.closed=false;this.h=[]}var Ha=[3,3,7,1],Ia=[1,1,3,0];
Ga.prototype={save:function(){var a={};a.strokeStyle=this.strokeStyle;a.fillStyle=this.fillStyle;a.lineWidth=this.lineWidth;a.d=this.h.concat();return a},load:function(a){this.h=a.d;this.strokeStyle=a.strokeStyle;this.fillStyle=a.fillStyle;this.lineWidth=a.lineWidth},moveTo:function(a,b){this.h.push(0,a,b)},lineTo:function(a,b){this.h.push(1,a,b)},bezierCurveTo:function(a,b,c,d,e,f){this.h.push(2,a,b,c,d,e,f)},close:function(){this.h.push(4)},c:function(a){for(var b=0;b<this.h.length;){switch(this.h[b]){case 0:a.moveTo(this.h[b+
1],this.h[b+2]);break;case 1:a.lineTo(this.h[b+1],this.h[b+2]);break;case 2:a.bezierCurveTo(this.h[b+1],this.h[b+2],this.h[b+3],this.h[b+4],this.h[b+5],this.h[b+6]);break;case 4:a.closePath();break;default:alert("Error!");break}b+=Ha[this.h[b]]}if(this.lineWidth!==undefined)a.lineWidth=this.lineWidth;if(this.fillStyle!==undefined)a.fillStyle=this.fillStyle;if(this.strokeStyle!==undefined)a.strokeStyle=this.strokeStyle;a.fill()},transform:function(a){for(var b=0,c,d;b<this.h.length;){d=Ia[this.h[b]];
console.log("pos=%d numPoints=%d",b,d);for(c=0;c<d;c++){var e=a.apply(this.h[b+1+c*2],this.h[b+1+c*2+1]);this.h[b+1+c*2]=e.x;this.h[b+1+c*2+1]=e.y}b+=Ha[this.h[b]]}},clone:function(){var a=new Ga;a.h=this.h.concat();a.fillStyle=this.fillStyle;a.strokeStyle=this.strokeStyle;return a},mc:function(a){for(var b=0,c,d,e=new K(this.h[1],this.h[2],0,0);b<this.h.length;){switch(this.h[b]){case 0:case 1:c=this.h[b+1];d=this.h[b+2];e.$a(c,d);break;case 2:var f=[],h=f,o=this.h[b+5],q=this.h[b+6];c!==o&&d!==
q&&Da(h,c,d,this.h[b+1],this.h[b+2],this.h[b+3],this.h[b+4],o,q,a*a);h.push(new va(o,q));for(h=0;h<f.length;h++)e.$a(f[h].x,f[h].y);break}b+=Ha[this.h[b]]}return e},append:function(a){this.h=this.h.concat(a.h)}};function S(a,b){this.J(a,b)}var U={strokeStyle:"#000000",fillStyle:"#ffffff",lineWidth:2,smoothness:0.3,sloppiness:0.5,shadow:false};
S.prototype={Ma:1,La:2,ib:3,ab:0.5522847498,dc:8,oa:function(){var a=[];this.closed&&a.push({name:"fillStyle",display:"Fill Colour",type:"colour"});a.push({name:"strokeStyle",display:"Outline Colour",type:"colour"});a.push({name:"lineWidth",display:"Outline Thickness",type:"select",b:[{name:"None",value:0},{name:"Pencil",value:1},{name:"Pen",value:2},{name:"Marker",value:4}]});this.i.length>0&&this.i[0].type===this.La?a.push({name:"smoothness",display:"Smoothness",type:"select",b:[{name:"Sharper",
value:0.1},{name:"Sharp",value:0.2},{name:"Smooth",value:0.3},{name:"Smoothest",value:0.5}]}):a.push({name:"sloppiness",display:"Sloppiness",type:"select",b:[{name:"Draftsman",value:0},{name:"Artist",value:0.25},{name:"Cartoonist",value:0.5},{name:"Child",value:1},{name:"Drunk",value:2}]});a.push({name:"shadow",display:"Shadow",type:"select",b:[{name:"Shadow",value:true},{name:"None",value:false}]});if(this.closed)a=a.concat(this.K.oa());return a},U:function(a){return a in U||!this.closed?this[a]:
this.K.U(a)},setProperty:function(a,b){if(a in U||!this.closed){U[a]=b;this[a]=b}else this.K.setProperty(a,b)},J:function(a,b){this.F.J.apply(this);this.strokeStyle=U.strokeStyle;this.fillStyle=U.fillStyle;this.lineWidth=U.lineWidth;this.smoothness=U.smoothness;this.sloppiness=U.sloppiness;this.shadow=U.shadow;this.ja=a;this.ka=b;this.p=a;this.q=b;this.i=[];this.closed=false;this.K=new O("");this.K.path=this},load:function(a){this.F.load.apply(this,[a]);this.strokeStyle=a.strokeStyle;this.fillStyle=
a.fillStyle;this.lineWidth=a.lineWidth;this.smoothness=a.smoothness;this.sloppiness=a.sloppiness;this.shadow=a.shadow;this.ja=a.startX;this.ka=a.startY;this.p=this.ja;this.q=this.ka;this.closed=a.closed;for(var b=this.i.length=0;b<a.segments.length;b++){var c=a.segments[b],d={la:0,ma:0,da:0,ea:0,type:c.type,x:c.x,y:c.y};if(c.r!==undefined)d.T=c.r;if(c.x1!==undefined){d.sa=c.x1;d.ya=c.y1}this.i.push(d)}if(a.textNode!==undefined){this.K=M(a.textNode);this.K.path=this}},save:function(){var a=this.F.save.apply(this);
a.type="PathNode";a.strokeStyle=this.strokeStyle;a.fillStyle=this.fillStyle;a.lineWidth=this.lineWidth;a.smoothness=this.smoothness;a.sloppiness=this.sloppiness;a.startX=this.ja;a.startY=this.ka;a.closed=this.closed;a.segments=[];a.shadow=this.shadow;for(var b=0;b<this.i.length;b++){var c=this.i[b],d={};d.type=c.type;if(c.type===this.Ma){d.x=c.x;d.y=c.y;d.r=c.T}else if(c.type===this.La){d.x=c.x;d.y=c.y}else if(c.type===this.ib){d.x=c.x;d.y=c.y;d.x1=c.sa;d.y1=c.ya;d.r=c.T}a.segments.push(d)}if(this.K.U("text")!==
"")a.textNode=this.K.save();return a},clear:function(){this.i.length=0;this.closed=false},Lb:function(){return this.i.length+1},wb:function(a){a===0&&alert("error");this.i.splice(a-1,1)},lineTo:function(a,b){this.i.push({type:this.Ma,x:a,y:b,la:0,ma:0,da:0,ea:0,T:[Math.random(),Math.random(),Math.random(),Math.random()]})},cb:function(a,b){this.i.push({type:this.La,x:a,y:b,la:0,ma:0,da:0,ea:0,length:0})},lb:function(a,b,c,d){this.i.push({type:this.ib,sa:a,ya:b,x:c,y:d,la:0,ma:0,da:0,ea:0,T:[Math.random()-
0.5,Math.random()-0.5,Math.random()-0.5,Math.random()-0.5]})},Ed:function(a){if(a){a=this.i[0];return a.type===this.Ma?wa(a.x,a.y,a.p,a.q):wa(a.la,a.ma,a.x,a.y)}else{a=this.i[this.i.length-1];return a.type===this.Ma?wa(a.fx,a.zd,a.p,a.q):wa(a.da,a.ea,a.p,a.q)}},Ad:function(){var a=this.i[this.i.length-1];return{x:a.p,y:a.q}},t:function(a){var b=this.u.apply(this.ja,this.ka);this.p=b.x;this.q=b.y;var c=b.x,d=b.y,e=null,f;if(this.closed&&this.i.length>0){f=this.i[this.i.length-1];f.x=this.ja;f.y=this.ka}for(b=
0;b<this.i.length;b++){f=this.i[b];if(f.type===this.Ma)this.wd(e,c,d,f);else if(f.type===this.La)this.vc(e,c,d,f);else f.type===this.ib&&this.vd(e,c,d,f);e=f;c=f.p;d=f.q}this.closed&&this.i.length>=3&&this.i[0].type===this.La&&this.vc(e,e.p,e.q,this.i[0],true);this.rect.x=this.p;this.rect.y=this.q;this.rect.width=0;this.rect.height=0;this.X=this.gd(this.dc);c=this.X[0].x;d=this.X[0].y;for(b=1;b<this.X.length;b++){this.rect.$a(this.X[b].x,this.X[b].y);c+=this.X[b].x;d+=this.X[b].y}c/=this.X.length;
d/=this.X.length;this.rect.Hd(this.lineWidth*2+1,this.lineWidth*2+1);if(this.rect.width<8){this.rect.x+=this.rect.width/2-4;this.rect.width=8}if(this.rect.height<8){this.rect.y+=this.rect.height/2-4;this.rect.height=8}if(this.closed){this.K.t(a);this.K.transform(new Ca(c-this.K.rect.x-this.K.rect.width/2,d-this.K.rect.y-this.K.rect.height/2))}},close:function(){this.closed=true},lc:function(){var a=this.i[this.i.length-1];Math.sqrt((a.x-this.ja)*(a.x-this.ja)+(a.y-this.ka)*(a.y-this.ka))<=8&&this.close()},
c:function(a){var b;a.save();a.lineWidth=this.lineWidth;a.strokeStyle=this.strokeStyle;a.fillStyle=this.fillStyle;a.lineJoin="round";if(this.shadow){a.shadowOffsetX=3;a.shadowOffsetY=3;a.shadowBlur=5;a.shadowColor="rgba(0,0,0,0.5)"}a.beginPath();a.moveTo(this.p,this.q);for(b=0;b<this.i.length;b++){var c=this.i[b];a.bezierCurveTo(c.la,c.ma,c.da,c.ea,c.p,c.q)}if(this.closed){a.closePath();a.fill();a.shadowColor="rgba(0,0,0,0)"}this.lineWidth>0&&a.stroke();a.restore();this.closed&&this.K.c(a)},db:aa(true),
Ta:function(a,b,c){c=8*c;if(a>=this.p-c&&a<this.p+c&&b>=this.q-c&&b<this.q+c)return 0;for(var d=this.closed?this.i.length-1:this.i.length,e=0;e<d;e++)if(a>=this.i[e].p-c&&a<this.i[e].p+c&&b>=this.i[e].q-c&&b<this.i[e].q+c)return e+1;return null},ia:function(a,b,c){if(a===0){this.ja=b;this.ka=c}else{this.i[a-1].x=b;this.i[a-1].y=c}},Ra:function(a,b){a.save();a.lineWidth=1*b;a.strokeStyle="#0050B7";var c=4*b;a.strokeRect(this.p-c,this.q-c,c*2,c*2);var d=this.i.length;if(this.closed)d-=1;for(var e=0;e<
d;e++)a.strokeRect(this.i[e].p-c,this.i[e].q-c,c*2,c*2);a.restore()},vd:function(a,b,c,d){var e=this.u.apply(d.x,d.y);d.p=e.x;d.q=e.y;e=this.u.apply(d.sa,d.ya);a=e.x;e=e.y;var f=Math.sqrt((a-b)*(a-b)+(e-c)*(e-c)),h=Math.sqrt((a-d.p)*(a-d.p)+(e-d.q)*(e-d.q));d.la=b+this.ab*(a-b)+d.T[0]*this.sloppiness*f/2;d.ma=c+this.ab*(e-c)+d.T[1]*this.sloppiness*f/2;d.da=d.p+this.ab*(a-d.p)+d.T[2]*this.sloppiness*h/1.5;d.ea=d.q+this.ab*(e-d.q)+d.T[3]*this.sloppiness*h/1.5},vc:function(a,b,c,d,e){var f=this.u.apply(d.x,
d.y);d.p=f.x;d.q=f.y;d.length=Math.sqrt((d.p-b)*(d.p-b)+(d.q-c)*(d.q-c));if(!d.length)d.length=1;d.cc=(d.p-b)/d.length;d.bd=(d.q-c)/d.length;f=d.cc;var h=d.bd;if(!e){d.da=d.p-d.length*this.smoothness*f;d.ea=d.q-d.length*this.smoothness*h}if(a&&a.cc!==undefined){f=(f+a.cc)*0.5;h=(h+a.bd)*0.5;a.da=b-a.length*this.smoothness*f;a.ea=c-a.length*this.smoothness*h}d.la=b+d.length*this.smoothness*f;d.ma=c+d.length*this.smoothness*h},wd:function(a,b,c,d){a=this.u.apply(d.x,d.y);d.p=a.x;d.q=a.y;a=Math.sqrt((d.p-
b)*(d.p-b)+(d.q-c)*(d.q-c))/10*this.sloppiness;if(a>20)a=20;d.p+=this.sloppiness*d.T[0]*a/4;d.q+=this.sloppiness*d.T[1]*a/4;d.fx=b;d.zd=c;var e=b,f=c,h=d.p,o=d.q;e+=a;h+=a;f+=a;o+=a;d.la=e+d.T[2]*(h-e);d.ma=f+d.T[2]*(o-f);e=b-a;h=d.p-a;f=c-a;o=d.q-a;d.da=e+d.T[3]*(h-e);d.ea=f+d.T[3]*(o-f)},ga:function(){var a;a=this.u.apply(this.ja,this.ka);this.ja=a.x;this.ka=a.y;for(var b=0;b<this.i.length;b++){var c=this.i[b];a=this.u.apply(c.x,c.y);c.x=a.x;c.y=a.y;if(c.sa!==undefined){a=this.u.apply(c.sa,c.ya);
c.sa=a.x;c.ya=a.y}}this.u=new L;this.K.ga();this.t()},transform:function(a){this.u=a.Tb(this.u)},Ga:D("u"),ha:function(a,b){if(a>=this.rect.x-8&&a<this.rect.x+8+this.rect.width&&b>=this.rect.y-8&&b<this.rect.y+8+this.rect.height)if(this.closed){var c;c=this.X;var d,e,f,h,o,q,k,i,g=0;if(c.length<3)c=0;else{f=c[c.length-1].x;h=c[c.length-1].y;for(i=0;i<c.length;i++){d=c[i].x;e=c[i].y;if(d>f){o=f;k=d;q=h;h=e}else{o=d;k=f;q=e;h=h}if(d<a===a<=f&&(b-q)*(k-o)<(h-q)*(a-o))g=!g;f=d;h=e}c=g}if(c)return this}else{a:{c=
this.X;d=8;d*=d;for(e=1;e<c.length;e++){k=c[e-1].x;f=c[e-1].y;i=c[e].x-k;o=c[e].y-f;q=((a-k)*i+(b-f)*o)/(i*i+o*o);if(q>1)q=1;else if(q<0)q=0;k=k+q*i-a;f=f+q*o-b;if(k*k+f*f<=d){c=true;break a}}c=false}if(c)return this}return null},gd:function(a){var b=[];b.push({x:this.p,y:this.q,De:0});for(var c=this.p,d=this.q,e=0;e<this.i.length;e++){var f=this.i[e],h=b,o=f.p,q=f.q;c!==o&&d!==q&&Da(h,c,d,f.la,f.ma,f.da,f.ea,o,q,a*a);h.push(new va(o,q));c=f.p;d=f.q}return b}};
S.prototype=$.extend({},I.prototype,S.prototype);S.prototype.F=I.prototype;window.PathNode=S;function Ja(a,b){this.J(a,b)}var Ka={arrowSize:15};
Ja.prototype={J:function(a,b){this.F.J.apply(this);this.arrowSize=Ka.arrowSize;this.e=[new S(a,b),new S(0,0)]},load:function(a){this.F.load.apply(this,[a]);this.arrowSize=a.arrowSize;this.e.length=0;this.e.push(M(a.path));this.e.push(new S(0,0));this.e[1].kd(this.e[0])},save:function(){var a=this.F.save.apply(this);a.type="ArrowNode";a.arrowSize=this.arrowSize;a.path=this.e[0].save();return a},ha:function(a,b){var c;for(c=0;c<this.e.length;c++)if(this.e[c].ha(a,b))return this;return null},t:function(a){var b,
c,d=this.e[1];this.e[0].t(a);b=this.e[0].Ad();c=this.e[0].Ed(false);var e,f,h,o;e=b.x-c.x*this.arrowSize;f=b.y-c.y*this.arrowSize;h=e+c.y*this.arrowSize/2;o=f-c.x*this.arrowSize/2;e+=-c.y*this.arrowSize/2;f+=c.x*this.arrowSize/2;d.clear();d.u=new L;d.ia(0,e,f);d.cb(b.x,b.y);d.cb(h,o);d.t(a);this.rect.x=this.e[0].rect.x;this.rect.y=this.e[0].rect.y;this.rect.width=this.e[0].rect.width;this.rect.height=this.e[0].rect.height;for(a=1;a<this.e.length;a++)this.rect.Ab(this.e[a].rect)},transform:function(a){for(var b=
0;b<this.e.length;b++)this.e[b].transform(a)},ga:function(){var a;for(a=0;a<this.e.length;a++)this.e[a].ga()},c:function(a){var b;for(b=0;b<this.e.length;b++)this.e[b].c(a)},lineTo:function(a,b){this.e[0].lineTo(a,b)},cb:function(a,b){this.e[0].cb(a,b)},lc:u(),Lb:function(){return this.e[0].Lb()},wb:function(a){this.e[0].wb(a)},db:aa(true),Ta:function(a,b,c){return this.e[0].Ta(a,b,c)},ia:function(a,b,c){this.e[0].ia(a,b,c)},Ra:function(a,b){this.e[0].Ra(a,b)},Kb:function(){return this.e[0].u},Ga:function(a){this.e[0].Ga(a)},
setProperty:function(a,b){if(a==="arrowSize")this.arrowSize=Ka[a]=b;else{this.e[0].setProperty(a,b);this.e[1].setProperty(a,b)}},U:function(a){return a==="arrowSize"?this.arrowSize:this.e[0].U(a)},Wa:[{name:"arrowSize",display:"Arrow Head Size",type:"select",b:[{name:"Tiny",value:10},{name:"Small",value:15},{name:"Medium",value:20},{name:"Large",value:30}]}],oa:function(){return this.e[0].oa().concat(this.Wa)}};Ja.prototype=$.extend({},I.prototype,Ja.prototype);Ja.prototype.F=I.prototype;
window.ArrowNode=Ja;function M(a){var b;if(a.type==="Node"||a.type==="ImageNode")a.type="BaseNode";try{b=new window[a.type]}catch(c){alert(a.type+": "+c)}b.load(a);return b}function Ma(){this.m=new I}Ma.prototype={Hb:function(a){for(var b=[],c={},d=0;d<a.length;d++){var e=a[d];if(e.Bc())e=e.parent;if(!(e.id in c)){c[e.id]=true;b.push(e)}}return b}};function Na(a,b){function c(m,n){A.bezierCurveTo(n[1].x,n[1].y,n[2].x,n[2].y,n[3].x,n[3].y);Oa.gb("Bezier: (%d,%d), (%d,%d), (%d,%d), (%d,%d)\n",n[0].x,n[0].y,n[1].x,n[1].y,n[2].x,n[2].y,n[3].x,n[3].y)}function d(m,n){return m.x*n.x+m.y*n.y}function e(m){var n=1-m;return 3*m*n*n}function f(m,n){var r=m.x-n.x,s=m.y-n.y;return Math.sqrt(r*r+s*s)}function h(m){return m.x*m.x+m.y*m.y}function o(m,n){var r=Math.sqrt(h(m));if(r!==0){m.x*=n/r;m.y*=n/r}return m}function q(m,n,r){r===undefined&&Oa.gb("Undef!");
r.x=m.x+n.x;r.y=m.y+n.y;return r}function k(m,n){return{x:m.x+n.x,y:m.y+n.y}}function i(m,n){return{x:m.x*n,y:m.y*n}}function g(m,n){return{x:m.x-n.x,y:m.y-n.y}}function j(m,n,r,s,z,F){var t,B=[],J,w=[[],[]],x=[],E,G;G=[{},{},{},{}];J=r-n+1;for(t=0;t<J;t++){E={x:z.x,y:z.y};var da={x:F.x,y:F.y};o(E,e(s[t]));o(da,3*s[t]*s[t]*(1-s[t]));B[t]=[E,da]}w[0][0]=0;w[0][1]=0;w[1][0]=0;w[1][1]=0;x[0]=0;for(t=x[1]=0;t<J;t++){w[0][0]+=d(B[t][0],B[t][0]);w[0][1]+=d(B[t][0],B[t][1]);w[1][0]=w[0][1];w[1][1]+=d(B[t][1],
B[t][1]);E=1-s[t];E=g(m[n+t],k(i(m[n],E*E*E),k(i(m[n],e(s[t])),k(i(m[r],3*s[t]*s[t]*(1-s[t])),i(m[r],s[t]*s[t]*s[t])))));x[0]+=d(B[t][0],E);x[1]+=d(B[t][1],E)}s=w[0][0]*w[1][1]-w[1][0]*w[0][1];t=w[0][0]*x[1]-w[0][1]*x[0];x=x[0]*w[1][1]-x[1]*w[0][1];if(s===0)s=w[0][0]*w[1][1]*1.0E-11;w=x/s;x=t/s;if(w<0||x<0){w=f(m[r],m[n])/3;G[0]=m[n];G[3]=m[r];q(G[0],o(z,w),G[1]);q(G[3],o(F,w),G[2]);return G}G[0]=m[n];G[3]=m[r];q(G[0],o(z,w),G[1]);q(G[3],o(F,x),G[2]);return G}function l(m,n,r){var s,z;z=[];for(s=
0;s<=m;s++)z[s]={x:n[s].x,y:n[s].y};for(s=1;s<=m;s++)for(n=0;n<=m-s;n++){z[n].x=(1-r)*z[n].x+r*z[n+1].x;z[n].y=(1-r)*z[n].y+r*z[n+1].y}return z[0]}function p(m){var n=Math.sqrt(Math.sqrt(h(m)));if(n!==0){m.x/=n;m.y/=n}return m}function v(m,n,r,s,z){var F,t,B,J=(r-n+1)/2;t=0;for(F=n+1;F<r;F++){B=l(3,s,z[F-n]);B=g(B,m[F]);B=h(B);if(B>=t){t=B;J=F}}return{Ec:t,Xc:J}}function y(m,n,r,s,z,F){var t,B,J,w,x,E;t=[{},{},{},{}];E=F*F;if(r-n+1===2){F=f(m[r],m[n])/3;t[0]=m[n];t[3]=m[r];q(t[0],o(s,F),t[1]);q(t[3],
o(z,F),t[2]);c(3,t)}else{w=[];w[0]=0;for(x=n+1;x<=r;x++)w[x-n]=w[x-n-1]+f(m[x],m[x-1]);for(x=n+1;x<=r;x++)w[x-n]/=w[r-n];B=w;t=j(m,n,r,B,s,z);x=v(m,n,r,t,B);w=x.Ec;x=x.Xc;if(w<F)c(3,t);else{if(w<E)for(E=0;E<4;E++){x=m;w=n;J=r;B=B;t=t;var G=void 0,da=[];da=[];for(G=w;G<=J;G++){var vb=da,wb=G-w,oa=t,xa=x[G],ya=B[G-w],T=[],za=[],pa=void 0,C=void 0,La=void 0;C=void 0;pa=l(3,oa,ya);for(C=0;C<=2;C++){T[C]={};T[C].x=(oa[C+1].x-oa[C].x)*3;T[C].y=(oa[C+1].y-oa[C].y)*3}for(C=0;C<=1;C++){za[C]={};za[C].x=(T[C+
1].x-T[C].x)*2;za[C].y=(T[C+1].y-T[C].y)*2}C=l(2,T,ya);La=l(1,za,ya);vb[wb]=ya-((pa.x-xa.x)*C.x+(pa.y-xa.y)*C.y)/(C.x*C.x+C.y*C.y+(pa.x-xa.x)*La.x+(pa.y-xa.y)*La.y)}J=da;t=j(m,n,r,J,s,z);x=v(m,n,r,t,J);w=x.Ec;x=x.Xc;if(w<F){c(3,t);return}B=J}J={};E=g(m[x-1],m[x]);w=g(m[x],m[x+1]);J.x=(E.x+w.x)/2;J.y=(E.y+w.y)/2;E=J=p(J);y(m,n,x,s,E,F);E.x=-E.x;E.y=-E.y;y(m,x,r,E,z,F)}}}var A=new Ga;A.moveTo(a[0].x,a[0].y);(function(m,n,r){var s;s=g(m[1],m[0]);s=s=p(s);var z=n-1;z=g(m[z-1],m[z]);z=p(z);y(m,0,n-1,s,
z,r)})(a,a.length,b*b);return A};function Pa(a){var b=document.createElement("canvas");b.width=a.width;b.height=a.height;b.getContext("2d").putImageData(a,0,0);b.style.borderWidth="1px";b.style.borderColor="#000000";b.style.borderStyle="solid";document.getElementById("debug").appendChild(b)}
function Qa(a,b,c,d,e){function f(k,i){var g,j,l;i=i.concat();i.sort(function(p,v){return p.y!==v.y?p.y-v.y:p.x-v.x});for(l=0;l<i.length-1;l++){for(;l<i.length&&i[l].va!==1;)l+=1;for(g=l;l<i.length&&i[l].va!==-1;)l+=1;j=l;j<i.length&&k.Ac(i[g].y,i[g].x+1,i[j].x)}}function h(k){k.width();k.height();var i,g,j=1,l=0,p=[];g=k.ud();if(g===null)return null;i=g.x;g=g.y;var v,y,A,m;v=k.get(i+j,g+l);y=k.get(i+j+l,g+l+j);A=k.get(i,g);m=k.get(i+l,g+j);if(v&&y&&!A&&m){g+=1;j=-1;l=0}else if(v&&y&&!A&&!m){i+=1;
l=1;j=0}else if(v&&!y&&!A&&!m){i+=1;j=0;l=1}var n=i,r=g,s=j,z=l;p.push({x:i-l,y:g+j,va:l});for(var F=0;;F++){v=k.get(i+j,g+l);y=k.get(i+j-l,g+l+j);A=k.get(i,g);m=k.get(i-l,g+j);if(v&&y&&A&&!m){i+=j;g+=l;v=l;l=j;j=-v;i+=j;g+=l;if(i===n&&g===r)break;p.push({x:i-l,y:g+j,va:l})}else if(v&&A&&!y&&!m){i+=j;g+=l;if(i===n&&g===r)break;p.push({x:i-l,y:g+j,va:l})}else if(!v&&!y&&A&&!m){v=l;l=-j;j=v;p.push({x:i-l,y:g+j,va:l});if(s===j&&z===l&&i===n&&g===r)break}else if(!v&&y&&A&&!m){v=l;l=-j;j=v;p.push({x:i-
l,y:g+j,va:l})}else{Oa.gb("Unknown situation: %s %s %s %s\n",v,y,A,m);break}}i=p;j=[i[0]];for(l=1;l<i.length;l++)if(i[l].x!==i[l-1].x||i[l].y!==i[l-1].y)j.push(i[l]);else j[j.length-1].va+=i[l].va;p=j;p.length>2&&p[0].x===p[p.length-1].x&&p[0].y===p[p.length-1].y&&p.pop();f(k,p);return p}b=Math.floor(b);c=Math.floor(c);var o=new Ea(a.getImageData(0,0,d,e));Pa(o.getImageData());d=new Fa(d,e);console.log("flood fill");(function(k,i,g,j){function l(z,F,t,B){z+B>=r.dd&&z+B<=r.ya&&n.push({y:z,we:F,xe:t,
w:B})}var p,v,y,A,m,n=[];p=0;var r={cd:0,dd:0,sa:k.width()+1,ya:k.height()+1};m=k.get(g,j);var s=m===0?m+1:m-1;s=4278222848;if(!(m===s||g<r.cd||g>r.sa||j<r.dd||j>r.ya)){l(j,g,g,1);for(l(j+1,g,g,-1);n.length>0;){p=n.pop();A=p.w;j=p.y+A;v=p.we;y=p.xe;for(g=v;g>=r.cd&&k.get(g,j)===m;g--){k.Xa(g,j,s);i.Xa(g,j,true)}if(g<v){p=g+1;p<v&&l(j,p,v-1,-A);g=v+1}else{for(g++;g<=y&&k.get(g,j)!==m;g++);if(g>y)continue;p=g}do{for(;g<=r.sa&&k.get(g,j)===m;g++){k.Xa(g,j,s);i.Xa(g,j,true)}l(j,p,g-1,A);g>y+1&&l(j,y+
1,g-1,-A);for(g++;g<=y&&k.get(g,j)!==m;g++);p=g}while(g<=y)}}})(o,d,b,c);Pa(o.getImageData());Pa(d.getImageData());b=new Ga;for(c=0;;c++){console.log("tracing...");if(c>100)throw"Trace limit exceeded";e=h(d);if(e===null||e.length===0)break;c>0&&e.reverse();Pa(d.getImageData());Oa.gb("NumPoints=%d\n",e.length);for(var q=0;q<e.length;q++){Oa.gb("(%d,%d)\n",e[q].x,e[q].y);o.Xa(e[q].x,e[q].y,4294901760)}a.lineWidth=2;a.strokeStyle="#800000";a.beginPath();e=Na(e,1);b.append(e)}Pa(o.getImageData());b.fillStyle=
"#800000";return b};function Ra(a){this.J(a)}var Sa={blur:5};
Ra.prototype={J:function(a){this.F.J.apply(this);this.blur=Sa.blur;this.G=a;this.canvas=document.createElement("canvas")},load:function(a){this.F.load.apply(this,[a]);this.blur=a.blur;this.G=M(a.child)},save:function(){var a=this.F.save.apply(this);a.type="EffectNode";a.blur=this.blur;a.child=this.G.save();return a},zc:function(){return this.blur>0},ha:function(a,b){if(this.G.ha(a,b))return this},t:function(a){if(this.zc()){this.G.t(this.canvas.getContext("2d"));var b=this.blur*2,c=this.G.rect;this.rect.x=
c.x-b;this.rect.y=c.y-b;this.rect.width=c.width+b*2;this.rect.height=c.height+b*2;this.canvas.width=this.rect.width;this.canvas.height=this.rect.height;a=this.canvas.getContext("2d");a.save();a.translate(-c.x+b,-c.y+b);this.G.c(a);a.restore();b=a.getImageData(0,0,this.canvas.width,this.canvas.height);c=this.blur;var d=b.width,e=b.height,f=[],h=b.data,o=1/(c*2*c*2),q,k;for(k=0;k<3;k++)for(q=0;q<4;q++){var i,g,j,l=0;l=q;g=j=1;for(f[0]=h[l];j<d;){f[j]=h[l]+f[j-1];j+=1;l+=4}for(;g<e;){f[j]=h[l]+f[j-d];
j++;l+=4;for(i=1;i<d;){f[j]=h[l]+f[j-d]+f[j-1]-f[j-d-1];i++;j++;l+=4}g++}l=c*d*4+c*4+q;for(g=c;g<e-c;g++){for(i=c;i<d-c;i++){j=i<c?0:i-c;var p=g<c?0:g-c,v=i+c>=d?d-1:i+c,y=g+c>=e?e-1:g+c;j=f[v+y*d]+f[j+p*d]-f[j+y*d]-f[v+p*d];h[l]=Math.round(j*o);l+=4}l+=c*2*4}}a.putImageData(b,0,0)}else this.G.t(a)},transform:function(a){this.G.transform(a)},ga:function(){this.G.ga()},c:function(a){this.zc()?a.drawImage(this.canvas,this.rect.x,this.rect.y):this.G.c(a)},db:function(){return this.G.db()},Ta:function(a,
b,c){return this.G.Ta(a,b,c)},ia:function(a,b,c){this.G.ia(a,b,c)},Ra:function(a,b){this.G.Ra(a,b)},Kb:function(){return this.G.u},Ga:function(a){this.G.Ga(a)},setProperty:function(a,b){if(a==="blur")this.blur=Sa[a]=b;else this.G.setProperty(a,b)},U:function(a){return a==="blur"?this.blur:this.G.U(a)},Wa:[{name:"blur",display:"Blur radius",type:"select",b:[{name:"None",value:0},{name:"Blur",value:5},{name:"Blur Lots",value:30}]}],oa:function(){return this.G.oa().concat(this.Wa)}};
Ra.prototype=$.extend({},I.prototype,Ra.prototype);Ra.prototype.F=I.prototype;window.EffectNode=Ra;function Ta(){this.Ja=null;this.files=[]}
Ta.prototype={pa:function(a,b,c){var d;try{d=new XMLHttpRequest}catch(e){try{d=new ActiveXObject("Msxml2.XMLHTTP")}catch(f){try{d=new ActiveXObject("Microsoft.XMLHTTP")}catch(h){d=null}}}d.open("POST",a,true);d.setRequestHeader("Content-Type","application/x-www-form-urlencoded");d.onreadystatechange=function(){if(d.readyState===4){var k={status:"",V:null};if(d.status===200)try{k.V=eval("("+d.responseText+")");k.status=k.V.status}catch(i){alert(i);k.status="Error in server response"}else k.status=
d.message?d.message:d.status===0?"Network error. Check internet connection":"Server returned status "+d.status;c(k)}};a="";var o=true;for(var q in b)if(b.hasOwnProperty(q)){o||(a+="&");o=false;a+=q+"="+escape(b[q])}d.send(a)},Cc:function(){return this.Ja!==null},Rb:function(a,b,c){var d=this;this.pa("index.php",{type:"login",username:a,password:b},function(e){var f=null;if(e.status==="ok"){d.Ja=a;d.files=e.V.files;d.files.sort(function(o,q){return parseInt(q.modificationDate,10)-parseInt(o.modificationDate,
10)});f=e.V.mapping;for(var h=0;h<d.files.length;h++)if(d.files[h].id in f)d.files[h].id=f[d.files[h].id]}c(e.status,f)})},Fb:function(a,b,c){this.pa("index.php",{type:"changepassword",oldpassword:a,newpassword:b},function(d){c(d.status)})},od:function(a,b,c){var d=this;this.pa("index.php",{type:"createuser",username:a,password:b},function(e){if(e.status==="ok"){d.Ja=a;for(var f=e.V.mapping,h=0;h<d.files.length;h++)if(d.files[h].id in f)d.files[h].id=f[d.files[h].id]}c(e.status,e.V.mapping)})},Sb:function(a){var b=
this;this.pa("index.php",{type:"logout"},function(c){if(c.status==="ok"){b.Ja=null;b.files=[]}a(c.status)})},Bd:function(a){var b=this;this.pa("index.php",{type:"listfiles"},function(c){if(c.status==="ok"){b.files=c.V.files;b.files.sort(function(d,e){return parseInt(e.Nd,10)-parseInt(d.Nd,10)})}a(c.status)})},nd:function(a,b,c){var d=this,e=Math.round((new Date).getTime()/1E3);this.pa("index.php",{type:"createfile",name:a,data:b},function(f){if(f.status==="ok"){d.files.unshift({id:f.V.id,name:a,creationDate:e,
modificationDate:e,shared:0});c(f.status,f.V.id)}else c(f.status,-1)})},bc:function(a,b){var c=this;this.pa("index.php",{type:"updatefile",id:a.id,name:a.name,data:a.data,shared:a.W},function(d){if(d.status==="ok")for(var e=0;e<c.files.length;e++)if(a.id===c.files[e].id){c.files[e].name=a.name;c.files[e].W=a.W}b(d.status)})},qd:function(a,b){var c=this;this.pa("index.php",{type:"deletefile",id:a},function(d){if(d.status==="ok")for(var e=0;e<c.files.length;e++)if(a===c.files[e].id){c.files.splice(e,
1);break}b(d.status)})},Rc:function(a,b){this.pa("index.php",{type:"readfile",id:a},function(c){c.status==="ok"?b(c.status,{id:c.V.id,name:c.V.name,data:c.V.data,W:c.V.shared==="1"}):b(c.status,null)})},me:D("Ja")};function Ua(){this.o=document.createElement("div");this.o.style.width="50px";this.o.style.height="320px";this.o.style.border="1px dotted #cccccc"}Ua.prototype={ba:function(a,b){var c=document.createElement("div"),d=document.createElement("img");d.src=a;d.o=c;c.appendChild(d);this.o.appendChild(c);$(c).mouseenter(function(){this.style.background="#9fb3e7"});$(c).mouseleave(function(){this.style.background="#ffffff"});b&&$(c).click(b)}};function Va(a){this.J(a)}var Wa={strokeStyle:"#000000",fillStyle:"#ffffff",lineWidth:2,shadow:false};
Va.prototype={Ma:1,La:2,ib:3,ab:0.5522847498,dc:8,oa:function(){var a=[];a.push({name:"fillStyle",display:"Fill Colour",type:"colour"});a.push({name:"strokeStyle",display:"Outline Colour",type:"colour"});a.push({name:"lineWidth",display:"Outline Thickness",type:"select",b:[{name:"None",value:0},{name:"Pencil",value:1},{name:"Pen",value:2},{name:"Marker",value:4}]});a.push({name:"shadow",display:"Shadow",type:"select",b:[{name:"Shadow",value:true},{name:"None",value:false}]});return a},setProperty:function(a,
b){Wa[a]=b;for(var c=0;c<this.e.length;c++)if(a=="fillStyle"){this.e[c].fillStyle=b;this.Ka[c].fillStyle=b}},U:function(a){switch(a){case "fillStyle":return this.e[0].fillStyle;case "strokeStyle":return this.e[0].strokeStyle;case "lineWidth":return this.e[0].lineWidth}},J:function(a){if(a===undefined)a=new Ga;this.F.J.apply(this);this.e=[a];this.Ka=[a.clone()]},load:function(a){this.F.load.apply(this,[a]);this.e=[];for(var b=0;b<a.paths.length;b++){var c=new Ga;c.load(a.paths[b]);this.e.push(c);this.Ka.push(c.clone())}},
save:function(){var a=this.F.save.apply(this);a.type="SimplePathNode";a.paths=[];for(var b=0;b<this.e.length;b++)a.paths.push(this.e[b].save());return a},t:function(){console.log("Formatting.");this.Ka=[];for(var a=0;a<this.e.length;a++){var b=this.e[a].clone();b.transform(this.u);this.Ka.push(b);if(a===0)this.rect=b.mc(8);else this.rect.Ab(b.mc(8))}if(this.rect.width<8){this.rect.x+=this.rect.width/2-4;this.rect.width=8}if(this.rect.height<8){this.rect.y+=this.rect.height/2-4;this.rect.height=8}},
c:function(a){console.log("drawing.");a.save();a.beginPath();for(var b=0;b<this.Ka.length;b++)this.Ka[b].c(a);a.restore()},ga:function(){for(var a=0;a<this.e.length;a++)this.e[a]=this.Ka[a]},ha:function(a,b){return this.rect.rc(a,b)?this:null}};Va.prototype=$.extend({},I.prototype,Va.prototype);Va.prototype.F=I.prototype;window.SimplePathNode=Va;function Xa(a,b,c){this.m=a;this.f=b;this.Db=[];this.ve=c}Xa.prototype={execute:function(){for(var a=this.Db.length=0;a<this.f.length;a++){this.Db.push(this.f[a].save());this.f[a].transform(this.ve);this.f[a].t(R.j.a)}},M:function(){for(var a=0;a<this.f.length;a++){this.f[a].load(this.Db[a]);this.f[a].t(R.j.a)}}};function Ya(a,b,c){this.view=a;this.m=b;this.l=c}
Ya.prototype={execute:function(){this.view.N();this.m.H(this.l,0);this.view.Ya(null);this.view.ca(this.l);this.view.na()},M:function(){this.m.removeChild(this.l);this.view.N();this.view.Ya(null)}};function Za(a,b,c){this.n=a;this.selection=a.Hb(b);this.Wb=[];this.type=c}
Za.prototype={execute:function(){for(var a=this.Wb.length=0;a<this.selection.length;a++){var b=this.selection[a],c=b.parent,d=c.removeChild(b);this.Wb.push(d);switch(this.type){case 0:c.H(b,0);break;case 1:c.H(b,c.children.length);break;case 2:d>0?c.H(b,d-1):c.H(b,d);break;case 3:d<c.children.length?c.H(b,d+1):c.H(b,d);break}}},M:function(){for(var a=0;a<this.selection.length;a++){var b=this.selection[a],c=b.parent;c.removeChild(b);c.H(b,this.Wb[a])}}};
function $a(a,b){this.m=a;this.selection=b.concat();this.parents=[];this.sb=[];for(var c=0;c<this.selection.length;c++)this.parents.push(this.m.uc(this.selection[c]))}$a.prototype={execute:function(){for(var a=this.sb.length=0;a<this.selection.length;a++)this.sb.push(this.parents[a].removeChild(this.selection[a]))},M:function(){for(var a=0;a<this.selection.length;a++)this.sb[a]>=0&&this.parents[a].children.splice(this.sb[a],0,this.selection[a])}};
function ab(a,b,c){this.m=b;this.f=[];this.view=a;this.view.zb(c);c=this.view.n.Hb(c);a=new Ca(10,10);for(b=0;b<c.length;b++){var d=c[b].duplicate();this.f.push(d);d.transform(a);d.t(this.view.a)}}ab.prototype={execute:function(){this.view.N();for(var a=0;a<this.f.length;a++){this.m.H(this.f[a],-1);this.view.ca(this.f[a])}this.view.na()},M:function(){this.view.N();for(var a=0;a<this.f.length;a++)this.m.removeChild(this.f[a]);this.view.na()}};
function bb(a,b,c,d,e,f){this.l=a;this.handle=b;this.xd=c;this.yd=d;this.pe=e;this.qe=f}bb.prototype={execute:function(){this.l.ga();this.l.ia(this.handle,this.pe,this.qe);this.l.t(R.j.a)},M:function(){this.l.ga();this.l.ia(this.handle,this.xd,this.yd);this.l.t(R.j.a)}};function cb(a){this.view=a;this.f=this.view.selection.concat();this.view.zb(this.f);this.Vb=[];this.Ub=[]}
cb.prototype={execute:function(){this.qb=new I;this.Ub.length=0;for(var a=this.Vb.length=0;a<this.f.length;a++){var b=this.f[a];if(b.parent!==null){this.Vb.push(b.parent);this.Ub.push(b.parent.removeChild(b));this.qb.H(b,this.qb.children.length)}}this.view.n.m.H(this.qb,this.view.n.m.children.length)},M:function(){this.view.n.m.removeChild(this.qb);for(var a=this.f.length-1;a>=0;a--){var b=this.f[a];b.parent!==null&&this.Vb[a].H(b,this.Ub[a])}}};
function db(a){this.view=a;this.f=this.view.selection.concat();this.view.zb(this.f);this.Mb=[]}
db.prototype={execute:function(){for(var a={},b=0;b<this.f.length;b++){var c=this.f[b].parent;if(c.parent!==null){var d=c.parent;if(!(c.id in a)){a[c.id]=true;var e=d.removeChild(c),f=c.children.concat();this.Mb.push({l:c,yc:d,index:e,children:f});for(var h=0;h<f.length;h++){c.removeChild(f[h]);d.H(f[h],e+h)}}}}},M:function(){for(var a=this.Mb.length-1;a>=0;a--){for(var b=this.Mb[a],c=b.children.length-1;c>=0;c--){b.yc.removeChild(b.children[c]);b.l.H(b.children[c],0)}b.yc.H(b.l,b.index)}}};
function eb(a,b,c,d){this.view=a;this.w=this.A=0;this.Jb=false;this.S=b;this.ra(c,d)}
eb.prototype={ra:function(a,b){this.A=a;this.w=b;this.Jb=true},Ua:function(a,b){if(this.Jb){var c=this.view.a;this.view.c();c.save();c.strokeStyle="#0050B7";c.lineWidth=2/this.view.scale;c.fillStyle="rgba(0, 80, 183, 0.2)";var d=new K(this.A+0.5,this.w+0.5,a-this.A,b-this.w);c.fillRect(d.x,d.y,d.width,d.height);c.strokeRect(d.x,d.y,d.width,d.height);c.restore()}},fb:function(a,b){this.Jb=false;this.view.ke(new K(this.A,this.w,a-this.A,b-this.w));this.view.na();this.view.c();this.view.g=this.S}};
function fb(a,b,c,d,e,f){this.view=a;this.handle=c;this.S=b;this.re=d;this.view.Uc(this.handle===this.view.Na);this.ra(e,f)}
fb.prototype={ra:function(a,b){this.A=a;this.w=b;for(var c=this.f=this.view.Dd(),d=[],e=0;e<c.length;e++)d.push(c[e].Kb());this.Dc=d;this.s=new K(this.view.k.x,this.view.k.y,this.view.k.width,this.view.k.height);if(this.handle===this.view.Na){this.nb=this.s.x+this.s.width/2;this.ob=this.s.y+this.s.height/2;this.oe=Math.atan2(this.ob-b,a-this.nb)}},xc:function(a,b){var c=a-this.A,d=b-this.w;switch(this.handle){case this.view.fc:c=(a-this.s.x)/this.s.width;d=(this.s.y+this.s.height-b)/this.s.height;
c=new Aa(c,d,this.s.x,this.s.y+this.s.height);break;case this.view.hc:c=(a-this.s.x)/this.s.width;d=(b-this.s.y)/this.s.height;c=new Aa(c,d,this.s.x,this.s.y);break;case this.view.ic:c=(this.s.x+this.s.width-a)/this.s.width;d=(b-this.s.y)/this.s.height;c=new Aa(c,d,this.s.x+this.s.width,this.s.y);break;case this.view.gc:c=(this.s.x+this.s.width-a)/this.s.width;d=(this.s.y+this.s.height-b)/this.s.height;c=new Aa(c,d,this.s.x+this.s.width,this.s.y+this.s.height);break;case this.view.Na:c=new Ba(Math.atan2(this.ob-
b,a-this.nb)-this.oe,this.nb,this.ob);break;default:c=new Ca(c,d)}return c},Ua:function(a,b){for(var c=this.xc(a,b),d=0;d<this.f.length;d++){this.f[d].Ga(c.Tb(this.Dc[d]));this.f[d].t(R.j.a)}this.view.$c(c);if(this.handle===this.view.Na){this.view.xb=a;this.view.yb=b}this.view.c();if(this.handle===this.view.Na){c=this.view.a;c.save();c.beginPath();c.strokeStyle="#0050B7";c.lineWidth=1/this.view.scale;c.moveTo(this.nb,this.ob);c.lineTo(a,b);c.stroke();c.restore()}},fb:function(a,b){var c;if(a!==this.A||
b!==this.w){c=this.xc(a,b);for(var d=0;d<this.f.length;d++)this.f[d].Ga(this.Dc[d]);this.view.v.execute(new Xa(this.view.n.m,this.f,c))}else if(this.re)if((c=this.view.n.m.ha(a,b))&&c.db()){this.view.N();this.view.Ya(c)}this.view.$c(new L);this.view.Uc(true);this.view.kb();this.view.c();this.view.g=this.S}};function gb(a,b,c,d,e,f){this.view=a;this.l=c;this.handle=d;this.S=b;this.ra(e,f)}
gb.prototype={ra:function(a,b){this.A=a;this.w=b;this.l.ga()},Ua:function(a,b){this.l.ia(this.handle,a,b);this.l.t(this.view.a);this.view.c()},fb:function(a,b){if(a!==this.A||b!==this.w)this.view.v.execute(new bb(this.l,this.handle,this.A,this.w,a,b),true);this.view.c();this.view.g=this.S}};
function hb(a,b,c,d,e){this.view=a;this.S=b;this.ce=this.view.canvas.width;this.be=this.view.canvas.height;this.A=e.pageX;this.w=e.pageY;var f=this;this.Gc=function(h){f.Yd(h.pageX,h.pageY);h.stopPropagation()};this.ad=function(h){f.Zd(h.pageX,h.pageY);h.stopPropagation()};$(document).ed("mousemove",this.Gc);$(document).ed("mouseup",this.ad)}
hb.prototype={Yd:function(a,b){this.view.canvas.width=this.ce+a-this.A;this.view.canvas.height=this.be+b-this.w;this.view.c()},Zd:function(){$(document).se("mousemove",this.Gc);$(document).se("mouseup",this.ad);this.view.g=this.S}};function V(a,b,c,d){this.view=a;this.S=b;this.l=null;this.Hc=0;this.Jd=c;this.Fd=d;this.view.canvas.style.cursor="crosshair";this.view.ac("Click to place first point of line");this.view.c()}
V.prototype={Xb:function(a){if(a.keyCode===27){this.l!==null&&this.l.parent.removeChild(this.l);this.tc()}},jc:function(a,b){this.Jd?this.l.cb(a,b):this.l.lineTo(a,b)},Nc:function(a,b){if(this.l===null){this.l=this.Fd?new Ja(a,b):new S(a,b);this.jc(a,b);this.l.t(this.view.a);this.view.n.m.H(this.l,0);this.index=1;this.view.ac("Click to place another point, or double-click to end the line");this.view.c();this.Hc=2}else{this.jc(a,b);this.Hc++;this.index+=1}},Ua:function(a,b){if(this.l){this.l.ia(this.index,
a,b);this.l.t(this.view.a);this.view.c()}},Lc:function(){if(this.l){var a=this.l.Lb();this.l.wb(a-1);this.l.wb(a-2);this.l.lc();this.l.t();this.view.v.execute(new Ya(this.view,this.view.n.m,this.l),true);this.view.N();this.view.Ya(null);this.view.ca(this.l);this.view.na()}this.tc()},tc:function(){this.view.g=this.S;this.view.canvas.style.cursor="default";this.view.ac(null);this.view.c()}};function ib(a,b){this.view=a;this.view.canvas.style.cursor="crosshair";this.S=b}
ib.prototype={ra:function(a,b){this.view.canvas.style.cursor="default";this.view.g=this.S;var c=Qa(this.view.a,a,b,this.view.canvas.width,this.view.canvas.height);this.view.v.execute(new Ya(this.view,this.view.n.m,new Va(c)),false);this.view.update()}};function jb(a){this.view=a}
jb.prototype={Ua:u(),ra:function(a,b,c){var d;if(this.view.ge(a,b))this.view.g=new hb(this.view,this,a,b,c);else if(d=this.view.Cd(a,b))this.view.g=new fb(this.view,this,d,false,a,b);else if(this.view.selection.length&&this.view.k.rc(a,b))this.view.g=new fb(this.view,this,-1,true,a,b);else{c.shiftKey||this.view.N();if(this.view.Sa){c=this.view.Sa;d=c.Ta(a,b,1/this.view.scale);if(d!==null){this.view.g=new gb(this.view,this,c,d,a,b);return}}if(c=this.view.n.m.ha(a,b)){d=c===this.view.Sa;var e=this.view.Kd(c);
if(!e){this.view.ca(c);this.view.na()}this.view.g=new fb(this.view,this,-1,!d&&e,a,b)}else{this.view.Ya(null);this.view.g=new eb(this.view,this,a,b)}this.view.c()}},fb:u(),Xb:function(a){var b=a.keyCode;if(b===36){if(this.view.selection.length){this.view.v.execute(new Za(this.view.n,this.view.selection,0));this.view.update()}}else if(b===35){if(this.view.selection.length){this.view.v.execute(new Za(this.view.n,this.view.selection,1));this.view.update()}}else if(b===33){if(this.view.selection.length){this.view.v.execute(new Za(this.view.n,
this.view.selection,2));this.view.update()}}else if(b===34){if(this.view.selection.length){this.view.v.execute(new Za(this.view.n,this.view.selection,3));this.view.update()}}else if(b===46||b===8){if(this.view.selection.length){this.view.v.execute(new $a(this.view.n.m,this.view.selection));this.view.N();this.view.update()}}else if(b===68&&a.ctrlKey===true){if(this.view.selection.length){this.view.v.execute(new ab(this.view,this.view.n.m,this.view.selection));this.view.update()}}else if(b===67)this.view.g=
new V(this.view,this,true,false);else if(b===76)this.view.g=new V(this.view,this,false,false);else if(b===71&&a.ctrlKey&&a.shiftKey)this.view.v.execute(new db(this.view));else if(b===71&&a.ctrlKey)this.view.v.execute(new cb(this.view));else if(!(b===85&&a.ctrlKey))if(b===107&&a.shiftKey||b===187&&!a.shiftKey){this.view.scale=1;this.view.Z=0;this.view.$=0;this.view.c()}else if(b===107||b===187){this.view.scale*=1.1;this.view.c()}else if(b===109||b===189){this.view.scale/=1.1;this.view.c()}else if(b===
38){this.view.$=Math.min(this.view.$+16,0);this.view.c()}else if(b===39){this.view.Z=Math.max(-(this.view.canvas.width*this.view.scale-this.view.canvas.width),this.view.Z-16);this.view.c()}else if(b===40){this.view.$=Math.max(-(this.view.canvas.height*this.view.scale-this.view.canvas.height),this.view.$-16);this.view.c()}else if(b===37){this.view.Z=Math.min(this.view.Z+16,0);this.view.c()}else if(b===192&&a.shiftKey){this.view.canvas.height*=1.1;this.view.c()}else if(b===192)this.view.g=new ib(this.view,
this)}};function kb(a){this.selection=a;this.Ic=null}kb.prototype={execute:function(){var a,b=[];if(this.selection.length!==0){for(a=0;a<this.selection.length;a++)b.push(this.selection[a].save());try{this.Ic=window.localStorage.getItem("clipboard");window.localStorage.setItem("clipboard",window.JSON.stringify(b))}catch(c){alert(c)}}},M:function(){window.localStorage.setItem("clipboard",this.Ic)}};function lb(a,b){this.view=a;this.hd=b;this.Jc=0}
lb.prototype={execute:function(){var a,b,c;this.Jc=this.view.n.m.children.length;try{a=window.JSON.parse(""+this.hd);this.view.N();for(b=0;b<a.length;b++){c=M(a[b]);this.view.n.m.H(c,-1);c.t(this.view.a);this.view.ca(c)}this.view.na();this.view.c()}catch(d){alert("Error reading Zwibbler clipboard: "+d)}},M:function(){this.view.n.m.children.length=this.Jc;this.view.N();this.view.na();this.view.c()}};var ia;
function mb(a,b,c){ia=this;this.canvas=a;this.a=this.canvas.getContext("2d");this.rb=c;c.view=this;this.n=new Ma;this.t();this.selection=[];this.k=new K(0,0,0,0);this.Sa=null;this.v=b;this.scale=1;this.$=this.Z=0;this.Ob=null;this.Nb=document.createElement("img");this.c();this.fc=1;this.hc=2;this.ic=3;this.gc=4;this.Na=5;this.ec=4;this.Bb=9;this.Fc=null;this.hb=new L;this.sc=true;this.Fa=1;this.g=new jb(this);var d=this,e=parseInt(this.canvas.style.borderWidth,10);this.border=e;$(this.canvas).mousemove(function(f){if(d.g.Ua){var h=
$(d.canvas).offset();d.g.Ua((f.pageX-h.left-e-d.Z)/d.scale,(f.pageY-h.top-e-d.$)/d.scale)}});$(this.canvas).mousedown(function(f){var h=$(d.canvas).offset();d.g.ra&&d.g.ra((f.pageX-h.left-e-d.Z)/d.scale,(f.pageY-h.top-e-d.$)/d.scale,f);f.preventDefault()});$(this.canvas).mouseup(function(f){var h=$(d.canvas).offset();d.g.fb&&d.g.fb((f.pageX-h.left-e-d.Z)/d.scale,(f.pageY-h.top-e-d.$)/d.scale);f.preventDefault()});$(this.canvas).click(function(f){var h=$(d.canvas).offset();$(d.canvas).focus();d.g.Nc&&
d.g.Nc((f.pageX-h.left-e-d.Z)/d.scale,(f.pageY-h.top-e-d.$)/d.scale);f.preventDefault()});$(this.canvas).dblclick(function(f){var h=$(d.canvas).offset();d.g.Lc&&d.g.Lc((f.pageX-h.left-e-d.Z)/d.scale,(f.pageY-h.top-e-d.$)/d.scale);f.preventDefault()});$(this.canvas).keydown(function(f){d.g.Xb&&d.g.Xb(f);f.preventDefault();return false});$(this.canvas).keyup(function(f){d.g.Xd&&d.g.Xd(f);f.preventDefault();return false})}
mb.prototype={getSelection:function(){var a=this.selection.concat();this.zb(a);return this.n.Hb(a)},clear:function(){this.a.setTransform(1,0,0,1,0,0);this.a.clearRect(0,0,this.canvas.width,this.canvas.height)},t:function(){this.n.m.t(this.a)},update:function(){this.n.m.t();this.kb();this.c()},ac:function(a){this.Ob=a;this.Nb.src="button.cgi?font=Arial&size=11&text="+encodeURIComponent(this.Ob)+"&fill=rgba(0,0,0,0.5)"},Pb:function(){if(this.g instanceof V)this.g=this.g.S;this.g=new V(this,this.g,false,
false)},Ib:function(){if(this.g instanceof V)this.g=this.g.S;this.g=new V(this,this.g,true,false)},Cb:function(){if(this.g instanceof V)this.g=this.g.S;this.g=new V(this,this.g,true,true)},sd:function(){this.a.save();this.a.setTransform(1,0,0,1,0,0);this.a.fillStyle="#ffffff";this.a.fillRect(-1,-1,this.canvas.width+1,this.canvas.height+1);this.n.m.c(this.a);this.a.restore()},c:function(){this.clear();this.a.setTransform(this.scale,0,0,this.scale,this.Z,this.$);this.n.m.c(this.a);if(this.selection.length>
0){this.a.save();this.a.strokeStyle="#000000";this.a.lineWidth=1/this.scale;var a=this.hb.apply(this.k.x,this.k.y),b=this.hb.apply(this.k.x+this.k.width,this.k.y),c=this.hb.apply(this.k.x+this.k.width,this.k.y+this.k.height),d=this.hb.apply(this.k.x,this.k.y+this.k.height),e=new va(this.xb,this.yb),f=this.ec/this.scale;this.a.strokeRect(b.x-f,b.y-f,f*2,f*2);this.a.strokeRect(a.x-f,a.y-f,f*2,f*2);this.a.strokeRect(d.x-f,d.y-f,f*2,f*2);this.a.strokeRect(c.x-f,c.y-f,f*2,f*2);if(this.sc){this.a.beginPath();
this.a.strokeStyle="#008000";this.a.lineWidth=3/this.scale;this.a.moveTo(e.x,e.y);this.a.arc(e.x,e.y,6/this.scale,0,1.5*Math.PI,false);this.a.stroke()}this.a.restore()}this.Sa&&this.Sa.Ra(this.a,1/this.scale);this.Fc&&this.Fc.c(this.a);if(this.Ob!==null&&this.Nb.complete)try{this.a.drawImage(this.Nb,0,0)}catch(h){}this.a.save();this.a.setTransform(1,0,0,1,0,0);this.a.lineWidth=1;this.a.strokeStyle="#4fa0d3";this.a.beginPath();for(a=this.Bb;a>0;a-=3){this.a.moveTo(this.canvas.width,this.canvas.height-
a);this.a.lineTo(this.canvas.width-a,this.canvas.height)}this.a.stroke();this.a.restore()},ke:function(a){for(var b=0;b<this.n.m.children.length;b++){var c=this.n.m.children[b];if(c.children.length>0){for(var d=true,e=0;e<c.children.length;e++)a.contains(c.children[e].rect)||(d=false);d&&this.ca(c.children[0])}else a.contains(this.n.m.children[b].rect)&&this.ca(c,false)}},$c:D("hb"),Uc:D("sc"),na:function(){this.kb();this.rb.Md(this.selection)},Ya:D("Sa"),Kd:function(a){return a.Fa===this.Fa},Dd:function(){return this.selection.concat()},
ge:function(a,b){a*=this.scale;b*=this.scale;return a>=this.canvas.width-this.Bb&&a<this.canvas.width+this.border&&b>=this.canvas.height-this.Bb&&b<this.canvas.height+this.border},Cd:function(a,b){if(this.selection.length){var c=this.ec*2/this.scale;if(a>=this.k.x-c&&a<this.k.x+c)if(b>=this.k.y-c&&b<this.k.y+c)return this.gc;else{if(b>=this.k.y+this.k.height-c&&b<this.k.y+this.k.height+c)return this.ic}else if(a>=this.k.x+this.k.width-c&&a<this.k.x+this.k.width+c)if(b>=this.k.y-c&&b<this.k.y+c)return this.fc;
else if(b>=this.k.y+this.k.height-c&&b<this.k.y+this.k.height+c)return this.hc;if(a>=this.xb-c&&a<this.xb+c&&b>=this.yb-c&&b<this.yb+c)return this.Na}return null},ca:function(a,b){this.Ya(null);if(a.Fa!==this.Fa){b&&this.N();this.selection.push(a);a.Fa=this.Fa;if(a.parent&&a.parent.parent!==null)for(var c=a.parent,d=0;d<c.children.length;d++)this.ca(c.children[d]);a.children.length>0&&this.ca(a.children[0])}},kb:function(){if(this.selection.length!==0){var a=this.selection[0];this.k.x=a.rect.x;this.k.y=
a.rect.y;this.k.width=a.rect.width;this.k.height=a.rect.height;for(a=1;a<this.selection.length;a++)this.k.Ab(this.selection[a].rect);this.xb=this.k.x+this.k.width-20/this.scale;this.yb=this.k.y}},N:function(){if(this.selection.length>0){this.Fa+=1;this.selection.length=0}},kc:function(a){a.Wc=this.Vd++;for(var b=0;b<a.children.length;b++)this.kc(a.children[b])},zb:function(a){this.Vd=0;this.kc(this.n.m);a.sort(function(b,c){return b.Wc-c.Wc})},copy:function(){this.v.execute(new kb(this.getSelection()))},
Qc:function(){try{var a=window.localStorage.getItem("clipboard");a===null?alert("Zwibbler clipboard is empty."):this.v.execute(new lb(this,a))}catch(b){alert("Error reading zwibbler clipboard: "+b)}}};var R=null;function nb(a,b){R.v.clear();R.j.N();R.j.n.m=M(a);R.z=b;R.j.update()}function ob(a){var b={};a=a.split("?");a=a[a.length-1].split("&");for(var c=0;c<a.length;c++){var d=a[c].split("=");if(d[0])try{b[d[0].toLowerCase()]=d.length>1?window.ze?decodeURIComponent(d[1].replace(/\+/g," ")):unescape(d[1]):""}catch(e){}}return b}
function pb(a){var b=this;this.v=new ua;this.o=document.getElementById(a);a=new Ua;a.ba("wd-box.png",function(){b.Td()});a.ba("wd-circle.png",function(){b.Qd()});a.ba("wd-line.png",function(){b.Pb()});a.ba("wd-curve.png",function(){b.Ib()});a.ba("wd-arrow.png",function(){b.Cb()});a.ba("wd-text.png",function(){b.Ud()});a.ba("wd-undo.png",function(){b.M()});a.ba("wd-redo.png",function(){b.$b()});a.ba("wd-copy.png",function(){b.j.copy()});a.ba("wd-paste.png",function(){b.j.Qc()});a.o.style.cssFloat=
"left";this.o.appendChild(a.o);this.canvas=$("<canvas width='700' tabindex='1' height='700'>")[0];this.canvas.style.borderColor="black";this.canvas.style.borderWidth="2px";this.canvas.style.borderStyle="solid";this.canvas.style.borderTop="2px solid white";this.canvas.style.cssFloat="left";this.canvas.style.cursor="default";this.rb=new ta;this.j=new mb(this.canvas,this.v,this.rb);this.o.appendChild(this.canvas);this.o.appendChild(this.rb.o);function c(){b.canvas.width=$(window).width()-400;b.canvas.height=
$(window).height()-$(b.canvas).offset().top-30;b.j.c()}$(window).resize(c);$(document).ready(c);a=document.createElement("div");a.style.clear="both";var d=document.createElement("a");d.appendChild(document.createTextNode("Open as Image in New Window"));d.href="";d.onclick=function(){b.j.sd();window.open(b.canvas.toDataURL());b.j.c();return false};a.appendChild(d);this.o.appendChild(a);this.z={name:"Drawing created on "+(new Date).toLocaleDateString(),td:-1,W:0};this.hasFocus=false;R=this;a=ob(window.location.href);
if("drawdoc"in a){var e;try{e=window.JSON.parse(a.Ae)}catch(f){alert("Error loading drawing.");return}this.j.n.m=M(e);this.j.update()}}
pb.prototype={fa:function(){return this.v.fa},M:function(){if(this.v.pc()){this.v.M();this.j.update()}},$b:function(){if(this.v.oc()){this.v.$b();this.j.update()}},Rd:function(){this.j.N();this.v.clear();this.j.n=new Ma;this.j.update();this.z={name:"Drawing created on "+(new Date).toLocaleDateString(),td:-1,W:0}},Td:function(){var a=new S(10,10);a.lineTo(110,10);a.lineTo(110,110);a.lineTo(10,110);a.lineTo(10,10);a.close();this.v.execute(new Ya(this.j,this.j.n.m,a));this.j.update()},Qd:function(){var a=
new S(50,0);a.lb(100,0,100,50);a.lb(100,100,50,100);a.lb(0,100,0,50);a.lb(0,0,50,0);a.close();this.v.execute(new Ya(this.j,this.j.n.m,a));this.j.update()},Ud:function(){this.v.execute(new Ya(this.j,this.j.n.m,new O("Lorum ipsum dolor")));this.j.update()},Pb:function(){this.j.Pb()},Ib:function(){this.j.Ib()},Cb:function(){this.j.Cb()},copy:function(){var a=this.j.getSelection();if(a.length!==0){var b,c=[];for(b=0;b<a.length;b++)c.push(a[b].save());try{window.localStorage.setItem("clipboard",window.JSON.stringify(c))}catch(d){alert(d)}}},
Qc:function(){var a=window.localStorage.getItem("clipboard");if(a===null)alert("Zwibbler clipboard is empty.");else{var b,c,d;try{b=window.JSON.parse(""+a);this.j.N();for(c=0;c<b.length;c++){d=M(b[c]);this.j.n.m.H(d,-1);d.t(this.j.a);this.j.ca(d)}this.j.na();this.j.c()}catch(e){alert("Error reading Zwibbler clipboard: "+e)}}}};function qb(a){return window.JSON.stringify(a)};function rb(){}rb.prototype.hide=function(){this.o.remove()};rb.prototype.show=function(a){this.o=$("<div>");var b=$(window);this.o.css("position","fixed");this.o.css("background","black");this.o.css("opacity","0.25");this.o.css("left","0");this.o.css("top","0");this.o.css("zindex","1");this.o.css("width",""+b.width()+"px");this.o.css("height",""+b.height()+"px");this.o.css("display","none");this.o.click(function(){a()});$("body").append(this.o);this.o.fadeIn("normal")};
function sb(){this.Y("");this.form=document.getElementById("createaccountform")}
sb.prototype={ta:"createaccount",onsubmit:function(){if(this.form.userNameInput.value==="")this.Y("Username is blank.");else if(this.form.passwordInput1.value==="")this.Y("Password is blank.");else if(this.form.passwordInput2.value!==this.form.passwordInput1.value)this.Y("Passwords do not match.");else{this.form.submitButton.disabled=true;this.form.cancelButton.disabled=true;var a=this;W.od(this.form.userNameInput.value,this.form.passwordInput1.value,function(b,c){if(b==="ok"){X.L();X.Yb(c)}else{a.form.submitButton.disabled=
false;a.form.cancelButton.disabled=false;a.Y(b)}})}return false},Y:function(a){$("#createaccounterror").text(a)}};sb.prototype.onsubmit=sb.prototype.onsubmit;function tb(){this.Y("");this.form=document.getElementById("changepasswordform");this.form.oldpassword.value="";this.form.newpassword1.value="";this.form.newpassword2.value="";this.form.submitButton.disabled=false;this.form.cancelButton.disabled=false}
tb.prototype={ta:"changePasswordDiv",onsubmit:function(){var a=this.form.oldpassword.value,b=this.form.newpassword1.value;if(b!==this.form.newpassword2.value)this.Y("Passwords do not match.");else if(b==="")this.Y("Password is blank.");else{this.Y("");this.form.submitButton.disabled=true;this.form.cancelButton.disabled=true;var c=this;W.Fb(a,b,function(d){if(d==="ok")X.L();else{c.form.submitButton.disabled=false;c.form.cancelButton.disabled=false;c.Y(d)}})}return false},Y:function(a){$("#passwordError").text(a)}};
tb.prototype.onsubmit=tb.prototype.onsubmit;function ub(a){this.pb=a;$("#surediv").slideDown("normal")}ub.prototype={ta:"checksave",qa:function(){X.L();this.pb&&this.pb()},bb:function(){X.L()}};ub.prototype.okayClicked=ub.prototype.qa;ub.prototype.cancelClicked=ub.prototype.bb;function xb(a){$("#message-title").text(a.title);$("#message-text").text(a.text)}xb.prototype={ta:"message",qa:function(){X.L()}};xb.prototype.okayClicked=xb.prototype.qa;
function yb(){$("#share-enabled").hide();$("#share-working").hide();$("#share-not-enabled").hide();R.z.W?this.Vc():$("#share-not-enabled").show()}
yb.prototype={ta:"share",te:function(){var a=this;$("#share-enabled").hide();$("#share-working").show();R.z.W=0;R.z.data="";W.bc(R.z,function(b){$("#share-working").hide();if(b==="ok"){R.W=false;X.L()}else{R.z.W=1;a.error(b)}})},ne:function(){var a=this;$("#share-not-enabled").hide();$("#share-working").show();R.z.W=1;R.z.data="";W.bc(R.z,function(b){$("#share-working").hide();if(b==="ok")a.Vc();else{R.W=0;a.error(b)}})},Vc:function(){var a="http://zwibbler.com/shared/"+R.z.id+".",b=a+"png",c=a+"pdf";
a=a+"svg";$("#share-png")[0].value=b;$("#share-pdf")[0].value=c;$("#share-svg")[0].value=a;$("#share-enabled").show()},error:function(a){$("#share-error").show();$("#share-error-code").text(a)}};yb.prototype.shareClicked=yb.prototype.ne;yb.prototype.unshareClicked=yb.prototype.te;$("#savefilename").keydown(function(a){a.keyCode===13&&X.mb().qa()});
function zb(){document.getElementById("savefilename").value=R.z.name;$("#save-normal").show();W.Ja?$("#no-account-warning").hide():$("#no-account-warning").show();$("#save-working").hide();$("#save-error").hide();$("#savediv").slideDown("normal")}
zb.prototype={ta:"save",hide:function(){$("#savediv").slideUp("normal")},qa:function(){var a=document.getElementById("savefilename"),b=R.z.name!==a.value;R.z.name=a.value;$("#save-normal").hide();$("#save-working").show();a=qb(R.j.n.m.save());var c=this;if(R.z.id===-1||b)W.nd(R.z.name,a,function(d,e){if(d==="ok"){R.z.id=e;R.z.W=0;X.L();R.v.fa=false}else c.error(d)});else{R.z.data=a;W.bc(R.z,function(d){if(d==="ok"){X.L();R.v.fa=false}else c.error(d)})}},error:function(a){$("#save-working").hide();
$("#save-error").show();$("#save-error-code").text(a)},bb:function(){X.L()}};zb.prototype.okayClicked=zb.prototype.qa;zb.prototype.cancelClicked=zb.prototype.bb;$("#previewcanvas").click(function(){X.mb().Ba&&X.mb().qa()});function Y(){this.Ba=null;if(!this.Id){this.Id=true;this.Gb=document.createElement("img");this.Gb.src="wd-clickopen.png"}this.Ea="normal";$("#deletebutton").hide();$("#browse-working").hide();$("#browse-prompt").hide();$("#browse-main").show();this.Sc()}
Y.prototype={ta:"browse",Sc:function(){function a(){$("#deletebutton").hide();W.Rc(this.Od,function(q,k){q==="ok"&&b.he(k)});return false}var b=this;document.getElementById("previewcanvas").getContext("2d").clearRect(0,0,350,350);var c=$("#filelist");c.empty();for(var d=$("<table width='100%'>"),e=0;e<W.files.length;e++){var f=W.files[e],h="#ffffff";if(e&1)h="#C0C0C0";var o=$("<a href=''>").text(f.name).click(a);o[0].Od=W.files[e].id;f=new Date(parseInt(f.modificationDate,10)*1E3);f=f.toLocaleString();
d.append($("<tr>").append($("<td>").css("background",h).append(o)).append($("<td>").css("background",h).text(f)))}c.append(d)},he:function(a){var b;try{b=M(eval("("+a.data+")"))}catch(c){alert(c);return}this.Ba=a;$("#deletebutton").show();a=document.getElementById("previewcanvas").getContext("2d");a.clearRect(0,0,350,350);a.save();a.setTransform(0.5,0,0,0.5,0,0);try{b.t(a);b.c(a)}catch(d){}a.setTransform(1,0,0,1,0,0);a.restore();this.Gb.complete&&a.drawImage(this.Gb,90,142)},pd:function(){$("#browse-main").hide();
$("#browse-prompt").show();this.Ea="prompt"},qa:function(){var a=this;if(a.Ea==="normal"){X.L();this.Ba&&X.ae(this.Ba,this.Ba.data)}else if(a.Ea==="prompt"){$("#browse-prompt").hide();$("#browse-working").show();W.qd(this.Ba.id,function(){$("#browse-working").hide();$("#browse-main").show();a.Ba=null;a.Sc();a.Ea="normal"})}},bb:function(){if(this.Ea==="normal")X.L();else if(this.Ea==="prompt"){$("#browse-prompt").hide();$("#browse-main").show();this.Ea="normal"}}};Y.prototype.okayClicked=Y.prototype.qa;
Y.prototype.cancelClicked=Y.prototype.bb;Y.prototype.deleteClicked=Y.prototype.pd;var Ab={createaccount:sb,checksave:ub,save:zb,browse:Y,changepassword:tb,message:xb,share:yb};function Z(){this.Be=document.getElementById("main");this.Ca=null;this.Pc=new rb;this.Ca=null}
Z.prototype={Ha:function(a,b){var c=this;this.L();this.Pc.show(function(){c.L()});this.Ca=new Ab[a](b);$("#"+this.Ca.ta).slideDown("normal")},L:function(){if(this.Ca!==null){$("#"+this.Ca.ta).slideUp("normal");this.Pc.hide();this.Ca=null}},mb:H("Ca"),Rb:function(){var a=document.getElementById("signInForm"),b=a.username.value,c=a.password.value;a.signin.disabled=true;var d=this;W.Rb(b,c,function(e,f){a.signin.disabled=false;if(e==="ok")d.Yb(f);else{var h=document.getElementById("loginerror");a.signin.disabled=
false;$(h).empty();$(h).text(e)}})},Yb:function(a){document.getElementById("signin").style.display="none";document.getElementById("logout").style.display="block";if(a&&R.z.id!==-1&&R.z.id in a)R.z.id=a[R.z.id]},Sb:function(){var a=this,b=document.getElementById("logout");b.style.display="none";W.Sb(function(c){if(c==="ok")a.Mc();else b.style.display="block"})},Mc:function(){document.getElementById("signin").style.display="block";var a=document.getElementById("logout");$(a).hide();R.z.id=-1;R.z.W=
0},Sd:function(){this.qc(function(){R.Rd()})},qc:function(a){R.fa()?this.Ha("checksave",a):a()},Tc:function(){this.Ha("save")},Fb:function(){this.Ha("changepassword")},fd:function(){var a=this;this.qc(function(){a.Ha("browse")})},ae:function(a,b){nb(eval("("+b+")"),a)},ld:function(){this.Ha("createaccount")},$d:function(){if(!W.Cc()||R.fa()||R.z.id===-1){var a="Log in first";if(W.Cc())a="Save first";this.Ha("message",{title:a,text:"You can only share drawings if you log in and save them first."})}else this.Ha("share")},
rd:function(a){var b=document.createElement("form"),c=document.createElement("input"),d=document.createElement("input");document.body.appendChild(b);b.appendChild(c);b.appendChild(d);b.method="post";b.action="server.cgi";c.type="hidden";c.name="type";c.value=a;d.type="hidden";d.name="document";d.value=qb(R.j.n.m.save());b.submit();this.L()}};window.Page=Z;Z.prototype.newDrawing=Z.prototype.Sd;Z.prototype.browseDrawings=Z.prototype.fd;Z.prototype.saveDrawing=Z.prototype.Tc;Z.prototype.logout=Z.prototype.Sb;
Z.prototype.saveDrawing=Z.prototype.Tc;Z.prototype.createAccount=Z.prototype.ld;Z.prototype.login=Z.prototype.Rb;Z.prototype.currentDialog=Z.prototype.mb;Z.prototype.hideDialog=Z.prototype.L;Z.prototype.changePassword=Z.prototype.Fb;Z.prototype.onShare=Z.prototype.$d;if(!document.createElement("canvas").getContext){document.getElementById("main").style.display="none";document.getElementById("no-canvas").style.display="block"}var Oa=new ja(document.getElementById("debug"));new pb("draw");document.getElementById("clr");var W=new Ta,X=new Z;window.page=X;window.session=W;
$(document).ready(function(){W.Ja!==null?X.Yb():X.Mc();W.Bd(function(){W.files.length>0&&W.Rc(W.files[0].id,function(a,b){a==="ok"&&nb(eval("("+b.data+")"),b)})});document.getElementById("main").style.cursor="default"});Z.prototype.downloadAs=Z.prototype.rd;Ta.prototype.setUsername=Ta.prototype.me;window.EffectNode=Ra;
