// global variables (Yes, I know a bad thing but...)

// DEBUG-TESTING  
//alert('BGSTARS.JS :  TOP');

//  Planets: Start
var Planet1XStart  = 0;
var Planet1YStart  = 0;
var Planet2XStart  = 0;
var Planet2YStart  = 0;
var Planet3XStart  = 0;
var Planet3YStart  = 0;

//  Planets: Current
var Planet1X  = 0;
var Planet1Y  = 0;
var Planet2X  = 0;
var Planet2Y  = 0;
var Planet3X  = 0;
var Planet3Y  = 0;

//  Moving  (IGD TODO, make really 'random' .8 range, - .4
var Planet1MoveX	 =  0  + 0.30;
var Planet1MoveY	 =  0;
var Planet2MoveX	 =  0  - 0.15;
var Planet2MoveY	 =  0  + 0.40;
var Planet3MoveX	 =  0  + (0.8*Math.random())-0.4;
var Planet3MoveY	 =  0  - (0.8*Math.random())-0.4;

// IGD: TODO: Add a third planet ???
// IGD: 2005 12 14, TODO, make a Majii which is half behind text and half in front of
//          (i.e. make two animation gifs, edit so 'forward' half of rings is in one gif.
//                and the 'back' half of the rings are in the other.
//                layer the 'back' half-rings to behind text,and the 'forward' half, on top of text.)
var MovePlanets = true;
var PlanetSpeed = 6;  // was 7

// Stars
var StarsNum = 7;
var XYRange =  1;
var XYRange2 = XYRange/2; 
var StarMoveX = (XYRange*Math.random()) - XYRange2;
var StarMoveY = (XYRange*Math.random()) - XYRange2;
var starQuiet = 10;  // 1000 wait 10 seconds before moving
var starQuietDelay = 200;   // time between shifts

function LoadMove() {
// alert('BGSTARS.JS :  LoadMove');
  positionLayers();
  StartMove();
}

function StartMove() {
  MovePlanets=true;
}

function StopMove() {
  MovePlanets=false;
}
 

function ToggleMove() {
  if (MovePlanets) {
	StopMove();
  } else {
	StartMove();	
  }
}

function changeImageSrc(img,newsrc) {
  if (is.ie6 || is.ns6) {
    document.getElementById(img).setAttribute("src",newsrc);
  }
  else {
    document.images[img].src=newsrc;
  }
}

function loadStars() {
  for (i=0;i<StarsNum;i++) {
    StarObj = getObj('Star' + i,true); 
    StarObj.position='absolute';
    StarObj.left = (Math.round((available_width -100)*Math.random())) + 50 + unit;
    StarObj.top  = (Math.round((available_height-100)*Math.random())) + 50 + unit;
    StarObj.visibility = 'visible';
//    alert('BGSTARS.JS :  loadstars [' + i + ']'+ StarObj.left + "-" + StarObj.top);
///not-valid    StarObj.z-index = i;
  } 
}

function positionLayers() {
//alert('BGSTARS.JS :  PositionLayers: Start');
  getSize();

  loadStars();

// TODO: Move Planet code to seperate function call ....
// TODO: Is there really a need for 'PlanetNX/YStart' ??? Maybe just a 'Initialized' flag?

  if( Planet1XStart == 0) { Planet1XStart = 20; }
  if( Planet1YStart == 0) { Planet1YStart = (available_height)/6; }
  
  if( Planet2XStart == 0) { Planet2XStart = (available_width)*(2/3); }
  if( Planet2YStart == 0) { Planet2YStart = 5; }

  if( Planet3XStart == 0) { Planet3XStart = (available_width)/2;  } // *Math.random();
  if( Planet3YStart == 0) { Planet3YStart = (available_height)/2; } // *Math.random();

  if (document.images && (is.ie || is.ns6 || is.opera6)) {
    now = new Date();
    thisDay = now.getDay();
    phaseNo = thisDay + 1 ; //1-7, or Math.floor(thisDay/2)+1 = number between 1 and 4
    planetPath = document.images["imgPlanet1"].src;
    relPath = planetPath.substring(0,planetPath.indexOf('images'));
    changeImageSrc('imgPlanet1',relPath + 'images/planets/Planet' + phaseNo + '.gif'); 
    changeImageSrc('imgPlanet2',relPath + 'images/planets/Moon'   + phaseNo + '.gif');
  }

  Planet1Y  = Planet1YStart;
  Planet1X  = Planet1XStart;
// setObjXY('Planet1,true);
  Planet1Obj = getObj('Planet1',true); 
  Planet1Obj.position="absolute";
  Planet1Obj.left = Planet1X + unit;
  Planet1Obj.top  = Planet1Y + unit;
  Planet1Obj.visibility = "visible";

  Planet2Y  = Planet2YStart;
  Planet2X  = Planet2XStart;
// setObjXY('Planet2',Planet2X, Planet2Y,true);
  Planet2Obj = getObj('Planet2',true); 
  Planet2Obj.position="absolute";
  Planet2Obj.left = Planet2X + unit;
  Planet2Obj.top  = Planet2Y + unit;
  Planet2Obj.visibility = "visible";

  Planet3Y  = Planet3YStart;
  Planet3X  = Planet3XStart;
// setObjXY('Planet3',Planet3X, Planet3Y,true);
  Planet3Obj = getObj('Planet3',true); 
  Planet3Obj.position="absolute";
  Planet3Obj.left = Planet3X + unit;
  Planet3Obj.top  = Planet3Y + unit;
  Planet3Obj.visibility = "visible";

  TextObj = getObj('Text',true); 
  TextObj.visibility="visible";

  animate();
//alert('BGSTARS.JS :  PositionLayers: End');
 }

////////////////////////////////////////////////////////////////////
function animate() {
// DEBUG-TESTING  
//alert('BGSTARS.JS:  ANIMATE: Start');

  if (MovePlanets == true) {
//        getSize();
	Planet1X  = Planet1X  + Planet1MoveX;
	Planet1Y  = Planet1Y  + Planet1MoveY;
//	Planet1W  = parseInt(sphere1Obj.width);  // IGD: TODO: Take actual width

	Planet2X  = Planet2X  + Planet2MoveX;
	Planet2Y  = Planet2Y  + Planet2MoveY;

	Planet3X  = Planet3X  + Planet3MoveX;
	Planet3Y  = Planet3Y  + Planet3MoveY;

// IGD: TODO, Really need to correct for the height/width of the planet at bounce....
//       make RangeCheck(Min,Num,Max);
// IGD: TODO: Seperate combined IF statements, if X or Y out of bounds,
//            keep moving to correct. (current hack, re-position planets on window resize)
	if ( (Planet1X < 0 ) || (Planet1X > (available_width-150)) ){
		Planet1MoveX = - Planet1MoveX;
		Planet1X = Planet1X + (Planet1MoveX);
	}

	if ( (Planet1Y < 0 ) || (Planet1Y > (available_height-150)) ){
		Planet1MoveY = - Planet1MoveY;
		Planet1Y = Planet1Y + (Planet1MoveY);
	}

	if ( (Planet2X < 0 ) || (Planet2X > (available_width-150)) ){
		Planet2MoveX = - Planet2MoveX;
		Planet2X = Planet2X + (Planet2MoveX);
	}

	if ( (Planet2Y < 0 )  || (Planet2Y > (available_height-150)) ){
		Planet2MoveY = - Planet2MoveY;
		Planet2Y = Planet2Y + (Planet2MoveY);
	}

	if ( (Planet3X < 0 ) || (Planet3X > (available_width-150)) ){
		Planet3MoveX = - Planet3MoveX;
		Planet3X = Planet3X + (Planet3MoveX);
	}

	if ( (Planet3Y < 0 )  || (Planet3Y > (available_height-150)) ){
		Planet3MoveY = - Planet3MoveY;
		Planet3Y = Planet3Y + (Planet3MoveY);
	}

	Planet1Obj = getObj('Planet1',true);
	Planet1Obj.left = Planet1X + unit;
	Planet1Obj.top = Planet1Y + unit;
 
	Planet2Obj = getObj('Planet2',true);
	Planet2Obj.left = Planet2X + unit;
	Planet2Obj.top = Planet2Y + unit;

	Planet3Obj = getObj('Planet3',true);
	Planet3Obj.left = Planet3X + unit;
	Planet3Obj.top = Planet3Y + unit;

  if (!starQuiet) {
	for (i=0;i<StarsNum;i++) {
		StarMoveX = (XYRange*Math.random()) - XYRange2;
		StarMoveY = (XYRange*Math.random()) - XYRange2;
		StarObj = getObj('Star' + i,true);
		StarObj.left =  parseInt(StarObj.left) + StarMoveY  + unit;
		StarObj.top  =  parseInt(StarObj.top)  + StarMoveX  + unit;
	}
	starQuiet=starQuietDelay;
  } 
  starQuiet=starQuiet-1;
  setTimeout("animate()", PlanetSpeed);
  PlanetSpeed = PlanetSpeed * 1.0005;    // This slows down over time....

  }

// alert('BGSTARS.JS:  ANIMATE: Start');

}

// IGD: TODO:  function ReturnRange(Range)  return (Rand*Range-(Range/2) )

/* ************************************** 

function greyImages(img,state) {
 if (is.ie)  {
  objImg = getObj(img,true); 
  objImg.filter=state;
 }
}

**************************************** */


// alert('BGSTARS.JS :  END');
// EOF //////////////////////////////////////////////////////
