function threeD_vector() {
    this.direction = new THREE.Vector3(0, -1, 0);
};

function normalize( x )
{
	if( x > 0 )
	{
		if( x < 0.001 )
			x = 0;	
		else if( x > 0.99 )
			x = 1;
	}
	else{
		if( x > -0.001 )
			x = 0;
		else if( x < -0.99 )
			x = -1;
	}
	
	return x;
};

threeD_vector.prototype.rotate = function (angle, axis) {    
	
	var dir = new THREE.Vector3( 0, -1, 0 );
	
	var quat = new THREE.Quaternion();
	quat.copy( cube_group.quaternion );
	quat.inverse();
	
	dir.applyQuaternion( quat );

	dir.x = normalize( dir.x );
	dir.y = normalize( dir.y );
	dir.z = normalize( dir.z );
	
	this.direction = dir;
	
   // $("#i").text(this.direction.x);
   // $("#j").text(this.direction.y);
   // $("#k").text(this.direction.z);

};

threeD_vector.prototype.right = function () {
    var dir = new THREE.Vector3(1, 0, 0);

    var quat = new THREE.Quaternion();
    quat.copy(cube_group.quaternion);
    quat.inverse();

    dir.applyQuaternion(quat);

    dir.x = normalize(dir.x);
    dir.y = normalize(dir.y);
    dir.z = normalize(dir.z);

    return dir;
}