var Clay=(function(){var g='function';var j='string';var k=Math.sin;var n=Math.cos;var o=Math.sqrt;var $={namespace:function(a,b){var c=a.split('.');var l=c.length;var d=this;for(var i=0;i<l;i++){var e=c[i];var f=i===(l-1);if(f){d[e]=b}d=d[e]}}};Function.prototype.bind=function(a){var b=this;return function(){return b.apply(a,arguments)}};var p={extend:function(a,constructor,b){var c=function(){a.apply(this,arguments);if(constructor){constructor.apply(this,arguments)}};this.implement(c,a.prototype);if(b){this.implement(c,b)}c.prototype.constructor=c;return c},implement:function(a,b){for(var i in b){if(typeof i===j){a.prototype[i]=b[i]}}}};$.namespace('Class',p);var q=function(w,h,a){this.renderer=new $.Renderer(w,h,a);this.world=new $.Group(0,0,0);this.camera=new $.Camera(0,0,1024);this.materials=[]};q.prototype={resizeTo:function(w,h){this.renderer.setResolution(w,h);this.camera.setResolution(w,h)},getWorld:function(){return this.world},run:function(){clearInterval(this.tick);this.world.totalShapes=this.world.iterate([]);this.tick=setInterval(this.render.bind(this),40)},render:function(){this.enterFrame(this);this.renderer.render(this.world,this.camera)},setCamera:function(a){this.camera=a},getCamera:function(){return this.camera},setAmbientLight:function(a,b,c){this.world.addLight(new $.Light(a.x,a.y,a.z,b,c))},getLightFactor:function(a){var b=this.world.getLights();var c=[0,0,0];var l=b.length;for(var i=0;i<l;i++){b[i].getFactor(a,c)}return c},setBackground:function(a){this.renderer.setBackground(a)},addMaterial:function(a){this.materials.push(a);a.setStage(this)},enterFrame:function(a){},addEvent:function(a,b){switch(a){case'click':this.renderer.addEvent(a,b);break;case'enterframe':this.enterFrame=b;break;case'prerender':this.renderer.preRender=b;break;case'postrender':this.renderer.postRender=b;break}}};$.namespace('Stage',q);var r=function(x,y,z){this.x=x;this.y=y;this.z=z};r.prototype={set:function(x,y,z){this.x=x;this.y=y;this.z=z},add:function(b){return new r(this.x+b.x,this.y+b.y,this.z+b.z)},subtract:function(b){return new r(this.x-b.x,this.y-b.y,this.z-b.z)},multiply:function(b){return new r(this.x*b.x,this.y*b.y,this.z*b.z)},divide:function(b){return new r(this.x/b.x,this.y/b.y,this.z/b.z)},dot:function(b){var d=this.multiply(b);return(d.x+d.y+d.z)},magnitude:function(){return o(this.dot(this))},normal:function(b){return new r((this.y*b.z)-(this.z*b.y),-((this.x*b.z)-(this.z*b.x)),(this.x*b.y)-(this.y*b.x))},normalize:function(){var m=this.magnitude();return new r(this.x/m,this.y/m,this.z/m)},transform:function(a){var m=a.base,m0=m[0],m1=m[1],m2=m[2];return new r(m0[0]*this.x+m0[1]*this.y+m0[2]*this.z+m0[3],m1[0]*this.x+m1[1]*this.y+m1[2]*this.z+m1[3],m2[0]*this.x+m2[1]*this.y+m2[2]*this.z+m2[3])}};r.INVERT=new r(-1,-1,-1);r.ZERO=new r(0,0,0);$.namespace('Vector',r);var t=function(a){this.base=[[1,0,0,0],[0,1,0,0],[0,0,1,0]]};t.prototype={set:function(a){this.base=a},concat:function(a){var b=this.base,mc=[[],[],[]],m20=a[0],m21=a[1],m22=a[2],mci,m1i,m1i0,m1i1,m1i2;for(var i=2;i>=0;i--){mci=mc[i];m1i=b[i];m1i0=m1i[0];m1i1=m1i[1];m1i2=m1i[2];mci[0]=m1i0*m20[0]+m1i1*m21[0]+m1i2*m22[0];mci[1]=m1i0*m20[1]+m1i1*m21[1]+m1i2*m22[1];mci[2]=m1i0*m20[2]+m1i1*m21[2]+m1i2*m22[2];mci[3]=m1i0*m20[3]+m1i1*m21[3]+m1i2*m22[3]+m1i[3]}this.base=mc},scale:function(a,b,c){var m=[[a,0,0,0],[0,b,0,0],[0,0,c,0]];this.concat(m)},translate:function(a,b,c){var m=[[1,0,0,a],[0,1,0,b],[0,0,1,c]];this.concat(m)},rotateX:function(a){var s=k(a),c=n(a),m=[[1,0,0,0],[0,c,s,0],[0,-s,c,0]];this.concat(m)},rotateY:function(a){var s=k(a),c=n(a),m=[[c,0,-s,0],[0,1,0,0],[s,0,c,0]];this.concat(m)},rotateZ:function(a){var s=k(a),c=n(a),m=[[c,s,0,0],[-s,c,0,0],[0,0,1,0]];this.concat(m)},clone:function(){var m=new t(),b0=this.base[0],b1=this.base[1],b2=this.base[2];m.set([[b0[0],b0[1],b0[2],b0[3]],[b1[0],b1[1],b1[2],b1[3]],[b2[0],b2[1],b2[2],b2[3]]]);return m}};$.namespace('Matrix',t);return $})(); (function($){var g=Math.floor;var j=function(w,h,a){this.zBuffer=new k();this.canvas=document.createElement('canvas');this.canvas.className='canvas3D';(a||document.body).appendChild(this.canvas);this.setResolution(w,h)};j.prototype={setResolution:function(w,h){this.width=w;this.height=h;this.cx=w/2;this.cy=h/2;this.canvas.width=this.width;this.canvas.height=this.height;this.context=this.canvas.getContext('2d')},setBackground:function(a){this.canvas.style.background=a},render:function(a,b){var c=this.context;this.preRender(this);var d=this.zBuffer.sort(b.render(a));var l=d.length;for(var i=0;i<l;i++){d[i].draw(c)}this.postRender(this)},preRender:function(a){this.context.clearRect(0,0,this.width,this.height)},postRender:function(a){},addEvent:function(a,b){this.canvas.addEventListener(a,function(e){this.handleEvent(e,b)}.bind(this),false)},handleEvent:function(e,a){var x=e.layerX;var y=e.layerY;var b,polies=this.zBuffer.getPolygons();var l=polies.length-1;for(var i=l;i>=0;i--){b=polies[i];if(q(x,y,b)){var c={targetPolygon:b,targetShape:b.shape,clientX:x,clientY:y};a(c);break}}}};$.namespace('Renderer',j);var k=function(){this.polygons=[];this.visiblePolygons=[];this.hash=null};k.prototype={getPolygons:function(){return this.visiblePolygons},sort:function(a){if(this.hash!=a.length){var b=[];var l=a.length;for(var i=0;i<l;i++){b=b.concat(a[i].polygons)}this.hash=a.length;this.polygons=b}this.visiblePolygons=this.polygons.filter(n);var v=this.visiblePolygons.length;if(v>1){o(this.visiblePolygons,0,v-1)}return this.visiblePolygons}};var m=function(a,b,c,d){if(a.behindScreen||b.behindScreen||c.behindScreen||(d&&d.behindScreen)){return true}return((c.screenX-a.screenX)*(b.screenY-c.screenY))>((c.screenY-a.screenY)*(b.screenX-c.screenX))};var n=function(a){var p=a.screen;if(m.apply(window,p)){return false}var l=p.length;var b=p[0].z;for(var i=1;i<l;i++){b+=p[i].z}a.depth=b/l;return true};var o=function(a,b,c){var d,bot,top,t;if(c-b==1){if(a[b].depth<a[c].depth){t=a[b];a[b]=a[c];a[c]=t}return}t=g((b+c)/2);d=a[t];a[t]=a[b];a[b]=d;bot=b+1;top=c;do{while(bot<=top&&a[bot].depth>=d.depth){bot++}while(a[top].depth<d.depth){top--}if(bot<top){t=a[bot];a[bot]=a[top];a[top]=t}}while(bot<top);a[b]=a[top];a[top]=d;if(b<top-1){o(a,b,top-1)}if(top+1<c){o(a,top+1,c)}};var q=function(x,y,a){var b=a.screen;var l=b.length;var c=b[0].screenX;var d=c;var e=b[0].screenY;var f=e;var p;for(var i=1;i<l;i++){p=b[i];c=min(c,p.screenX);d=max(d,p.screenX);e=min(e,p.screenY);f=max(f,p.screenY)}return(x>c&&x<d&&y>e&&y<f)?true:false};$.namespace('ZBuffer',k)})(Clay); (function($){var g=$.Class;var k=$.Vector;var m=$.Matrix;var n=$.Dynamics;var o=Math.sqrt;var q=Math.atan2;var r=g.extend(k,function(x,y,z){this.setDirection(new k(0,0,-1));this.focus=9;this.zoom=90;this.zoomFocus=this.zoom*this.focus;this.rotX=0;this.rotY=0},{setResolution:function(w,h){this.width=w;this.height=h;this.cx=w/2;this.cy=h/2},setTarget:function(a){this.target=a},setZoom:function(a){this.zoom=a;this.zoomFocus=this.zoom*this.focus},setDirection:function(a){this.direction=a.normalize()},moveBy:function(a){this.set(this.x+a.x,this.y+a.y,this.z+a.z)},render:function(a){var b=a.getShapes();var c=a.getLights();var e=new m();if(this.target){var f=this.direction=this.target.subtract(this).normalize();var d=o(f.x*f.x+f.z*f.z);this.rotX=-q(f.y,d);this.rotY=q(f.x,f.z)}e.rotateX(this.rotX);e.rotateY(this.rotY);var l=c.length;for(var i=0;i<l;i++){c[i].transform(e)}e.translate(-this.x,-this.y,-this.z);var s=b.length;for(var j=0;j<s;j++){b[j].transform(e)}return a.totalShapes.filter(this.renderShape,this)},renderShape:function(a){var b=a.screen;var l=b.length;a.offScreen=true;for(var i=0;i<l;i++){this.renderPoint(b[i],a)}return!a.offScreen},renderPoint:function(p,a){var f=this.zoomFocus/-(p.z+this.focus);var x=this.cx+(p.x*f);var y=this.cy+(p.y*f);p.screenX=x;p.screenY=y;p.behindScreen=(p.z<-this.focus)?true:false;if(a.offScreen){p.offScreen=(x<0||y<0||x>this.width||y>this.height)?true:false;a.offScreen&=(p.behindScreen||p.offScreen)}}});g.implement(r,n);$.namespace('Camera',r)})(Clay); (function($){var e=$.Class;var h=$.Vector;var j=Math.PI/2;var k=Math.acos;var l=e.extend(h,function(x,y,z,b,i){this.direction=new h(z,y,z).normalize();this.light=new h(x,y,z);this.setBrightness(b||1);this.setIntensity(i||1);this.setColor(255,255,255)},{transform:function(a){this.direction=this.light.transform(a).normalize()},setColor:function(r,g,b){this.r=r/255;this.g=g/255;this.b=b/255},setBrightness:function(b){this.brightness=b*j},setIntensity:function(i){this.intensity=i/j},getFactor:function(a,b){var c=a.dot(this.direction);var d=k(c);var f=(this.brightness-d)*this.intensity;b[0]+=(this.r*f);b[1]+=(this.g*f);b[2]+=(this.b*f)},iterate:function(){}});$.namespace('Light',l);$.namespace('AmbientLight',e.extend(l,null,{getFactor:function(){var f=this.brightness*this.intensity;factors[0]+=(this.r*f);factors[1]+=(this.g*f);factors[2]+=(this.b*f)}}));$.namespace('DirectionalLight',e.extend(l,null,{getFactor:function(){var a=normal.dot(this.direction);var b=k(a);var f=(this.brightness-b)*this.intensity;factors[0]+=(this.r*f);factors[1]+=(this.g*f);factors[2]+=(this.b*f)}}))})(Clay); (function($){var q=$.Class;var s=$.Vector;var u=function(a,b){this.indices=a;this.shape=b;this.screen=[];this.points=[];for(var i=0;i<a.length;i++){this.points.push(b.points[a[i]]);this.screen.push(b.screen[a[i]])}var c=this.screen;this.triangleA=[c[0],c[1],c[2]];if(c[3]){this.triangleB=[c[2],c[3],c[0]]}};u.prototype={getNormal:function(){var a=this.screen[0];var b=this.screen[1];var c=this.screen[2];var d=b.subtract(a);var e=c.subtract(b);return d.normal(e).normalize()},setMaterial:function(a,b){this.material=a;this.texCoords=b||$.Texture.DEFAULT_MAP;this.texture=a.preRender(this,this.texCoords)},draw:function(a){this.material.drawPolygon(this,a)},invert:function(){this.screen.reverse();this.points.reverse();this.getNormal()}};$.namespace('Polygon',u);var v={setDynamics:function(a){this.hasDynamics=true;this.dynamics=a},applyDynamics:function(a){var l=this.dynamics.length;for(var d,i=0;i<l;i++){d=this.dynamics[i];d.value+=d.increment;a[d.type](d.value)}}};$.namespace('Dynamics',v);var A=q.extend(s,function(x,y,z,a,b,c,d){this.points=[];this.polygons=[];this.screen=[];this.texturemap=d;for(var p,i=0;i<a.length;i++){p=a[i];this.points.push(new s(p.x,p.y,p.z));this.screen.push(new s(p.x,p.y,p.z))}var e=d||[];var l=b.length;var f;for(i=0;i<l;i++){f=new u(b[i],this);f.setMaterial(c,e[i]);this.polygons.push(f)}},{setMaterial:function(a,b){var c=b||this.texturemap;var l=this.polygons.length;for(var i=0;i<l;i++){this.polygons[i].setMaterial(a,c[i])}},transform:function(a){var b=a.clone();b.translate(this.x,this.y,this.z);if(this.dynamics){this.applyDynamics(b)}var t;var l=this.points.length;for(var i=0;i<l;i++){t=this.points[i].transform(b);this.screen[i].set(t.x,t.y,t.z)}},iterate:function(a){a.push(this)},invert:function(){var l=this.polygons.length;for(var i=0;i<l;i++){this.polygons[i].invert()}}});q.implement(A,v);$.namespace('Shape',A);var B=q.extend(s,function(x,y,z){this.shapes=[];this.lights=[]},{addShape:function(a){this.shapes.push(a)},removeShape:function(a){var l=this.shapes.length;for(var i=0;i<l;i++){if(this.shapes[i]==a){this.shapes.splice(i,1)}}},removeShapes:function(){this.shapes=[]},getShapes:function(){return this.shapes},addLight:function(a){this.lights.push(a)},removeLight:function(a){var l=this.lights.length;for(var i=0;i<l;i++){if(this.lights[i]==shape){this.lights.splice(i,1)}}},removeLights:function(){this.lights=[]},getLights:function(){return this.lights},iterate:function(a){var l=this.shapes.length;for(var i=0;i<l;i++){this.shapes[i].iterate(a)}return a},transform:function(a){var b=a.clone();b.translate(this.x,this.y,this.z);if(this.dynamics){this.applyDynamics(b)}var l=this.shapes.length;for(var i=0;i<l;i++){this.shapes[i].transform(b)}}});q.implement(B,v);$.namespace('Group',B);$.namespace('Cube',function(x,y,z,w,h,b,a,c){var d=[[0,3,7,4],[3,2,6,7],[2,1,5,6],[1,0,4,5],[1,2,3,0],[4,7,6,5]];var e=w/2,ch=h/2,cb=b/2;var f=[{x:-e,y:ch,z:-cb},{x:e,y:ch,z:-cb},{x:e,y:ch,z:cb},{x:-e,y:ch,z:cb},{x:-e,y:-ch,z:-cb},{x:e,y:-ch,z:-cb},{x:e,y:-ch,z:cb},{x:-e,y:-ch,z:cb}];return new $.Shape(x,y,z,f,d,a,c)});$.namespace('Sheet',function(x,y,z,w,b,a,c){var d=[[0,1,2,3]];var e=w/2,cb=b/2;var f=[{x:e,y:0,z:cb},{x:-e,y:0,z:cb},{x:-e,y:0,z:-cb},{x:e,y:0,z:-cb}];return new $.Shape(x,y,z,f,d,a,c)});$.namespace('Pyramid',function(x,y,z,w,h,b,a,c){var d=[[4,3,2,1],[1,0,4],[4,0,3],[3,0,2],[2,0,1]];var e=w/2,cb=b/2;var f=[{x:0,y:h,z:0},{x:-e,y:0,z:cb},{x:-e,y:0,z:-cb},{x:e,y:0,z:-cb},{x:e,y:0,z:cb}];return new $.Shape(x,y,z,f,d,a,c)});$.namespace('Cylinder',function(x,y,z,h,r,l,e,f){var g=[];var j=[];var k,sz,sr,cap=[],bot=[];var m=(Math.PI*2)/l;for(var i=0;i<l;i++){sr=m*i;k=Math.sin(sr)*r;sz=Math.cos(sr)*r;var n=j.push({x:k,y:-h/2,z:sz})-1,pb=j.push({x:k,y:h/2,z:sz})-1;bot.push(n);cap.push(pb);var a=n,b=pb,c=(pb+2)%(l*2),d=(pb+1)%(l*2);g.push([a,b,c,d])}g.push(cap.reverse(),bot);return new $.Shape(x,y,z,j,g,e,f)});$.namespace('Cone',function(x,y,z,h,r,l,d,e){var f=[];var g=[];var j,sz,sr,bot=[];var k=(Math.PI*2)/l;g.push({x:0,y:h,z:0});for(var i=0;i<l;i++){sr=k*i;j=Math.sin(sr)*r;sz=Math.cos(sr)*r;var a=g.push({x:j,y:0,z:sz})-1,b=0,c=(a%l+1);bot.push(a);f.push([a,b,c])}f.push(bot);return new $.Shape(x,y,z,g,f,d,e)});$.namespace('Sphere',function(x,y,z,r,l,e,f){var g=[];var h=[];var k,sy,sz,sr;var m=(Math.PI*2)/l;var n=l-1;var o=l*l-n;var a,b,c,d;for(var i=0;i<l;i++){for(var j=0;j<l;j++){sr=Math.sin(m/2*i)*r;k=Math.sin(m*j)*sr;sz=Math.cos(m*j)*sr;sy=Math.cos(m/2*i)*r;h.push({x:k,y:sy,z:sz});if(i===0){break}else if(i==1){a=(i*l)+j-n;b=(i*l)+(j+1)%l-n;c=0;g.push([c,b,a])}else if(i>1){a=(i*l)+j-n;b=(i*l)+(j+1)%l-n;c=b-l;d=a-l;g.push([d,c,b,a]);if(i==l-1){a=(i*l)+j-n;b=(i*l)+(j+1)%l-n;c=o;g.push([a,b,c])}}}}h.push({x:0,y:-r,z:0});return new $.Shape(x,y,z,h,g,e,f)});$.namespace('Tube',function(x,y,z,h,r,w,l,e,f){var g=[];var j=[];var k,sx2,sz1,sz2,sr1,sr2;var m=(Math.PI*2)/l;var a,b,c,d;for(var i=0;i<l;i++){sr=m*i;k=Math.sin(sr)*r;sz1=Math.cos(sr)*r;sx2=Math.sin(sr)*(r-w);sz2=Math.cos(sr)*(r-w);var n=j.push({x:k,y:-h/2,z:sz1})-1,pb=j.push({x:k,y:h/2,z:sz1})-1,pc=j.push({x:sx2,y:-h/2,z:sz2})-1,pd=j.push({x:sx2,y:h/2,z:sz2})-1;a=n;b=pb;c=(n+5)%(l*4);d=(n+4)%(l*4);g.push([a,b,c,d]);a=pc;b=pd;c=(pc+5)%(l*4);d=(pc+4)%(l*4);g.push([d,c,b,a]);a=pb;b=pd;c=(pd+4)%(l*4);d=(pb+4)%(l*4);g.push([a,b,c,d]);a=n;b=pc;c=(pc+4)%(l*4);d=(n+4)%(l*4);g.push([d,c,b,a])}return new $.Shape(x,y,z,j,g,e,f)})})(Clay); (function($){var z=$.Vector;var A=Math.sin;var B=Math.cos;var C=Math.atan2;var D=Math.sqrt;var E=Math.floor;var F=function(r,g,b,a,c){this.r=r;this.g=g;this.b=b;this.a=a;this.stage=c;this.prefix='rgba(';this.suffix=')'};F.prototype={preRender:function(a){return this.render(a)},setStage:function(a){this.stage=a},setStroke:function(a){this.strokeStyle=a},animate:function(){},render:function(a){var b=this.stage.getLightFactor(a.getNormal()),c=',';return[this.prefix,E(this.r*b[0]),c,E(this.g*b[1]),c,E(this.b*b[2]),c,this.a,this.suffix].join('')},drawPolygon:function(a,b){var d=this.render(a);var e=a.screen;var p=e[0];var l=e.length;var f=0;var g=0;var c;for(var j=0;j<l;j++){c=e[j];f+=c.screenX;g+=c.screenY}f/=l;g/=l;var h=p.screenX-f;var k=p.screenY-g;var m=D((h*h)+(k*k));var x=p.screenX+(h/m);var y=p.screenY+(k/m);b.fillStyle=d;b.beginPath();b.moveTo(x,y);for(var i=1;i<l;i++){p=e[i];h=p.screenX-f;k=p.screenY-g;m=D((h*h)+(k*k));x=p.screenX+(h/m);y=p.screenY+(k/m);b.lineTo(x,y)}b.closePath();if(this.strokeStyle){b.strokeStyle=this.strokeStyle;b.stroke()}b.fill()}};F.BLACK='rgb(0,0,0)';F.WHITE='rgb(255,255,255)';F.TRANS='rgba(0,0,0,0)';$.namespace('Material',F);var G=function(a,b){this.image=new Image();this.stage=b;var c=this.canvas=document.createElement('canvas');c.width=128;c.height=128;this.image.addEventListener('load',this.renderImage.bind(this),false);this.image.setAttribute('src',a)};G.prototype={renderImage:function(){var w=this.image.width;var h=this.image.height;var a=this.canvas;var b=a.getContext('2d');a.width=w;a.height=h;b.drawImage(this.image,0,0);this.complete=true},setStage:function(a){this.stage=a},animate:function(){},preRender:function(e,f){var g=this;function parseTexCoords(){var a=g.image.width;var b=g.image.height;var c=f;var d=[];for(var i=0;i<c.length;i++){d[i]={x:c[i].x*a,y:c[i].y*b}}e.baseA=H(d);if(e.triangleB){e.baseB=H([d[2],d[3],d[0]])}}if(this.image.complete){parseTexCoords()}else{this.image.addEventListener('load',parseTexCoords,false)}return this.canvas},render:function(a,b){return this.canvas},drawPolygon:function(a,b){var c=this.render(a,b);this.drawTriangle(a.triangleA,c,b,a.baseA);if(a.triangleB){this.drawTriangle(a.triangleB,c,b,a.baseB)}},drawTriangle:function(a,b,c,d){var f=0;var g=0;var l=3;var t;for(var i=0;i<l;i++){t=a[i];f+=t.screenX;g+=t.screenY}f/=l;g/=l;var h=[];for(i=0;i<l;i++){t=a[i];var j=t.screenX-f;var k=t.screenY-g;var m=D((j*j)+(k*k));h.push({x:t.screenX+(j/m),y:t.screenY+(k/m)})}var n=h[0].x;var o=h[0].y;var p=h[1].x;var q=h[1].y;var r=h[2].x;var s=h[2].y;try{c.save();c.beginPath();c.moveTo(n,o);c.lineTo(p,q);c.lineTo(r,s);c.clip();var u=H(h);var v=u.w/d.w;var w=u.p-(v*d.p);c.translate(u.x,u.y);c.rotate(u.r);c.transform(v,0,1/(d.h/w),u.h/d.h,0,0);c.rotate(-d.r);c.translate(-d.x,-d.y);c.drawImage(b,0,0)}catch(e){}finally{c.restore()}}};G.DEFAULT_MAP=[{x:0,y:0},{x:1,y:0},{x:1,y:1},{x:0,y:1}];$.namespace('Texture',G);var H=function(d){var a=d[0];var b=d[1];var c=d[2];var e=a.x;var f=a.y;var g=b.x;var h=b.y;var i=c.x;var j=c.y;var k=new z(g-e,h-f,0);var l=new z(i-e,j-f,0);var m=C(k.y,k.x);var n=C(l.y,l.x);var o=n-m;var p=k.magnitude();var q=l.magnitude();var r=A(o)*q;var s=B(o)*q;return{x:e,y:f,w:p,h:r,p:s,r:m}}})(Clay); (function($){var x='COLLADA';var y=function(a,b){this.library=b;var c=A.get(a.instance_visual_scene.attributes.url);var d=c.node;for(var i=0;i<d.length;i++){this.parseNode(d[i])}};y.prototype={init:function(a){var b;var c=this.library.geometries;var d=new $.Material(32,64,128,1,a);try{b=new $.Texture(this.library.images[0],a)}catch(e){}for(var i=0;i<c.length;i++){var f=c[i];var g=new $.Shape(0,0,0,f.points,f.polygons,b,f.texturemap);if(i==2){g.set(0,0,5.4)}a.world.addShape(g)}},parseNode:function(a){if(a.instance_geometry){this.createGeometry(a.instance_geometry)}if(a.instance_light){this.createLight(a.instance_light)}if(a.instance_camera){this.createCamera(a.instance_camera)}var b=a.node;if(b){if(!b.length){b=[b]}for(var i=0;i<b.length;i++){this.parseNode(b[i])}}},createGeometry:function(a){},createLight:function(a){},createCamera:function(a){}};var z=function(){};z.prototype={load:function(a,b,c){var d=new XMLHttpRequest();d.onreadystatechange=function(){if(d.readyState==4){b.call(c,d.responseXML);d.onreadystatechange=null}};d.open('get',a,true);d.send(null)}};var A={regId:/#([^$]+)/i,elements:{},load:function(a,b){if(!this.xmlHttp){this.xmlHttp=new z()}this.path=/(.*?\/)+/.exec(a)[0];this.onload=b;this.xmlHttp.load(a,this.parse,this)},register:function(a,b){this.elements[a]=b},get:function(a){var b=this.regId.exec(a)[1];return this.elements[b]},parse:function(l){var m=l.getElementsByTagName(x)[0];var n={};var o=/^\s*$/mg;var p=/^id$/;this.processNode=function(a,b){var c=a.childNodes;var d=a.attributes;var e;var f=a.firstChild;if(f&&f.nodeType==3&&!o.test(f.nodeValue)){b.nodeValue=a.textContent||f.nodeValue}for(var i=0;i<d.length;i++){var g=d[i];if(g.nodeType==2){if(!b.attributes){b.attributes={}}e=g.nodeName.toLowerCase();b.attributes[e]=g.nodeValue;if(p.test(e)){this.register(g.nodeValue,b)}}}for(var j=0;j<c.length;j++){var h=c[j];if(h.nodeType==1){var k={};e=c[j].nodeName.toLowerCase();if(!b[e]){b[e]=k}else if(b[e]&&!b[e].length){b[e]=[b[e],k]}else{b[e].push(k)}this.processNode(h,k)}}};this.processNode(m,n);this.applySettings(n.asset);this.library={path:this.path,geometries:this.parseGeometries(n.library_geometries),images:this.parseImages(n.library_images),materials:this.parseMaterials(n.library_materials)};this.parseScene(n.scene,this.library)},applySettings:function(a){var b=a.up_axis.nodeValue;var c=a.unit.nodeValue;B.setUpAxis(b)},parseGeometries:function(a){var b=a.geometry;if(!b.length){b=[b]}var c=[];for(var i=0;i<b.length;i++){B.parse(b[i],c)}return c},parseImages:function(a){if(!a||!a.image){return null}var b=[];var c=a.image;if(!c.length){c=[c]}for(var i=0;i<c.length;i++){b.push(this.path+c[i].init_from.nodeValue)}return b},parseMaterials:function(){},parseScene:function(a,b){this.onload(new y(a,b))}};var B={regVertex:/^vertex$/i,regTexcoord:/^texcoord$/i,regPosition:/^position$/i,regNormal:/^normal$/i,setUpAxis:function(a){var b=/z_up/i.test(a);this.zUp=b;this.xAxisFactor=b?1:-1;this.yAxisIndex=b?2:1;this.zAxisIndex=b?1:2},parse:function(a,b){var c=a.attributes.id;var d=a.mesh.vertices;var e=a.mesh.triangles;var f=a.mesh.polylist;if(f){if(!f.length){f=[f]}for(var i=0;i<f.length;i++){b.push(this.parsePolygonInput(f[i]))}}if(e){if(!e.length){e=[e]}for(var j=0;j<e.length;j++){b.push(this.parsePolygonInput(e[j]))}}},parsePolygonInput:function(a){var b=a.input;if(!b.length){b=[b]}var c=b.length;var d=0;var e=[];var f=[];var g=a.vcount&&a.vcount.nodeValue.split(' ');var h=a.p.nodeValue.split(' ');for(var i=0;i<c;i++){var l=b[i];var m=l.attributes.semantic;if(this.regVertex.test(m)){e=this.parseVertices(l)}if(this.regTexcoord.test(m)){f=this.parseTexcoords(l);d=parseInt(l.attributes.offset,10)}}var n=[];for(var j=0;j<e.length;j+=3){n.push({x:parseFloat(e[j]||0,10)*this.xAxisFactor,y:parseFloat(e[j+this.yAxisIndex]||0,10),z:parseFloat(e[j+this.zAxisIndex]||0,10)})}var o=[];for(var k=0;k<f.length;k+=2){o.push({x:parseFloat(f[k],10),y:parseFloat(f[k+1],10)})}var p=[];var q=[];var r=g?g.length:(a.attributes.count?parseInt(a.attributes.count,10):Math.floor(n.length/3));for(i=0,j=0;i<r;i++){var v=g?(parseInt(g[i],10)||0):3;var s=[];var t=[];for(k=0;k<v;k++){var u=parseInt(h[j],10);s.push(u);var w=parseInt(h[j+d],10);t.push(o[w]);j+=c}if(s.length){p.push(s);q.push(t)}}return{points:n,polygons:p,texturemap:q}},parseVertices:function(a){var b=A.get(a.attributes.source);var c=b.input;if(!c.length){c=[c]}for(var i=0;i<c.length;i++){if(this.regPosition.test(c[i].attributes.semantic)){var d=A.get(c[i].attributes.source);return d.float_array.nodeValue.split(' ')}}},parseTexcoords:function(a){var b=A.get(a.attributes.source);return b.float_array.nodeValue.split(' ')}};$.namespace('Collada',A)})(Clay);
