var cars = [new TopTrumpCard("Ariel Atom 2", "UK", 24000, 1998, 220, 8200, 3.5, 140, 341, 180, "images\/car_thumbs\/arielatom2.jpg"),
new TopTrumpCard("Aston Martin DB9", "UK", 103000, 5935, 450, 6000, 4.7, 186, 466, 183, "images\/car_thumbs\/astonmartindb9.jpg"),
new TopTrumpCard("Aston Martin Vanquish", "UK", 164000, 5935, 460, 6500, 5, 190, 470, 188, "images\/car_thumbs\/astonmartinvanquish.jpg"),
new TopTrumpCard("Audi TT Quattro", "Germany", 30595, 3189, 247, 6300, 6.6, 155, 404, 186, "images\/car_thumbs\/audittquattro.jpg"),
new TopTrumpCard("Bentley Arnage", "UK", 170000, 6750, 450, 4100, 5.5, 168, 539, 212, "images\/car_thumbs\/bentleyarnage.jpg"),
new TopTrumpCard("BMW M3", "Germany", 40350, 3246, 343, 7900, 5.2, 155, 449, 176, "images\/car_thumbs\/bmwm3.jpg"),
new TopTrumpCard("Bugatti Veyron 16.4", "Italy", 773000, 7993, 1001, 6000, 2.9, 252, 446, 199, "images\/car_thumbs\/bugattiveyron.jpg"),
new TopTrumpCard("Caterham Super 7", "UK", 36475, 1796, 230, 8600, 3.2, 150, 310, 158, "images\/car_thumbs\/caterhamsuper7.jpg"),
new TopTrumpCard("Ferrari 360 Modena", "Italy", 133025, 3586, 425, 8500, 4.1, 187, 448, 192, "images\/car_thumbs\/ferrari360modena.jpg"),
new TopTrumpCard("Ferrari 575M Maranello", "Italy", 154350, 5748, 508, 7250, 4.2, 202, 455, 194, "images\/car_thumbs\/ferrari575maranello.jpg"),
new TopTrumpCard("Honda NSX", "Japan", 63013, 3179, 280, 7300, 5.7, 168, 443, 181, "images\/car_thumbs\/hondaNSX.jpg"),
new TopTrumpCard("Jaguar XKR", "UK", 64920, 4196, 400, 6100, 5.3, 155, 476, 202, "images\/car_thumbs\/jaguarxkr.jpg"),
new TopTrumpCard("Koenigsegg CC", "Sweden", 354500, 4700, 655, 6800, 3.5, 240, 419, 199, "images\/car_thumbs\/koenigseggcc.jpg"),
new TopTrumpCard("Lamborghini Gallardo", "Italy", 162180, 6192, 571, 7500, 3.6, 205, 430, 190, "images\/car_thumbs\/lamborghinigallardo.jpg"),
new TopTrumpCard("Lamborghini Murcielago", "Italy", 117000, 4961, 492, 7800, 4.3, 192, 458, 205, "images\/car_thumbs\/lamborghinimurcielago.jpg"),
new TopTrumpCard("Lotus Exige", "UK", 29995, 1796, 189, 7800, 5.2, 147, 380, 173, "images\/car_thumbs\/lotusexige.jpg"),
new TopTrumpCard("Marcos TS500", "UK", 34950, 5000, 320, 5000, 4, 185, 410, 168, "images\/car_thumbs\/marcosts500.jpg"),
new TopTrumpCard("Maserati Cambiocorsa Coupe", "Italy", 58995, 4244, 390, 7000, 4.9, 177, 452, 182, "images\/car_thumbs\/maseraticoupe.jpg"),
new TopTrumpCard("Maybach 62", "Germany", 281380, 5531, 550, 5250, 5.4, 155, 616, 198, "images\/car_thumbs\/maybach62.jpg"),
new TopTrumpCard("Mercedes-Benz McLaren SLR", "Germany", 313465, 5439, 616, 6500, 3.7, 207, 453, 182, "images\/car_thumbs\/mercedesslr.jpg"),
new TopTrumpCard("Mitsubishi Evo VIII FQ-340", "Japan", 32999, 1997, 342, 7000, 4.4, 157, 449, 177, "images\/car_thumbs\/mitsubishievo8.jpg"),
new TopTrumpCard("Morgan Aero 8", "UK", 55500, 4398, 286, 5500, 4.9, 160, 409, 175, "images\/car_thumbs\/morganaero8.jpg"),
new TopTrumpCard("Noble M12", "UK", 52500, 2968, 352, 6200, 3.9, 165, 409, 183, "images\/car_thumbs\/noblem12.jpg"),
new TopTrumpCard("Pagani Zonda C12 S", "Italy", 411250, 7291, 555, 5900, 3.9, 210, 439, 206, "images\/car_thumbs\/paganizondac12.jpg"),
new TopTrumpCard("Porsche 911 GT2 Coupe", "Germany", 126665, 3600, 483, 5700, 4, 196, 443, 177, "images\/car_thumbs\/porsche911gt2.jpg"),
new TopTrumpCard("Rolls-Royce Phantom", "UK", 250965, 6749, 453, 5350, 5.7, 149, 583, 199, "images\/car_thumbs\/rollsroycephantom.jpg"),
new TopTrumpCard("Subaru Impreza 2.0 WRX STi", "Japan", 29995, 1994, 316, 5800, 4.5, 155, 441, 174, "images\/car_thumbs\/subaruimprezasti.jpg"),
new TopTrumpCard("TVR Cerbera", "UK", 46500, 4575, 420, 3750, 3.9, 190, 428, 187, "images\/car_thumbs\/tvrcerbera.jpg"),
new TopTrumpCard("Vauxhall VX220", "UK", 26495, 1998, 200, 5500, 4.7, 151, 379, 171, "images\/car_thumbs\/vauxhallvx220.jpg"),
new TopTrumpCard("Westfield SEight", "UK", 24999, 3950, 200, 4750, 4.3, 137, 366, 161,"images\/car_thumbs\/westfieldseight.jpg")];


var content = "";
var result = "";
var endGame = false;
var noGo = false;
var noValue=-1;
var you, player2, theDeck, player1Card, player2Card, ending, oppStack, yourStack, mainStack, g, i, j, cardNum;

function draw() {
	if(endGame) {
		ending=" cards";
		yourStack="You Have "+ you.getSize()+ending;
		oppStack="The Computer Has "+ player2.getSize()+ending;
	}
	else {
		if(you.getSize()===0) {
			ending = " card.";
		}
		else {
			ending = " cards.";
		}
		yourStack="You Have "+ (you.getSize()+1)+ending;
		
		if(player2.getSize()===0) {
			ending = " card.";
		}
		else {
			ending = " cards.";
		}
		oppStack="The Computer Has "+ (player2.getSize()+1)+ending;
	}
	mainStack="Middle Stack: "+ theDeck.getSize();
}

function drawP1Card() {
	document.getElementById("P1Flag").src = "images\/"+ player1Card.nation +".gif";
	document.getElementById("P1Flag").alt = player1Card.nation;
	
	document.getElementById("P1Car").src = player1Card.image;
	document.getElementById("P1Car").alt = player1Card.name;
	document.getElementById("P1Name").firstChild.nodeValue = player1Card.name;
	
	document.getElementById("P1Engine").lastChild.nodeValue = player1Card.engine + "cc";
	document.getElementById("P1BHP").lastChild.nodeValue = player1Card.bhp +"bhp";
	document.getElementById("P1RPM").lastChild.nodeValue = player1Card.rpm +"rpm";
	document.getElementById("P1Accel").lastChild.nodeValue = player1Card.accel +"secs";
	document.getElementById("P1Speed").lastChild.nodeValue = player1Card.topSpeed +"mph";
	document.getElementById("P1Len").lastChild.nodeValue = player1Card.length +"cm";
	document.getElementById("P1Width").lastChild.nodeValue = player1Card.carWidth +"cm";
	document.getElementById("P1Price").lastChild.nodeValue = "£"+ player1Card.price;
}

function drawP2Card() {
	document.getElementById("P2Flag").src = "images\/"+ player2Card.nation +".gif";
	document.getElementById("P2Flag").alt = player2Card.nation;
	
	document.getElementById("P2Car").src = player2Card.image;
	document.getElementById("P2Car").alt = player2Card.name;
	document.getElementById("P2Name").firstChild.nodeValue = player2Card.name;
	
	document.getElementById("P2Engine").firstChild.nodeValue = player2Card.engine+"cc";
	document.getElementById("P2BHP").firstChild.nodeValue = player2Card.bhp +"bhp";
	document.getElementById("P2RPM").firstChild.nodeValue = player2Card.rpm +"rpm";
	document.getElementById("P2Accel").firstChild.nodeValue = player2Card.accel +"secs";
	document.getElementById("P2Speed").firstChild.nodeValue = player2Card.topSpeed +"mph";
	document.getElementById("P2Len").firstChild.nodeValue = player2Card.length +"cm";
	document.getElementById("P2Width").firstChild.nodeValue = player2Card.carWidth +"cm";
	document.getElementById("P2Price").firstChild.nodeValue = "£"+ player2Card.price;
}

function clearP2Card() {
	document.getElementById("P2Flag").src = "images\/blank.gif";
	document.getElementById("P2Flag").alt = "Opponent Car Country";
	
	document.getElementById("P2Car").src = "images\/bigBlank.gif";
	document.getElementById("P2Car").alt = "Opponent Car Picture";
	document.getElementById("P2Name").firstChild.nodeValue = "????";
	if(document.getElementById("P2Engine").firstChild){
		document.getElementById("P2Engine").firstChild.nodeValue = "????cc";
		document.getElementById("P2BHP").firstChild.nodeValue = "????bhp";
		document.getElementById("P2RPM").firstChild.nodeValue = "????rpm";
		document.getElementById("P2Accel").firstChild.nodeValue = "????secs";
		document.getElementById("P2Speed").firstChild.nodeValue = "????mph";
		document.getElementById("P2Len").firstChild.nodeValue = "????cm";
		document.getElementById("P2Width").firstChild.nodeValue = "????cm";
		document.getElementById("P2Price").firstChild.nodeValue = "£????";
	}
}

function changeButtonFunction(funcName, buttonText) {
	document.getElementById("compareButton").value=buttonText;
	document.getElementById("player1").onsubmit = funcName;
}

function changeCardValues() {
	document.getElementById("yourCards").firstChild.nodeValue = yourStack;
	document.getElementById("oppCards").firstChild.nodeValue = oppStack;
	document.getElementById("mainCards").firstChild.nodeValue = mainStack;
}

function next() {
	document.getElementById("player1").p1[noValue].checked = false;
	noValue = -1;
	draw();
	drawP1Card();
	document.getElementById("matchResult").firstChild.nodeValue="";
	clearP2Card();
	if(!endGame) {
		changeButtonFunction(compare,"Compare Cards");
	}
	else {
		changeButtonFunction(initialise,"Play Again");
	}
	
	return false;
}

function setup() {
	content = "";
	result = "";
	noGo = false;
	noValue = -1;
	endGame = false;
	theDeck = new TopTrumpQueue();
	you = new TopTrumpQueue();
	player2 = new TopTrumpQueue();
	
	for(i=0; i<30; i++) {
		theDeck.enqueue(cars[i]);
	}
	
	var d=document;
	d.carImages = [];
	for(i=0; i<30; i++) {
		d.carImages[i]=new Image();
		d.carImages[i].src=cars[i].image;
	}
	
	d.carImages[31] = new Image();
	d.carImages[31].src= "images\/UK.gif";
	d.carImages[32] = new Image();
	d.carImages[32].src = "images\/Italy.gif";
	d.carImages[33] = new Image();
	d.carImages[33].src = "images\/Sweden.gif";
	d.carImages[34] = new Image();
	d.carImages[34].src = "images\/Germany.gif"; 
	d.carImages[35] = new Image();
	d.carImages[35].src = "images\/Japan.gif"; 
	
	theDeck.shuffle();
	var numCards = theDeck.getSize();
	for(var k = 0; k<(numCards/2); k++) {
		you.enqueue(theDeck.dequeue());
		player2.enqueue(theDeck.dequeue());
	}
	player1Card = you.dequeue();
	player2Card = player2.dequeue();
	draw();
	drawP1Card();
	clearP2Card();
	changeCardValues();
}

function initialise() {
	setup();
	document.getElementById("matchResult").firstChild.nodeValue="";
	changeCardValues();
	changeButtonFunction(compare,"Compare Cards");
	clearP2Card();
	
	return false;
}

function compare() {
	var player1form = document.getElementById("player1");
	for(g=0;g<player1form.p1.length;g++) {
		if(player1form.p1[g].checked) {
			noValue = g;
			var p1Val = player1Card[player1form.p1[g].value];
			var p2Val = player2Card[player1form.p1[g].value];
			if(player1form.p1[g].value === "accel") {
				var temp = 0.0;
				temp += p1Val;
				p1Val = p2Val;
				p2Val = temp;
			}
			if(p1Val < p2Val) {
				result = "You lose a Card";
				if(you.getSize() === 0) {
					result +=" and your Out :P";
					endGame = true;
				}
				if(theDeck.getSize()!==0) {
					cardNum = theDeck.getSize();
					for(j=0;j<cardNum;j++) {
						player2.enqueue(theDeck.dequeue());
					}
				}
				player2.enqueue(player1Card);
				player2.enqueue(player2Card);
			}
			else if(p1Val === p2Val) {
				result = "A draw, cards placed in middle stack";
				theDeck.enqueue(player1Card);
				theDeck.enqueue(player2Card);
			}       
			else {
				result = "You Win a Card";
				if(player2.getSize()===0) {
					result +=" and You win the game!!!!!!!!!!";
					endGame = true;
				}
				if(theDeck.getSize()!==0) {
					cardNum = theDeck.getSize();
					for(j=0;j<cardNum;j++) {
						you.enqueue(theDeck.dequeue());
					}
				}           
				you.enqueue(player2Card);
				you.enqueue(player1Card);
			}
			drawP2Card();
		}
	}
	if(noValue === -1) {
		alert("Please select an attribute");
		noGo = false;
	}
	else{
		noGo = true;
		if(!endGame) {
			player1Card = you.dequeue();
			player2Card = player2.dequeue();
		}
	}
	draw();
	if(noGo) {
		document.getElementById("matchResult").firstChild.nodeValue=result;
		changeButtonFunction(next,"Next");
		changeCardValues();
	}
	if(endGame) {
		changeButtonFunction(initialise,"Play Again");
	}
	
	return false;
}