var level = 1;
function startGame()
{
	//
	//showDebug();
	//
	
	//
	// This is called once the page completes loading
	//
		
	//
	// and friendly units to map
	//
	friendly= new Object;
	friendly.unitID = 5;
	friendly.imageName='lord';
	friendly.unitName //= 'Lord';
	friendly.movement = 3;
	friendly.range = 3;
	friendly.life = 100;
	friendly.waitTime = 5;
	friendly.damage = 35;
	friendly.ownerID = 1;
	friendly.x = 0;
	friendly.y = 2;
	friendly.isControllable = 'Y';
	friendly.usesAi = 'N';
	addUnit(friendly);

	
	friendly2= copyUnit(friendly, 6);
	friendly2.x = 0;
	friendly2.y = 3;
	addUnit(friendly2);
	
	
	friendly3= copyUnit(friendly, 7);
	friendly3.x = 2;
	friendly3.y = 4;
	//addUnit(friendly3);

	
	tree1=new Object();
	tree1.objectID = 1;	//must be unique
	tree1.imageName='wallTop';
	tree1.name = 'Tree';
	tree1.x = 1;
	tree1.y = 1;
	addTileObject(tree1);
	
	tree2= copyTileObject(tree1, 2);
	tree2.x = 1;
	tree2.y = 4;
	addTileObject(tree2);
	
	tree3= copyTileObject(tree1, 3);
	tree3.x = 4;
	tree3.y = 1;
	addTileObject(tree3);
	

	tree4= copyTileObject(tree1, 4);
	tree4.x = 4;
	tree4.y = 4;
	addTileObject(tree4);	
	
	//
	// I want to start the level now
	//

	startLevel(level);

		
}



//
// Call this once the entire page loads
//
function play()
{
	
	debug("Step:" + step + " Refresh Rate:" + gameRefreshRate);
	
	//
	//every 3rd step run the AI (10 seconds)
	//
	runAI();
	
	//
	//cycle through all enemy units, if they are alive keep playing the game
	//
	nextLevel = true;
	debug("UnitIDs:" + newUnitIDs);
	var unitIDArray = getUnitIDs().split(",");
	for(i=0;i<unitIDArray.length;i++)
	{
		//alert("chcking:"+ unitIDArray[i]);
		newU = document.getElementById("unit_" + unitIDArray[i]);
		if(newU != null)
		{
			//alert(unitIDArray[i] + " " + newU.getAttribute("usesAi"));
			if(newU.getAttribute("usesAi") == 'Y' 
				&& newU.getAttribute("life") > 0)
			{
				nextLevel = false;
				break;
			}
		}
	
	}
	//
	// update the wait time counter
	//
	updateWaitTime(gameRefreshRate/1000);

	step++;
	if(!nextLevel)
	{
		setTimeout("play()", gameRefreshRate);
	}
	else
	{
		level++;
		startLevel(level);
		//setTimeout("play()", gameRefreshRate);
	}
}

lastAi = 0;
numAi = 2;
function runAI()
{
	
	//
	//check newly added units
	//
	var unitIDArray = getUnitIDs().split(",");
	
	aiID = 0;
	for(i=lastAi;i<unitIDArray.length;i++)
	{
		newU = document.getElementById("unit_" + unitIDArray[i]);
		if(newU != null)
		{
			if(newU.getAttribute("usesAi") == 'Y' 
				&& newU.getAttribute("life") > 0
				&& newU.getAttribute("waitTime") <= 0)
			{
				lastAi = i;
				aiID = unitIDArray[i];
				break;
			}
		}

	}

	if(aiID == 0)
	{
		lastAi =0;
		return;
	}
	
	aiObj = document.getElementById("unit_" + aiID);
	
	if(aiObj == null)
	{
		errorHandler("No AI units found");
		return;
	}
	
	if(aiObj.getAttribute("waitTime") <= 0)
	{
		targetID = attackNearestEnemyWithinRange(aiID, aiObj.getAttribute("range"));

		if(targetID == 0)
		{
			//
			// no one to attack, move to nearest enemy
			//
			moveToNearestEnemy(aiID);

		}

		setWaitTime(aiID, 20);
	}
	
	lastAi++;
}


function startLevel(level)
{
	if(level < 1)
	{
		level = 1;
	}
	
	for(a1 = 0; a1 < level; a1++)
	{
		//--------------------------------------------------------------------------
		//
		// Add Enemy units
		//
		//--------------------------------------------------------------------------
		pos = getRandomEmptyPositionBetween(3,5,0,5);
		
		var enemy = new Object();
		enemy.unitID = level + a1 + 100;	//must be unique
		enemy.imageName='bandit';
		enemy.ownerID=-1;	//-1 is the ID for a unit controlled by Ai
		enemy.unitName = 'Lord';
		enemy.x = pos[0];
		enemy.y = pos[1];
		enemy.movement = 3;
		enemy.range = 3;
		enemy.life = 100;
		enemy.waitTime = 5;
		enemy.isControllable = 'N';
		enemy.damage = 15;
		enemy.usesAi = 'Y';
		addUnit(enemy);
		
		debug("Enemy " + a1 + " loaded.");
	}
	
	
	msg= "<center>";
	msg+= "<h2>";
	msg+= "Play the Demo</h2>";
	msg+= "Level " + level;
	msg+= "<P>";
	msg+= " Kill All Enemies<P>";
	msg+= "<a href='javascript: hideGameMsg(); play();'>Play</a>";
	msg+= "<P>"
	
	msg+= "</center>";
	showGameMsg(msg);
	
}
