AB.clockTick = 80; // Speed of run: Step every n milliseconds.
AB.maxSteps = 10000; // Length of run: Maximum length of run in steps. Default 1000.
AB.screenshotStep = 50; // Take screenshot on this step. (All resources should have finished loading.) Default 50.
const FILE_ARRAY = [
"/uploads/dg/earth.png",
"/uploads/dg/asteroid_1.jpeg", //planet + asteroid images
"/uploads/dg/asteroid_4.jpeg",
"/uploads/dg/asteroid_5.jpeg",
"/uploads/dg/marmar.jpeg",
"/uploads/dg/venven.jpeg",
"/uploads/dg/mermer.jpeg",
"/uploads/dg/jupii.jpeg",
"/uploads/dg/satsat.jpeg",
"/uploads/dg/uraura.jpeg",
"/uploads/dg/nepnep.jpeg",
"/uploads/dg/rings.png",
"/uploads/dg/ringu.png",
"/uploads/dg/right.jpg", //skybox images
"/uploads/dg/left.jpg",
"/uploads/dg/top.jpg",
"/uploads/dg/bot.jpg",
"/uploads/dg/front.jpg",
"/uploads/dg/back.jpg",
"/uploads/dg/rocket.jpeg",
"/uploads/dg/boom.jpeg",
];
const SKYCOLOR = 0xffffff;
const ARMYSIZE = 75;
//The amount of asteroids and planets
const objectsize = 225; //size of each asteroid
const objectsizeE = 400, objectsizeM = 300, objectsizeV = 350, objectsizeME = 200, objectsizeJ = 900, objectsizeS = 600, objectsizeSR = 600, objectsizeU = 300, objectsizeUR = 600, objectsizeN = 300, objectsizeSS = 200;
//Size of each planet + rings
const WALKSTEP = 20; // bounds of the random move per timestep
const MAXPOS = 4000 ; // start things within these bounds
const startRadiusConst = MAXPOS * 1.5 ; // distance from centre to start the camera at
const maxRadiusConst = MAXPOS * 5 ; // maximum distance from camera that will render things
const skyboxConst = MAXPOS * 4 //size of our skybox
ABHandler.MAXCAMERAPOS = MAXPOS * 1.25 ; // allow camera go far away
ABWorld.drawCameraControls = false;
AB.drawRunControls = false;
// declaring all the variables
var THEARMY = new Array( ARMYSIZE );
var textureArray = new Array ( FILE_ARRAY.length );
var EARTH, MARS, VENUS, MERCURY, JUPITER, SATURN, SATURNRING, URANUS, URANUSRING, NEPTUNE, SHIP; //declaring our planets
function load_resources() // asynchronous file loads - call initScene() when all finished
{
for ( var i = 0; i < FILE_ARRAY.length; i++ )
startFileLoad ( i ); // launch n asynchronous file loads
}
function startFileLoad ( n ) // asynchronous file load of texture n | from sample
{
var loader = new THREE.TextureLoader();
loader.load ( FILE_ARRAY[n], function ( thetexture )
{
thetexture.minFilter = THREE.LinearFilter;
textureArray[n] = thetexture;
if ( asynchFinished() ) initArmy();
});
}
function asynchFinished() // all file loads returned | from sample
{
for ( var i = 0; i < FILE_ARRAY.length; i++ )
if ( ! textureArray[i] )
return false;
return true;
}
function initArmy() // called when all textures ready //from sample world
{
var t = 0;
for ( var c=1 ; c <= ARMYSIZE ; c++ )
{
var shape = new THREE.CubeGeometry( objectsize, objectsize, objectsize ); //creates all cubes the size of the declared size
var theobject = new THREE.Mesh( shape );
theobject.position.x = AB.randomIntAtoB ( -3000, 3000); //random postions for the asteroids
theobject.position.z = AB.randomIntAtoB ( -3000, 3000 );
theobject.position.y = AB.randomIntAtoB ( -3000, 3000 );
var r = AB.randomIntAtoB ( 1, 3 ); // random texture from 1-3 for the asteroids
theobject.material = new THREE.MeshBasicMaterial ( { map: textureArray[r] } );
ABWorld.scene.add(theobject);
THEARMY[t] = theobject;
t++;
}
var shapeShip = new THREE.CylinderGeometry( 150, 75, -200 ); //will be the delcared size
var theShip = new THREE.Mesh( shapeShip );
//position of ship
theShip.position.x = 0;
theShip.position.z = 0;
theShip.position.y = 0;
theShip.material = new THREE.MeshBasicMaterial ( { map: textureArray[19] } ); //TEXTURE 0
ABWorld.scene.add(theShip);
SHIP = theShip;
//Earth
var shapeEarth = new THREE.SphereGeometry( objectsizeE, objectsizeE, objectsizeE ); //will be the delcared size
var theEarth = new THREE.Mesh( shapeEarth );
theEarth.position.x = -1000; //position of planet
theEarth.position.z = 0;
theEarth.position.y = 0;
theEarth.radius = 2000; //radius of planet -> for orbit
theEarth.start = Date.now() //needed for orbit i.e. postion right now
var Er = 0;
theEarth.material = new THREE.MeshBasicMaterial ( { map: textureArray[Er] } ); //TEXTURE 0
ABWorld.scene.add(theEarth);
EARTH = theEarth;
//MARS
var shapeMars = new THREE.SphereGeometry ( objectsizeM, objectsizeM, objectsizeM );
var theMars = new THREE.Mesh( shapeMars );
theMars.position.x = 0;
theMars.position.z = 0;
theMars.position.y = 0;
theMars.radius = 3000; //different radius to earth to represent a more accurate orbit
theMars.start = Date.now()
var Mr = 4;
theMars.material = new THREE.MeshBasicMaterial ( { map: textureArray[Mr] } );
ABWorld.scene.add(theMars);
MARS = theMars;
//VENUS
var shapeVenus= new THREE.SphereGeometry ( objectsizeV, objectsizeV, objectsizeV);
var theVenus = new THREE.Mesh( shapeVenus );
theVenus.position.x = -2000;
theVenus.position.z = 0;
theVenus.position.y = 0;
theVenus.radius = 1500;
theVenus.start = Date.now(); //needed for orbit
var Vr = 5;
theVenus.material = new THREE.MeshBasicMaterial ( { map: textureArray[Vr] } );
ABWorld.scene.add(theVenus);
VENUS = theVenus;
//MERCURY
var shapeMercury = new THREE.SphereGeometry ( objectsizeME, objectsizeME, objectsizeME );
var theMercury = new THREE.Mesh( shapeMercury );
theMercury.position.x = -2750;
theMercury.position.z = 0;
theMercury.position.y = 0;
theMercury.radius = 1000;
theMercury.start = Date.now(); //needed for orbit
var MEr = 6;
theMercury.material = new THREE.MeshBasicMaterial ( { map: textureArray[MEr] } );
ABWorld.scene.add(theMercury);
MERCURY = theMercury;
//JUPITER
var shapeJupiter = new THREE.SphereGeometry ( objectsizeJ, objectsizeJ, objectsizeJ );
var theJupiter = new THREE.Mesh( shapeJupiter );
theJupiter.position.x = 1500;
theJupiter.position.z = 0;
theJupiter.position.y = 0;
theJupiter.radius = 3750;
theJupiter.start = Date.now() //needed for orbit
var Jr = 7;
theJupiter.material = new THREE.MeshBasicMaterial ( { map: textureArray[Jr] } );
ABWorld.scene.add(theJupiter);
JUPITER = theJupiter;
//SATURN
var shapeSaturn = new THREE.SphereGeometry ( objectsizeS, objectsizeS, objectsizeS);
var theSaturn = new THREE.Mesh( shapeSaturn );
theSaturn.position.x = 3500;
theSaturn.position.z = 0;
theSaturn.position.y = 0;
theSaturn.radius = 5000;
theSaturn.start = Date.now()
var Sr = 8;
theSaturn.material = new THREE.MeshBasicMaterial ( { map: textureArray[Sr] } );
ABWorld.scene.add(theSaturn);
SATURN = theSaturn
//SRING
var shapeSaturnRing = new THREE.TorusGeometry (800, 100, 100, 100); //Shrunken torus used for the ring for Saturn
var theSaturnRing = new THREE.Mesh( shapeSaturnRing );
theSaturnRing.rotation.x = 200; //rotated to represent a more accurate version
theSaturnRing.rotation.y = 100;
theSaturnRing.rotation.z = 100;
theSaturnRing.position.x = 3500;
theSaturnRing.position.z = 0;
theSaturnRing.position.y = 0;
theSaturnRing.radius = 5000;
theSaturnRing.start = Date.now() //needed for orbit
var sr = 11;
theSaturnRing.material = new THREE.MeshBasicMaterial ( { map: textureArray[sr] } );
ABWorld.scene.add(theSaturnRing);
SATURNRING = theSaturnRing
//URANUS
var shapeUranus = new THREE.SphereGeometry ( objectsizeU, objectsizeU, objectsizeU);
var theUranus = new THREE.Mesh( shapeUranus );
theUranus.position.x = 5000;
theUranus.position.z = 0;
theUranus.position.y = 0;
theUranus.radius = 5750;
theUranus.start = Date.now() //needed for orbit
var ur = 9;
theUranus.material = new THREE.MeshBasicMaterial ( { map: textureArray[ur] } );
ABWorld.scene.add(theUranus);
URANUS = theUranus
//URING
var shapeUranusRing = new THREE.TorusGeometry (500, 20, 20, 20); //same as ring for Saturn, just thinner.
var theUranusRing = new THREE.Mesh( shapeUranusRing );
theUranusRing.rotation.x = 0;
theUranusRing.rotation.y = 350; //Rotated to represent a more accurate version
theUranusRing.rotation.z = 0;
theUranusRing.position.x = 5000;
theUranusRing.position.z = 0;
theUranusRing.position.y = 0;
theUranusRing.radius = 5750;
theUranusRing.start = Date.now() //needed for orbit
var Ur = 12;
theUranusRing.material = new THREE.MeshBasicMaterial ( { map: textureArray[Ur] } );
ABWorld.scene.add(theUranusRing);
URANUSRING = theUranusRing;
//NEPTUNE
var shapeNeptune = new THREE.SphereGeometry ( objectsizeN, objectsizeN, objectsizeN);
var theNeptune= new THREE.Mesh( shapeNeptune );
theNeptune.position.x = 6500;
theNeptune.position.z = 0;
theNeptune.position.y = 0;
theNeptune.radius = 6000;
theNeptune.start = Date.now()
var Nr = 10;
theNeptune.material = new THREE.MeshBasicMaterial ( { map: textureArray[Nr] } );
ABWorld.scene.add(theNeptune);
NEPTUNE = theNeptune;
var skybox_material_array = [
( new THREE.MeshBasicMaterial ( { map: textureArray[13], side: THREE.BackSide } ) ), //needed for our skybox images
( new THREE.MeshBasicMaterial ( { map: textureArray[14], side: THREE.BackSide } ) ),
( new THREE.MeshBasicMaterial ( { map: textureArray[15], side: THREE.BackSide } ) ),
( new THREE.MeshBasicMaterial ( { map: textureArray[16], side: THREE.BackSide } ) ),
( new THREE.MeshBasicMaterial ( { map: textureArray[17], side: THREE.BackSide } ) ),
( new THREE.MeshBasicMaterial ( { map: textureArray[18], side: THREE.BackSide } ) )
];
var skyGeometry = new THREE.CubeGeometry ( skyboxConst, skyboxConst, skyboxConst );
var skyMaterial = new THREE.MeshFaceMaterial ( skybox_material_array );
var theskybox = new THREE.Mesh ( skyGeometry, skyMaterial );
ABWorld.scene.add( theskybox );
// can start the run loop
ABWorld.render();
AB.removeLoading();
AB.runReady = true;
AB.msg ( ` <hr> <p>Destroy all asteroids before the time runs out!<p>
<p>How to play: <p> Drag camera & use arrow keys + q & e to move <p>
<p>Use spacebar blow up asteroids <p>
`);
}
function moveArmy() // move all the asteroids around the map randomly
{
for ( var i = 0; i < THEARMY.length; i++ )
{
if ( THEARMY[i] ) // this is in case initArmy() not called yet
{
THEARMY[i].position.x = THEARMY[i].position.x + AB.randomIntAtoB(-WALKSTEP,WALKSTEP) ;
THEARMY[i].position.z = THEARMY[i].position.z + AB.randomIntAtoB(-WALKSTEP,WALKSTEP) ;
THEARMY[i].position.y = THEARMY[i].position.y + AB.randomIntAtoB(-WALKSTEP,WALKSTEP) ;
ABWorld.scene.add( THEARMY[i] );
}
}
}
function moveEarth() //here we have our function for our earth to orbit
{
var earthangle = Math.PI*2; //our start angle
var circumference = EARTH.radius * 2 * Math.PI; //circumfrence
var duration = 5000; //5 seconds per rotation
var rotSpeed = 1.25 * Math.PI / duration; //the speed of our rotation (in radian/ms)
if ( EARTH )
{
var delta = Date.now() - EARTH.start;
var vector = circumference / duration;
// vector * data is a portion of circumference that the dot should have walked through by the duration delta.
// You have to normalize by your radius to get an angel (in radian).
var angle = rotSpeed * delta; // The angle is now already in radian, no longer need to convert from degree to radian.
EARTH.position.x = EARTH.radius * Math.cos(angle) ;
EARTH.position.z = EARTH.radius * Math.sin(angle) ;
EARTH.position.y = EARTH.radius * Math.cos(angle) ;
ABWorld.scene.add( EARTH );
}
}
function moveMars() //similar to above except for line 421
{
var marsangle = Math.PI*2;
var circumference = MARS.radius * 2 * Math.PI;
var duration = 5000; //5 seconds per rotation
var rotSpeed = 1.25 * Math.PI / duration;
if ( MARS )
{
var delta = Date.now() - MARS.start;
var vector = circumference / duration;
var angle = rotSpeed * delta;
MARS.position.x = MARS.radius * Math.cos(angle) ;
MARS.position.z = MARS.radius * Math.sin(angle) ;
MARS.position.y = MARS.radius * Math.sin(angle) ; //angle changed go sin from cos for a different rotation.
ABWorld.scene.add( MARS );
}
}
function moveVenus() //same as above
{
var venusangle = Math.PI*2;
var circumference = VENUS.radius * 2 * Math.PI; //circumfrence
var duration = 5000; //5 seconds per rotation
var rotSpeed = 1.25 * Math.PI / duration;
if ( VENUS )
{
var delta = Date.now() - VENUS.start;
var vector = circumference / duration;
var angle = rotSpeed * delta;
VENUS.position.x = VENUS.radius * Math.cos(angle) ;
VENUS.position.z = VENUS.radius * Math.sin(angle) ;
VENUS.position.y = VENUS.radius * Math.sin(angle) ;
ABWorld.scene.add( VENUS );
}
}
function moveMercury()
{
var mercuryangle = Math.PI*2;
var circumference = MERCURY.radius * 2 * Math.PI; //circumfrence
var duration = 5050; //5 seconds per rotation
var rotSpeed = 1.25 * Math.PI / duration;
if ( MERCURY )
{
var delta = Date.now() - MERCURY.start;
var vector = circumference / duration;
var angle = rotSpeed * delta;
MERCURY.position.x = MERCURY.radius * Math.cos(angle) ;
MERCURY.position.z = MERCURY.radius * Math.cos(angle) ; //angle changed for different rotation
MERCURY.position.y = MERCURY.radius * Math.sin(angle) ;
ABWorld.scene.add( MERCURY );
}
}
function moveJupiter()
{
var jupiterangle = Math.PI*2;
var circumference = JUPITER.radius * 2 * Math.PI; //circumfrence
var duration = 5050; //5 seconds per rotation
var rotSpeed = 1.25 * Math.PI / duration;
if ( JUPITER )
{
var delta = Date.now() - JUPITER.start;
var vector = circumference / duration;
var angle = rotSpeed * delta;
JUPITER.position.x = JUPITER.radius * Math.cos(angle) ;
JUPITER.position.z = JUPITER.radius * Math.sin(angle) ;
JUPITER.position.y = JUPITER.radius * Math.sin(angle) ;
ABWorld.scene.add( JUPITER );
}
}
function moveSaturn()
{
var saturnangle = Math.PI*2, saturnringangle = Math.PI*2
var circumference = SATURN.radius * 2 * Math.PI, ringcircumference = SATURNRING.radius * 2 * Math.PI;//curcumfrence
var duration = 5050; //5.05 seconds per rotation
var rotSpeed = 1.25 * Math.PI / duration;
if ( SATURN, SATURNRING ) //saturn and its ring called here to ensure they both otbit the same (speed, postion)
{
var delta = Date.now() - SATURN.start;
var deltaring = Date.now() - SATURNRING.start;
var vector = circumference / duration;
// vector * data is a portion of circumference that the dot should have walked through by the duration delta.
// You have to normalize by your radius to get an angel (in radian).
var angle = rotSpeed * delta;
var anglering = rotSpeed * deltaring;
SATURN.position.x = SATURN.radius * Math.cos(angle) ;
SATURN.position.z = SATURN.radius * Math.sin(angle) ;
SATURN.position.y = SATURN.radius * Math.sin(angle) ;
SATURNRING.position.x = SATURNRING.radius * Math.cos(angle) ;
SATURNRING.position.z = SATURNRING.radius * Math.sin(angle) ;
SATURNRING.position.y = SATURNRING.radius * Math.sin(angle) ;
ABWorld.scene.add( SATURN, SATURNRING);
}
}
function moveUranus()
{
var uranusnangle = Math.PI*2, uranusringangle = Math.PI*2
var circumference = URANUS.radius * 2 * Math.PI, ringcircumference = URANUSRING.radius * 2 * Math.PI;//circumfrence
var duration = 5050; //5050 seconds per rotation
var rotSpeed = 1.25 * Math.PI / duration;
if ( URANUS, URANUSRING ) //uranus and its ring called here to ensure they both otbit the same (speed, postion)
{
var delta = Date.now() - URANUS.start;
var deltaring = Date.now() - URANUSRING.start;
var vector = circumference / duration;
// vector * data is a portion of circumference that the dot should have walked through by the duration delta.
// You have to normalize by your radius to get an angel (in radian).
var angle = rotSpeed * delta;
var anglering = rotSpeed * deltaring;
URANUS.position.x = URANUS.radius * Math.cos(angle) ;
URANUS.position.z = URANUS.radius * Math.sin(angle) ;
URANUS.position.y = URANUS.radius * Math.sin(angle) ;
URANUSRING.position.x = URANUSRING.radius * Math.cos(angle) ;
URANUSRING.position.z = URANUSRING.radius * Math.sin(angle) ;
URANUSRING.position.y = URANUSRING.radius * Math.sin(angle) ;
ABWorld.scene.add( URANUS, URANUSRING);
}
}
function moveNeptune()
{
var neptuneangle = Math.PI*2;
var circumference = NEPTUNE.radius * 2 * Math.PI; //circumfrence
var duration = 4000; //4 seconds per rotation, faster speed to make a more natural looking orbit
var rotSpeed = 1.25 * Math.PI / duration;
if ( NEPTUNE )
{
var delta = Date.now() - NEPTUNE.start;
var vector = circumference / duration;
// vector * data is a portion of circumference that the dot should have walked through by the duration delta.
// You have to normalize by your radius to get an angel (in radian).
var angle = rotSpeed * delta;
NEPTUNE.position.x = NEPTUNE.radius * Math.cos(angle) ;
NEPTUNE.position.z = NEPTUNE.radius * Math.sin(angle) ;
NEPTUNE.position.y = NEPTUNE.radius * Math.sin(angle) ;
ABWorld.scene.add( NEPTUNE );
}
}
//function initOptions()
//{
//$("#user_span1").html( "<p align=\"center\"><font color=\"#C9C9C9\"><b>"+timer/AB.clockTick+" seconds remaining</b></font><p></b></p>" );
// document.getElementById("startButton").addEventListener("click", start);
//}
//function updateHUD()
///{
//if (gameMode === TIME)
//{
// $("#user_span1").html( "<p align=\"center\"><b>"+Math.floor(timer/AB.clockTick)+" seconds remaining</b><p></b></p>" );
//}
//}
//<p align=\"center\"><button id='startButton', style=\"height:40px;width:100px;background-color:#D3D3D3\"><b>START GAME</b></button></p>` );
document.addEventListener("keydown", function(event) //used to check key numbers
{
console.log(event.which);
})
var ACTION_LEFT = 200, ACTION_RIGHT = 2367, ACTION_UP = 768, ACTION_DOWN = 9822, ACTION_IN = 1111, ACTION_OUT = 4096584, EXPLODE = 41900
//all given random numbers
AB.world.newRun = function()
{
initMusic(); //for our music to work
AB.loadingScreen();
AB.runReady = false;
ABWorld.init3d ( startRadiusConst, maxRadiusConst, SKYCOLOR );
load_resources();
document.onkeydown = keyHandler;
};
AB.world.nextStep = function()
{
moveArmy();
moveEarth();
moveMars();
moveVenus();
moveMercury();
moveJupiter();
moveSaturn();
moveUranus();
moveNeptune();
};
//--- Socket functionality -----------------------------------------------------
// start socket
function moveLogicalAgent( a ) // this is called by the key/touch handlers, not by the infrastructure
{
if ( a == ACTION_LEFT )
SHIP.position.x = SHIP.position.x - 50; //move ship -50 on the x axis -> move left
else if ( a == ACTION_RIGHT )
SHIP.position.x = SHIP.position.x + 50; //move ship +50 on the x axis -> move right
else if ( a == ACTION_UP )
SHIP.position.y = SHIP.position.y - 50; //move ship -50 on the y axis -> move down
else if ( a == ACTION_DOWN )
SHIP.position.y = SHIP.position.y + 50; //move ship +50 on the y axis -> move up
else if (a == ACTION_IN )
SHIP.position.z = SHIP.position.z - 50; //move ship -50 on the z axis -> move inwards
else if (a == ACTION_OUT )
SHIP.position.z = SHIP.position.z + 50; //move ship +50 on the z axis -> move outwards
}
function explodeAsteroids() //this function explodes asteroids which are closest to the ship
{
var min_distance = 999999; //a large number for our min_distance
var closestasteroid2ship = null; //the closest asteroid to our ship is null currently
for ( var c = 0 ; c < THEARMY.length ; c++ ) //our loop here will determine which asteroid is closest.
{
var distanceship2as = SHIP.position.distanceTo(THEARMY[c].position); //distance fron our ship to asteroid is equal to the distance of the position of our ship to the distance of the position of the closest asteroid.
if (distanceship2as < min_distance)
{
min_distance = distanceship2as; //the min_distance is now equal to the distance above
closestasteroid2ship = c;
}
}
console.log("llllllllllllll") //some testing done for distance
THEARMY[closestasteroid2ship].material = new THREE.MeshBasicMaterial ( { map: textureArray[20] } );
}
AB.socketStart();
var OURKEYS = [ 37, 38, 39, 40, 81, 69, 32];
function ourKeys ( event ) { return ( OURKEYS.includes ( event.keyCode ) ); }
function keyHandler ( event )
{
if ( ! AB.runReady ) return true; // not ready yet
// if not handling this key, send it to default:
if ( ! ourKeys ( event ) ) return true;
// else handle it and prevent default:
if ( event.keyCode == 37 ) { moveLogicalAgent( ACTION_LEFT ); moveSounds(); musicPause();}
if ( event.keyCode == 38 ) { moveLogicalAgent( ACTION_DOWN ); moveSounds(); musicPause();}
if ( event.keyCode == 39 ) { moveLogicalAgent( ACTION_RIGHT ); moveSounds(); musicPause();}
if ( event.keyCode == 40 ) { moveLogicalAgent( ACTION_UP ); moveSounds(); musicPause();}
if ( event.keyCode == 81 ) { moveLogicalAgent( ACTION_IN ); moveSounds(); musicPause();}
if ( event.keyCode == 69 ) { moveLogicalAgent( ACTION_OUT ); moveSounds(); musicPause();}
if ( event.keyCode == 32 ) {explodeAsteroids(); fireMissile(); AB.socketOut();}
event.stopPropagation(); event.preventDefault(); return false;
}
AB.socketIn = function() // incoming data on socket, i.e. clicks of other player
{
if ( ! AB.runReady ) return;
explodeAsteroids()
};
function fireMissile()
{
var x = "<audio src=/uploads/dg/boom.wav autoplay > </audio>"; //copyright it
$("#user_span2").html( x );
}
function moveSounds()
{
var x = "<audio src=/uploads/dg/move.mp3 autoplay > </audio>"; //copyright it
$("#user_span3").html( x );
}
function inoutSounds()
{
var x = "<audio src=/uploads/dg/inout.mp3 autoplay > </audio>"; //copyright it
$("#user_span4").html( x );
}
function initMusic()
{
// put music element in one of the spans
var x = "<audio id=theaudio src=/uploads/dg/spacetheme.mp3 autoplay loop> </audio>" ;
$("#user_span5").html( x );
}
function musicPlay()
{
// jQuery does not seem to parse pause() etc. so find the element the old way:
document.getElementById('theaudio').play();
}
function musicPause()
{
document.getElementById('theaudio').pause();
}