//3d_demo.js



var g = null;

if(document.all){
    g = new VML("canvas");
    window.status = "Rendering in VML";
    document.title = window.status;
}
else{

    if(window.XML && document.location.href.indexOf("xhtml") < 0)
        document.location = "3d.xhtml";
    else if(window.XML){
        g = new SVG("canvas");
        window.status = "Rendering in SVG";
        document.title = window.status;
    }
    else{
        g = new jsGraphics("canvas");    
        window.status = "Rendering in Zorn";
        document.title = window.status;
    }//end if
}//end if

var camera = new Camera( {x:300,y:0,z:0}, {x:0.1,y:0,z:0} );


var i=80;
var rectVectors = new Array(
    {x:-i,y:i,z:i*2},
    {x:-i,y:i,z:-i*2},
    {x:i,y:i,z:-i*2},
    {x:i,y:i,z:i*2},
    {x:-i,y:-i,z:i*2},
    {x:-i,y:-i,z:-i*2},
    {x:i,y:-i,z:-i*2},
    {x:i,y:-i,z:i*2}
);

var squareVectors = new Array(
    {x:-i,y:i,z:i},
    {x:-i,y:i,z:-i},
    {x:i,y:i,z:-i},
    {x:i,y:i,z:i},
    {x:-i,y:-i,z:i},
    {x:-i,y:-i,z:-i},
    {x:i,y:-i,z:-i},
    {x:i,y:-i,z:i}
);

var triVectors = new Array(
    {x:0,y:0,z:-i},
    {x:-i,y:-i,z:i},
    {x:-i,y:i,z:i},
    {x:i,y:i,z:i},
    {x:i,y:-i,z:i}
);

var faces = new Array(
    new Face("#0000FF", 0,3,2,1,0),
    new Face("#0000EE", 0,1,5,4,0),
    new Face("#0000DD", 3,0,4,7,3),
    new Face("#0000CC", 2,3,7,6,2),
    new Face("#0000BB", 1,2,6,5,1),
    new Face("#0000AA", 4,5,6,7,4)
);

var faces2 = new Array(
    new Face("#00FF00", 0,3,2,1,0),
    new Face("#00EE00", 0,1,5,4,0),
    new Face("#00DD00", 3,0,4,7,3),
    new Face("#00CC00", 2,3,7,6,2),
    new Face("#00BB00", 1,2,6,5,1),
    new Face("#00AA00", 4,5,6,7,4)
);

var triFaces = new Array(
    new Face("#FF0000", 0,1,2,0),
    new Face("#EE0000", 0,2,3,0),
    new Face("#DD0000", 0,3,4,0),
    new Face("#CC0000", 0,4,1,0),
    new Face("#BB0000", 1,4,3,2,1)
);

var cube = new Model(new Polygon(squareVectors), faces, {x:0,y:300,z:400});
var cube2 = new Model(new Polygon(rectVectors), faces2, {x:0,y:0,z:200});
var tri = new Model(new Polygon(triVectors), triFaces, {x:0,y:100,z:100});

function Update(){
    
    cube.rotate( {x:0.05,y:0.05,z:0.05} );
    cube2.rotate( {x:0.0,y:0.05,z:0.05} );
    tri.rotate( {x:0.05, y:0.05, z:0.0} );
    
    //camera.vector.z += 1;
    
    //camera.angle.x -= 0.01;
    
    //if(camera.vector.z > 10000)
    //    camera.vector.z = 300;
    
    setTimeout(Update, 1);
}//end Update()


var engine = new Engine();
engine.setCamera(camera);
engine.setGraphics(g);
engine.wireframe = false;
engine.enableFPS(true);

engine.addModel(cube);
engine.addModel(cube2);
engine.addModel(tri);

function Render(){
    document.getElementById("debug").innerHTML = engine.getFPS() + " Frames Per Second";
    document.getElementById("canvas").innerHTML = "";

    g.clear();
    engine.render();
    
    setTimeout(Render, 1);
}//end Render()

function Begin(){
        Render(); 
        Update();
}//end Begin()

setTimeout(Begin, 1000);

function setFilled(b){
    engine.filled = b;
}//end setFilled()

function setWireFrame(b){
    engine.wireframe = b;
}//end setWireFrame()


