//Batmons 2.02
//©2008 Matthew White
//runic@wizardlore.com


var maxBats = 6;
var aTop = -15;
var aLeft = 0;
var aRight = 170;
var aBottom = 100;
var speedX = 2;
var speedY = 2;
var dirX = new Array();
var dirY = new Array();
var myBats = new Array();
var hit = new Array();
var bx = new Array();
var by = new Array();
var sleeping = new Array();
var dieing = new Array();
var timer;
var points=0;
var shownPoints=0;

function setupBats(){
	var out = "";
	
	for(i=1;i<=maxBats;i++){
		sleeping[i] = 0;
		out = out + "<style type=\"text/css\"><!-- #bat"+i+" {position: absolute; top: 0px; left: 0px; z-index: 5;} --></style>";
		out = out + "<div name=\"bat"+i+"\" id=\"bat"+i+"\">";
		out = out + "<img name=\"bat"+i+"Image\"";
		out = out + " src=\"http://wizardlore.com/images/batmon_flying_c2_2.gif\""; 
		out = out + " border=\"0\"";
		out = out + " onClick=\"batClicked("+i+");\"";
		out = out + ">";
		out = out + "</div>";
		out = out + "<style type=\"text/css\"><!-- #hit"+i+" {position: absolute; top: 0px; left: 0px; color: #FF0000 ;  font-size: 12px;  font-weight: bold; display: none; z-index: 5;} --></style>"
		out = out + "<div name=\"hit"+i+"\" id=\"hit"+i+"\"></div>";
	}
	out = out + "<style type=\"text/css\"><!-- #score {position: absolute; top: 5px; left: 5px; z-index: 5;} --></style>"
	out = out + "<div name=\"score\" id=\"score\"></div>";
	points = 0;
	shownPoints = 0;
	
	document.write(out);
	
	for(i=1;i<=maxBats;i++){
		
		if(Math.random() > 0.5) { dirX[i] = speedX*i; }else{ dirX[i] = -(speedX*i); }
		if(Math.random() > 0.5) { dirY[i] = speedY*i; }else{ dirY[i] = -(speedY*i); }
		sleeping[i] = 0;
		dieing[i] = false;
		myBats[i] = document.getElementById(("bat"+i));
		
//myBats[i].style.left = (aLeft + (i*((getWindowWidth()-aLeft)/(maxBats)))/2) + "px";
		bx[i] = aLeft + (Math.random()*((getWindowWidth()-aLeft-aRight)));
		by[i] = aTop+5;
		myBats[i].style.left = Math.round( bx[i] ) + "px";
		myBats[i].style.top = Math.round( by[i] ) + "px";
	}
}

function batClicked(i){
	var p = 25 + Math.round( 25 * ( Math.abs(dirX[i]) + Math.abs(dirY[i]) ) );
	if( sleeping[i] < 1 ){points = points + p;}else{p = 0;}
	hit[i] = document.getElementById(("hit"+i));
	hit[i].innerHTML = p + "pts"
	hit[i].style.left = Math.round(bx[i]+50) + "px";
	hit[i].style.top = Math.round(by[i]+50) + "px";
	hit[i].style.display = "block";
	hit[i].c = 255;
	dieing[i] = true;
}

function bats(){
//var maxTop = getScrollXY()[1] + aTop;
var maxTop = aTop;
var maxLeft = getScrollXY()[0] + aLeft;
var maxRight = getWindowWidth() + getScrollXY()[0] - aRight;
var maxBottom = getWindowHeight() + getScrollXY()[1] - aBottom;


if(shownPoints < points-1000){shownPoints = shownPoints + 111;} else {
if(shownPoints < points-500){shownPoints = shownPoints + 71;} else {
if(shownPoints < points-100){shownPoints = shownPoints + 11;} else {
if(shownPoints < points-50){shownPoints = shownPoints + 7;} else {
if(shownPoints < points ){shownPoints = shownPoints + 1;}}}}}
var score = document.getElementById("score");
s = "" + shownPoints
sl = "" + shownPoints
if( shownPoints > 0){
for (k=0;k<(8-sl.length);k++){
	s = "0" + s;
}
score.innerHTML = "<b>"+s+"</b>";
}

for(i=1;i<=maxBats;i++){

myBats[i] = document.getElementById(("bat"+i));
hit[i] = document.getElementById(("hit"+i));

if(hit[i].style.display == "block"){
	var l = hit[i].style.top;
	if (l.indexOf("px") > -1) {
		l = parseInt(l.substring(0,l.indexOf("px")));
	}
	hit[i].style.top = (l-1) + "px";
    hit[i].c = hit[i].c - 4;
	if(hit[i].c<0){ hit[i].c =0;}  
	var RR = decimal2Hex(hit[i].c);
	if(RR.length < 2){ RR = "0" + RR;}
	hit[i].style.color = "#" + RR + "0000";
	
	if(hit[i].c <=0){
		hit[i].style.display = "none";
	}
}

if(dieing[i]){
	if(document.images["bat"+i+"Image"].src != "http://wizardlore.com/images/batmon_sleeping_c2_2.gif"){
		document.images["bat"+i+"Image"].src="http://wizardlore.com/images/batmon_sleeping_c2_2.gif";
		
	}
	if(sleeping[i]>0){ dirX[i] = 0; }
	dirY[i] = 25;
	bx[i] = bx[i] + dirX[i];
	by[i] = by[i] + dirY[i];
	if (by[i] >= getWindowHeight() + getScrollXY()[1]){  
		bx[i] = aLeft + (Math.random()*((getWindowWidth()-aLeft-aRight)))
		by[i] = aTop+5; 
		dirX[i] = speedX*(i/2);
		dirY[i] = speedY*(i/2);
		sleeping[i] = 200;
		dieing[i] = false;
	}
	myBats[i].style.left = Math.round(bx[i]) + "px";
	myBats[i].style.top = Math.round(by[i]) + "px";
	
} else {
if(sleeping[i] > 0){
	if(document.images["bat"+i+"Image"].src != "http://wizardlore.com/images/batmon_sleeping_c2_2.gif"){
		document.images["bat"+i+"Image"].src="http://wizardlore.com/images/batmon_sleeping_c2_2.gif";
		
	}
	if(getScrollXY()[1]+aTop > by[i]){
		//myBats[i].style.top = (getScrollXY()[1]+aTop) + "px";
	}
	sleeping[i] = sleeping[i] - 1;
}else{
	
if(Math.random()> 0.9){ speedX = 2 + (Math.random()*5); }
if(Math.random()> 0.9){ speedY = 2 + (Math.random()*1); }

if (bx[i] <= maxLeft){
	dirX[i] = speedX*(i/2);
}
if (bx[i] >= maxRight){
	dirX[i] = -(speedX*(i/2));
}
if (by[i] <= maxTop){
	if(sleeping[i] == 0 && Math.random() > 0.3){
		sleeping[i] = 200;
	}
	dirY[i] = speedY*(i/2)
}
if (by[i] >= maxBottom){
	
	dirY[i] = -(speedY*(i/2));
}

if(Math.random() > 0.9 && Math.random() > 0.9){
	if(Math.random() > 0.5){
		dirX[i] = speedX*(i/2);
	}else{
		dirX[i] = -(speedX*(i/2));
	}
}

if(Math.random() > 0.9 && Math.random() > 0.9){
	if(Math.random() > 0.3 ){
		dirY[i] = speedY*(i/maxBats);
	}else{
		dirY[i] = -(speedY*(i/2));
	}
}


if(dirX[i] > 0 && dirY[i] > 0){
	if(document.images["bat"+i+"Image"].src != "http://wizardlore.com/images/batmon_flying_c3_2.gif"){
		document.images["bat"+i+"Image"].src="http://wizardlore.com/images/batmon_flying_c3_2.gif";
	}
}

if(dirX[i] > 0 && dirY[i] < 0){	
	if(document.images["bat"+i+"Image"].src != "http://wizardlore.com/images/batmon_flying_c3_2.gif"){
		document.images["bat"+i+"Image"].src="http://wizardlore.com/images/batmon_flying_c3_2.gif";
	} 
}

if(dirX[i] < 0 && dirY[i] > 0){	
	if(document.images["bat"+i+"Image"].src != "http://wizardlore.com/images/batmon_flying_c2_2.gif"){
		document.images["bat"+i+"Image"].src="http://wizardlore.com/images/batmon_flying_c2_2.gif";
	} 
}

if(dirX[i] < 0 && dirY[i] < 0){	
	if(document.images["bat"+i+"Image"].src != "http://wizardlore.com/images/batmon_flying_c4_2.gif"){
		document.images["bat"+i+"Image"].src="http://wizardlore.com/images/batmon_flying_c4_2.gif";
	} 
}

bx[i] = bx[i] + dirX[i];
by[i] = by[i] + dirY[i];
myBats[i].style.left = Math.round(bx[i]) + "px";
myBats[i].style.top = Math.round(by[i]) + "px";
}
}
}
if(timer){clearTimeout(timer);}
timer = setTimeout("bats()",50);
}

isNN=(navigator.appName=="Netscape")?1:0;
isIE=(navigator.appName.indexOf( "Microsoft")!=-1)?1:0;
function getWindowWidth(){
	if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
   return window.innerWidth;
alert("using inner width");
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    return document.documentElement.clientWidth;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    return document.body.clientWidth;
  }
  return "undefined";
}
function getWindowHeight(){
	if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    return window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    return document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    return document.body.clientHeight;
  }
  return "undefined";
}
function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function decimal2Hex(decimal) {return decimal.toString(16);}
function hex2Decimal(hex) {return parseInt(hex,16);} 



setupBats();
timer = setTimeout("bats()",500);
