<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Million dollar test</title>
<style type="text/css" media="screen">
    body {
        padding: 0px; margin: 0px; font-size: 12px; font-family:"Lucida Grande", Verdana, Arial, sans-serif;
        background:#303030;
    }
    .ie {text-align: left; width:1000px;position:relative;visibility:hidden;z-index:1;}
    .grid {height: 1000px; width:1000px; position:relative;z-index:153;xoverflow:hidden;}
    .row {background:url(100grid_inv.png) #000;height: 100px; text-align: left; position:relative;width:1000px;z-index:10;}
    #lq {width:1000px;position:relative;z-index:0;text-align:left;}
    .bz {-webkit-perspective: 1500;-webkit-perspective-origin: 50% 325px;}
    .fc {-webkit-transform-style: preserve-3d;transform:  rotateY(0deg) ;opacity: 1.0;}
    @-webkit-keyframes spin_3d {
    0%    { transform: rotateY(0)       rotateZ(0); }
    33%   { transform: rotateY(-20deg)  rotateZ(-20deg); }
    65%   { transform: rotateY(20deg) rotateZ(20deg); }
    100%  { transform: rotateY(0deg) rotateZ(0deg); }
    }
    .plane > a {display:block;height:100%;width:100%;}
    .plane {
        position: absolute;
        opacity:0.5;
        background-repeat:no-repeat;
        -webkit-transition: -webkit-transform 0.3s, opacity 0s;-webkit-backface-visibility: visible;}
</style>

<script type="text/javascript">
function loadBlocks() {
    document.getElementById("ie").style.visibility = "visible";
    document.getElementById("ie").className = document.getElementById("ie").className + " bz";
    document.getElementById("grid").className = document.getElementById("grid").className + " fc";
    document.getElementById("lq").style.display = "none";

    var cubes;

    cubify(200,0,250,50);
    cubify(800,500,900,600);
    cubify(250,350,300,400);
    cubify(600,600,650,650);
    cubify(850,0,900,50);
    cubify(650,450,700,500);
    cubify(100,500,250,650);
    cubify(400,600,500,700);
    cubify(700,600,800,700);
    cubify(350,0,500,150);
    cubify(450,200,500,250);
    cubify(550,250,600,300);
    cubify(0,400,100,450);
    cubify(600,150,650,200);
    cubify(600,700,650,750);
    cubify(150,850,450,950);
    cubify(200,100,300,200);
    cubify(750,200,950,400);
    cubify(250,700,350,800);
    cubify(600,800,700,900);
    cubify(100,300,150,350);
    cubify(0,300,50,350);
    cubify(850,650,950,700);
    cubify(900,100,950,150);
    cubify(200,400,250,450);
    cubify(200,250,250,300);
    cubify(300,600,350,650);
    cubify(50,200,100,250);
    cubify(100,100,150,150);
    cubify(0,0,5,5);
    cubify(470,430,475,435);
    cubify(520,480,525,485);
    cubify(570,380,575,385);
    cubify(550,0,600,50);
    cubify(650,0,700,50);
    cubify(425,390,455,400);
    cubify(435,400,445,430);
    cubify(525,425,530,430);
    cubify(450,500,465,515);
    cubify(650,100,750,200);
    cubify(0,0,50,50);
    cubify(700,750,900,800);
    cubify(495,390,510,405);
    cubify(495,445,500,450);
    cubify(560,450,565,455);
    cubify(460,460,465,465);
    cubify(525,370,530,375);
    cubify(490,420,495,425);
    cubify(520,440,525,445);
    cubify(510,420,515,425);
    cubify(495,465,500,470);
    cubify(475,405,480,410);
    cubify(545,400,550,405);
    cubify(485,370,490,375);
    cubify(430,365,435,370);

    document.getElementById("grid").innerHTML = cubes + document.getElementById("grid").innerHTML;

    function cubify(x1, y1, x2, y2)
    {
        var width, height,dw;
        width = x2 - x1;
        height = y2 - y1;
        if (width < height) {
            dw = width;
        } else {
            dw = height;
        }
        cubes += addBlock(x1,y1,width,height,dw);
    }
    
    function addBlock(x1,y1,xf,qp,dw)
    {
       return "<div class='a_cube'><div class='plane one' style='background-color: red;height:"+dw+"px;width:"+dw+"px;top:"+y1+"px;left:"+x1+"px;transform:rotateY(90deg) rotateZ(-90deg) translateX(0px) translateY(-"+(dw/2)+"px) translateZ("+(dw/2)+"px) translateY(0px);position:absolute;'></div><div class='plane two' style='background-color: blue;height:"+dw+"px;width:"+dw+"px;top:"+y1+"px;left:"+x1+"px;transform:rotateY(90deg) rotateX(180deg) rotateZ(-90deg) translateX(0px) translateY(-"+(dw/2)+"px) translateZ("+(dw/2)+"px) translateY(0px);position:absolute;'></div><div class='plane three' style='background-color: green;height:"+dw+"px;width:"+dw+"px;top:"+y1+"px;left:"+x1+"px;transform:rotateX(-90deg) translateX(0px) translateZ("+(dw/2)+"px) translateY(-"+(dw/2)+"px);position:absolute;'></div><div class='plane four' style='background-color: yellow;height:"+dw+"px;width:"+dw+"px;top:"+y1+"px;left:"+x1+"px;transform:rotateY(90deg) rotateX(90deg) rotateZ(-90deg) translateY(-"+(dw/2)+"px) translateX(0px) translateZ("+(dw/2)+"px) translateY(0px);position:absolute;'></div><div class='plane five' style='background-color: gray;height:"+dw+"px;width:"+dw+"px;top:"+y1+"px;left:"+x1+"px;transform:rotateY(0deg) translateX(0px) translateZ("+(dw)+"px) translateY(0px);position:absolute;'></div></div>";
    }

    document.getElementById("grid").style.webkitAnimation = "spin_3d 36s infinite linear";
};

</script>
</head>
<body onload="loadBlocks()">
<center>
    <div id="lq">
        <div style="top: 252px; left: 203px; width: 196px; height: 196px; position: relative;
            z-index: 0; text-align: left; border: 0px solid #999; padding: 0px; background: #333;
            -moz-border-radius: 0px; -webkit-border-radius: 0px; text-align: center;">
            $1 a pixel
        </div>
    </div>
    <div class="ie" id="ie">
        <div class="grid" id="grid">
            <div class="row" id="row0"></div><div class="row" id="row1"></div><div class="row" id="row2"></div><div class="row" id="row3"></div><div class="row" id="row4"></div><div class="row" id="row5"></div><div class="row" id="row6"></div><div class="row" id="row7"></div><div class="row" id="row8"></div><div class="row" id="row9"></div>
        </div>
    </div>
</center>
</body>
</html>
