var fixedPoint3D = [];

fixedPoint3D = 
	{
	x 		: 0,
	y		: 0,
	z		: 0,
	fl		: 250,
	step		: 0,
	radius		: 10000,
	radiusMaxWidth	: 400,
	radiusMaxHeight	: 400,
	tdobjects	: 
		{
		cube	: 
			{
			id	: 'cube',
			data	: [
					[[0,255,255, 0.5], [[-50,-50,50],[50, -50, 50],[50,50,50],[-50,50,50]]],
					[[255,0,255, 0.5], [[-50,-50,-50],[50, -50, -50],[50,50,-50],[-50,50,-50]]],
					[[255,255,0, 0.5], [[50,-50,50],[50, -50, -50],[50,50,-50],[50,50,50]]],
					[[255,0,0, 0.5], [[-50,-50,50],[-50, -50, -50],[-50,50,-50],[-50,50,50]]],
					[[0,255,0, 0.5], [[-50,-50,50],[50, -50, 50],[50,-50,-50],[-50,-50,-50]]],
					[[0,0,255, 0.5], [[-50,50,-50],[50, 50, -50],[50,50,50],[-50,50,50]]]

				]
			}
		},
	bindToMother: function(mother)
		{
		fixedPoint3D.objectContainer = mother;
		fixedPoint3D.modelContainer = document.createElement("CANVAS");
		fixedPoint3D.modelContainer.setAttribute("WIDTH", 400);
		fixedPoint3D.modelContainer.setAttribute("HEIGHT", 400);

		fixedPoint3D.modelContainer.style.width = 400;
		fixedPoint3D.modelContainer.style.height= 400;

		fixedPoint3D.modelContainer.className = "modelContainer";
		fixedPoint3D.objectContainer.appendChild(fixedPoint3D.modelContainer);
		fixedPoint3D.modelContainer = fixedPoint3D.modelContainer.getContext("2d");
		fixedPoint3D.vpX = parseInt(fixedPoint3D.objectContainer.style.width)/2;
		fixedPoint3D.vpY = parseInt(fixedPoint3D.objectContainer.style.height)/2;
		fixedPoint3D.init();
		},

	init: function()
		{
		fixedPoint3D.timer = setInterval(fixedPoint3D.animate,30);
		return false;
		},

	animate: function()
		{
		var angleY	= (Math.cos(fixedPoint3D.step * (Math.PI/fixedPoint3D.radiusMaxHeight)) * fixedPoint3D.radius)  * .001;
		var cosY	= Math.cos(angleY);
		var sinY	= Math.sin(angleY);
		
		var angleX	= (Math.sin(fixedPoint3D.step * (Math.PI/fixedPoint3D.radiusMaxWidth)) * fixedPoint3D.radius) * .001;
		var cosX	= Math.cos(angleX);
		var sinX	= Math.sin(angleX);

		fixedPoint3D.modelContainer.clearRect(0,0,400,400);

		var testi = fixedPoint3D.tdobjects.cube.data;
		var i = 0;
		while(i<testi.length)
			{
			fixedPoint3D.modelContainer.fillStyle = "rgba("+testi[i][0]+")";
			fixedPoint3D.modelContainer.beginPath();
			
			for (var j=0; j<testi[i][1].length; j++)
				{
				var point = testi[i][1][j];
				var x1 = testi[i][1][j][0] * cosY - testi[i][1][j][2] * sinY;
				var z1 = testi[i][1][j][2] * cosY + testi[i][1][j][0] * sinY;
				var y1 = testi[i][1][j][1] * cosX - z1 * sinX;
				var z2 = z1 * cosX + testi[i][1][j][1] * sinX;

				point.x = x1;
				point.y = y1;
				point.z = z2;
	
				var scale = fixedPoint3D.fl / (fixedPoint3D.fl + point.z +fixedPoint3D.z);
	
				(j==0) ? fixedPoint3D.modelContainer.moveTo(fixedPoint3D.vpX + point.x * scale, fixedPoint3D.vpY + point.y * scale) : fixedPoint3D.modelContainer.lineTo(fixedPoint3D.vpX + point.x * scale, fixedPoint3D.vpY + point.y * scale);
				}
			fixedPoint3D.modelContainer.fill();
			i++;
			}
		fixedPoint3D.step++;
		}
	}


if (window.addEventListener)
	{
	window.addEventListener('DOMMouseScroll', wheel, false);
	}
document.onmousewheel = document.onmousewheel = wheel;

function wheel(event)
	{

	var delta = 0;
	if (!event) event = window.event;
	if (event.wheelDelta)
		{
		delta = event.wheelDelta/120; 
		if (window.opera) delta = -delta;
		}
	else if (event.detail)
		{
		delta = -event.detail/3;
		}
	fixedPoint3D.z+= delta*2;

	}
