//these get reinitialised at startup
var door1 = "car";
var door2 = "goat";
var door3 = "chicken";
var doorsopen = new Array(5);
var mh_state = 0;
var rst_timer=0;

function rollover(doorid)
{

	if(rst_timer) {
		window.clearTimeout(rst_timer);
		rst_timer=0;
	}

	switch(mh_state) {
		case 0:	chooseFirstDoor(doorid);
				break;
				
		case 1: chooseSecondDoor(doorid);
				break;
				
		default: initMontyHall();
				 break;
	}
}

//This function sets up the prizes and the goats
function setupPrizes() {
		//randomise...
		//get three random numbers
		var goatran = Math.round(Math.random() * 100);
		var carran = Math.round(Math.random() * 100);
		//this will be a goat most of the time ;)
		var chickenran = Math.round(Math.random() * 100); 
		var lowest = "goat";
		if (carran < goatran) lowest = "car";
		if ((chickenran < carran) && (chickenran < goatran)) lowest = "chicken";

		var highest = "goat";
		if (carran > goatran) highest = "car";
		if ((chickenran > carran) && (chickenran > goatran)) highest = "chicken";

		var middle = "goat"
		if ((highest == "goat" || highest == "car")
			&& (lowest == "goat" || lowest == "car"))
 		{
			middle = "chicken"
		}
		else if ((highest == "goat" || highest == "chicken")
			&& (lowest == "goat" || lowest == "chicken"))
 		{
			middle = "car"
		}
		
		door1 = highest;
		door2 = middle;
		door3 = lowest;

		//set chicken so that we only see it upon occasion
		var ischickenran = Math.round(Math.random() * 100);
		if (ischickenran < 90) //once in roughly every 10 we allow the chicken to show
		{
			if (door1 == "chicken") door1 = "goat"
			if (door2 == "chicken") door2 = "goat"
			if (door3 == "chicken") door3 = "goat"
		}
		/*alert("goat:" + goatran 
			+ "\ncar: " + carran 
			+ "\nchicken: " + chickenran
			+ "\ndoor1: " + door1
			+ "\ndoor2: " + door2
			+ "\ndoor3: " + door3);*/

}

//This function closes all the doors - with the correct closing image
function closeDoors() {
		MM_swapImage('Image1','','montyhall_door.jpg',1)
		MM_swapImage('Image2','','montyhall_door.jpg',1)
		MM_swapImage('Image3','','montyhall_door.jpg',1)
		doorsopen[1]=0;
		doorsopen[2]=0;
		doorsopen[3]=0;
}

//This function initialises the monty hall program
function initMontyHall() {
	closeDoors();
	setupPrizes();
	mh_state=0;
	rst_timer=0;
}

//This function opens the appropriate door to reveal .... ?
function openDoor(doorid) {
	if (doorsopen[doorid]) return
	var vl = "MM_swapImage(\'Image\' + doorid,\'\',\'montyhall_\' + door" + doorid + " + \'.jpg\',1);"
	eval(vl);
	doorsopen[doorid]=1;
}

//This function marks the door you first chose, and then opens whichever of the other doors isn't a car
//choosing one at random if they are both a goat.
function chooseFirstDoor(doorid) {
		MM_swapImage('Image' + doorid,'','montyhall05.jpg',1)
		//OK so we've marked the first choice door, so we'll open one of the other doors
		var doorAid = (doorid == 1) ? 2 : 1;
		var doorBid = (doorid == 3) ? 2 : 3;
		
		var doorAbh = (doorid == 1) ? door2 : door1;
		var doorBbh = (doorid == 3) ? door2 : door3;
		
		var openWhich = 0;
		
		if (doorAbh != "car") openWhich = 1
		if (doorBbh != "car") openWhich += 2
		
		switch(openWhich) {
		
			case 1:
					openWhich=1;
					break;
					
			case 2:
					openWhich=2;
					break;
			
			default:
					openwhich = (Math.round(Math.random()*100) > 50) ? 2 : 1;
		
		}
		
		openWhich = (openWhich == 1) ? doorAid : doorBid;
		
		openDoor(openWhich);
		
		mh_state=1;
}

function chooseSecondDoor(doorid) {
	if (mh_state != 1) return;
	var elsrc = document.images['Image'+doorid].src;
	if ((elsrc.indexOf('montyhall_door.jpg') == -1) && (elsrc.indexOf('montyhall05.jpg') == -1))
 	{
		//this door has already been opened...
		return
	}

	if (doorsopen[doorid]) return;
	
	openDoor(doorid);
	
	for(var i=1; i<4; i++) {
		openDoor(i);
	}
	
	mh_state=2;
	
	//after 5 seconds reset the game.
	rst_timer = window.setTimeout("initMontyHall();",4000);
}