// mission.js
document.getElementById("loadingMessage").innerHTML = 'Loading missions...';

function createNewMission() {

	var tryCount;
	var i;

	var tmpMission;
	var randomMissionType;
	var missionName;
	var missionDescription;
	var sourcePort;
	var targetPort;
	var completionPort;
	var timeLimit;
	var duringKarma;
	var successSourceKarma;
	var successTargetKarma;
	var failureSourceKarma;
	var failureTargetKarma;
	var successCash;
	var failureCash;
	var cargoType;
	var cargoQuantity;
	var specialCargoName;
	var targetType;
	var targetQuantity;
	var nearestHostilePort;
	var nearestHostileDistance;
	var successTargetGovernment;
	var successTargetSecurity;
	var successSourceGovernment;
	var successSourceSecurity;
	
//	randomMissionType = randomInteger(100);
	randomMissionType = randomInteger(70);

	targetType = "";
	targetQuantity = 0;
	
	sourcePort = currentPort;
	
	nearestHostilePort = -1;
	nearestHostileDistance = 2100000000;
	
	successSourceSecurity = 0;
	successTargetSecurity = 0;
	
	if (portArray[sourcePort].portHostility > 250) {
		for(i=0;i<portArray.length;i++) {
			if (sourcePort != i) {
				if ((portArray[sourcePort].nation != portArray[i].nation) || (portArray[i].nation == -1)) {
					if (portArray[i].nation != playerGovernment) {
						if (GetRangeBetweenPorts(sourcePort, i) < nearestHostileDistance) {
							nearestHostilePort = i;
							nearestHostileDistance = GetRangeBetweenPorts(sourcePort, i);
//							alert("Closest hostile port: " + portArray[i].portName + " @ " + nearestHostileDistance + " range");
						}
					}
				}
			}
		}
	}
	
//	alert("nearest hostile port: " + nearestHostilePort + "; range to port 0 = " + GetRangeBetweenPorts(sourcePort, 0) + "; sourceNation = " + portArray[sourcePort].nation + ", 0 nation = " + portArray[0].nation);

	if (isCrippledFreeVersion == true) {
		nearestHostilePort = -1;
	}

	if (nearestHostilePort != -1 && randomMissionType < 3 && portArray[sourcePort].portHostility > 800 && portArray[sourcePort].nation != -1) {
	
		// conquer a neighboring territory!
		targetPort = nearestHostilePort;
		completionPort = targetPort;
		cargoType = 0;
		cargoQuantity = 0;
		failureCash = 0;
		targetQuantity = randomInteger(4)+4;
//		targetQuantity = 1;
		timeLimit = 2000 + randomInteger(500);
		duringKarma = 0;
		successSourceKarma = randomInteger(150 * targetQuantity);
		successTargetKarma = -1 * randomInteger(150 * targetQuantity);
		failureSourceKarma = randomInteger(30) - 40;
		failureTargetKarma = randomInteger(30) - 50;
		successCash = 400000 + randomInteger(600000);
		failureCash = 0;
		successSourceGovernment = portArray[sourcePort].nation;
		successTargetGovernment = portArray[sourcePort].nation;
		successSourceSecurity = 0.05;
		successTargetSecurity = -0.10;
		
		targetType = "police";
		missionName = "Lead Invasion";
		missionDescription = "Destroy " + targetQuantity + " naval ships in the " + portArray[nearestHostilePort].portName + " system to claim it for " + governmentAdjective[portArray[sourcePort].nation] + " rule.";

	} else if (randomMissionType < 3 && portArray[sourcePort].portHostility > 2000 && portArray[sourcePort].nation == -1 && nearestHostilePort != -1) {
	
		// Claim the current territory as your own (good karma)
		targetPort = nearestHostilePort;
		completionPort = sourcePort;
		cargoType = 0;
		cargoQuantity = 0;
		failureCash = 0;
		targetQuantity = randomInteger(8)+8;
//		targetQuantity = 1;
		timeLimit = 2000 + randomInteger(500);
		duringKarma = 0;
		successSourceKarma = randomInteger(50 * targetQuantity);
		successTargetKarma = randomInteger(-70 * targetQuantity);
		failureSourceKarma = randomInteger(30) - 40;
		failureTargetKarma = randomInteger(30) - 50;
		successCash = 1000000 + randomInteger(1000000);
		failureCash = 0;
		successSourceGovernment = playerGovernment;
		successTargetGovernment = portArray[targetPort].nation;
		successSourceSecurity = 0.5;
		successTargetSecurity = -0.05;
		
		targetType = "police";
		missionName = "Save Our System!";
		missionDescription = "Destroy " + targetQuantity + " naval ships in the " + portArray[nearestHostilePort].portName + " system to become our leader and protector!";

	} else if (randomMissionType < 3 && portArray[sourcePort].portHostility < 2000 && portArray[sourcePort].nation == -1 && nearestHostilePort != -1) {
	
		// Claim the current territory as your own (bad karma)
		targetPort = sourcePort;
		completionPort = targetPort;
		cargoType = 0;
		cargoQuantity = 0;
		failureCash = 0;
		targetQuantity = randomInteger(8)+8;
		timeLimit = 2000 + randomInteger(500);
		duringKarma = 0;
		successSourceKarma = 0;
		successTargetKarma = 0;
		failureSourceKarma = 0;
		failureTargetKarma = 0;
		successCash = 1000000 + randomInteger(1000000);
		failureCash = 0;
		
		successSourceGovernment = playerGovernment;
		successTargetGovernment = playerGovernment;
		successSourceSecurity = 0;
		successTargetSecurity = -0.25;

		targetType = "police";
		missionName = "Conquer System";
		missionDescription = "Destroy " + targetQuantity + " naval ships in the " + portArray[nearestHostilePort].portName + " system to claim it as your own!";

	} else if (nearestHostilePort != -1 && randomMissionType < 6) {
	
		// raid commerce/navy!
		targetPort = nearestHostilePort;
		completionPort = sourcePort;
		cargoType = 0;
		cargoQuantity = 0;
		failureCash = 0;
		targetQuantity = randomInteger(3)+3;
		timeLimit = 2000 + randomInteger(500);
		duringKarma = 0;
		successSourceKarma = randomInteger(50 * targetQuantity);
		successTargetKarma = randomInteger(-70 * targetQuantity);
		failureSourceKarma = randomInteger(30) - 40;
		failureTargetKarma = randomInteger(30) - 50;
		successCash = Math.floor((targetQuantity) * 10000 * (Math.random() + 3));
		failureCash = 0;
		
		switch(randomInteger(2)) {
			case 0:
				targetType = "civilian";
				missionName = "Disrupt Commerce";
				missionDescription = "Destroy " + targetQuantity + " civilian ships in the " + portArray[nearestHostilePort].portName + " system.";
				break;
			case 1:
				targetType = "police";
				missionName = "Soften Defenses";
				missionDescription = "Destroy " + targetQuantity + " naval ships in the " + portArray[nearestHostilePort].portName + " system.";
				break;
		}
		successSourceGovernment = -999;
		successTargetGovernment = -999;
		successSourceSecurity = 0.01;
		successTargetSecurity = -0.01;


	} else if (portArray[sourcePort].routeSecurity < 0.75 && randomMissionType < 15) {
	
		// rid pirates!
		targetPort = sourcePort;
		completionPort = sourcePort;
		cargoType = 0;
		cargoQuantity = 0;
		failureCash = 0;
		targetQuantity = randomInteger(7)+3;
		timeLimit = 2000 + randomInteger(500);
		duringKarma = 0;
		successSourceKarma = randomInteger(50 * targetQuantity);
		successTargetKarma = 0;
		failureSourceKarma = randomInteger(30) - 40;
		failureTargetKarma = 0;
		successCash = Math.floor((targetQuantity) * 15000 * (Math.random() + 3));
		failureCash = 0;
		
		targetType = "pirate";
		missionName = "Hunt Pirates";
		missionDescription = "Destroy " + targetQuantity + " pirate ships in the " + portArray[sourcePort].portName + " system.";
		successSourceGovernment = -999;
		successTargetGovernment = -999;
		successSourceSecurity = 0.02;
		successTargetSecurity = 0;

	} else if (randomMissionType < 45) {
		// local delivery
		cargoType = randomInteger(5);
		cargoQuantity = randomInteger(250);
		failureCash = 0;
		missionName = "Local Delivery";

		targetPort = null;
		tryCount = 0;
		while (targetPort == null && tryCount < 10) {
			if (Math.random() > .5) {
				targetPort = SelectRandomItemFromArray(portArray[sourcePort].nearNeighbors);
			} else {
				targetPort = SelectRandomItemFromArray(portArray[sourcePort].farNeighbors);
			}
			tryCount = tryCount + 1;
		}
		
		if (targetPort == null) {
			// can't find a local port; fall back on a long-range delivery...
			targetPort = sourcePort + 1 + Math.floor(Math.random() * 48.999);
			if (targetPort >= 50) {
				targetPort = targetPort - 50;
			}
			successCash = Math.floor((cargoQuantity * portArray[targetPort].portCurrentPrice[cargoType]) * (Math.random() + 3));
			failureCash = 0;
			missionName = "Long-range Delivery";
		} else {
			successCash = Math.floor((cargoQuantity * portArray[targetPort].portCurrentPrice[cargoType]) * (Math.random() + 1.5));
		}
		
		
		timeLimit = 100 + randomInteger(300);
		duringKarma = 0;
		successSourceKarma = randomInteger(5);
		successTargetKarma = randomInteger(10);
		failureSourceKarma = randomInteger(30) - 40;
		failureTargetKarma = randomInteger(30) - 50;
		missionDescription = "Acquire " + cargoQuantity + " KT of " + goodsNames[cargoType].toLowerCase() + " and deliver them to the " + portArray[targetPort].portName + " system.";
		completionPort = targetPort;
		
		successSourceGovernment = -999;
		successTargetGovernment = -999;
		successSourceSecurity = 0;
		successTargetSecurity = 0;
	} else if (randomMissionType < 50) {
		// mercy delivery
		if (rnd() < .5) {
				cargoType = 0;
			} else {
				cargoType = 4;
			}
		cargoQuantity = 10 + randomInteger(240);
		failureCash = 0;
		missionName = "Mercy Mission";

		targetPort = null;
		tryCount = 0;
		while (targetPort == null && tryCount < 10) {
			if (Math.random() > .5) {
				targetPort = SelectRandomItemFromArray(portArray[sourcePort].nearNeighbors);
			} else {
				targetPort = SelectRandomItemFromArray(portArray[sourcePort].farNeighbors);
			}
			tryCount = tryCount + 1;
		}
		
		if (targetPort == null) {
			// can't find a local port; fall back on a long-range port...
			targetPort = sourcePort + 1 + Math.floor(Math.random() * 48.999);
			if (targetPort >= 50) {
				targetPort = targetPort - 50;
			}
		} else {
		}
		
		successCash = 0;
		timeLimit = 100 + randomInteger(300);
		duringKarma = 0;
		successSourceKarma = randomInteger(50) + (1 * cargoQuantity);
		successTargetKarma = randomInteger(100) + (2 * cargoQuantity);
		failureSourceKarma = randomInteger(50) - (3 * cargoQuantity);
		failureTargetKarma = randomInteger(50) - (6 * cargoQuantity);
		missionDescription = "Acquire and deliver " + cargoQuantity + " KT of badly-needed " + goodsNames[cargoType].toLowerCase() + " to the " + portArray[targetPort].portName + " system.";
		completionPort = targetPort;
		
		successSourceGovernment = -999;
		successTargetGovernment = -999;
		successSourceSecurity = 0;
		successTargetSecurity = 0.03;
	} else if (randomMissionType < 60) {
		// rush delivery
		missionName = "Rush Delivery";
		timeLimit = 25 + randomInteger(75);
		targetPort = null;
		tryCount = 0;
		while (targetPort == null && tryCount < 10) {
			if (Math.random() > .5) {
				targetPort = SelectRandomItemFromArray(portArray[sourcePort].nearNeighbors);
			} else {
				targetPort = SelectRandomItemFromArray(portArray[sourcePort].farNeighbors);
			}
			tryCount = tryCount + 1;
		}
		
		if (targetPort == null) {
			// can't find a local port; fall back on a long-range delivery...
			targetPort = sourcePort + 1 + Math.floor(Math.random() * 48.999);
			if (targetPort >= 50) {
				targetPort = targetPort - 50;
			}
			missionName = "Long-range Delivery";
			timeLimit = 100 + randomInteger(300);
		}
		duringKarma = 0;
		successSourceKarma = randomInteger(5);
		successTargetKarma = randomInteger(10);
		failureSourceKarma = randomInteger(30) - 40;
		failureTargetKarma = randomInteger(30) - 50;
		cargoType = randomInteger(5);
		cargoQuantity = randomInteger(250);
		successCash = Math.floor((cargoQuantity * portArray[targetPort].portCurrentPrice[cargoType]) * (Math.random() + 3));
		failureCash = 0;
		missionDescription = "Acquire " + cargoQuantity + " KT of " + goodsNames[cargoType].toLowerCase() + " and deliver them to the " + portArray[targetPort].portName + " system.";
		completionPort = targetPort;
		
		successSourceGovernment = -999;
		successTargetGovernment = -999;
		successSourceSecurity = 0;
		successTargetSecurity = 0;
	} else if (randomMissionType < 70) {
		// long-range delivery
		targetPort = sourcePort + 1 + Math.floor(Math.random() * 48.999);
		if (targetPort >= 50) {
			targetPort = targetPort - 50;
		}
		timeLimit = 100 + randomInteger(300);
		duringKarma = 0;
		successSourceKarma = randomInteger(5);
		successTargetKarma = randomInteger(10);
		failureSourceKarma = randomInteger(30) - 40;
		failureTargetKarma = randomInteger(30) - 50;
		cargoType = randomInteger(5);
		cargoQuantity = randomInteger(250);
		successCash = Math.floor((cargoQuantity * portArray[targetPort].portCurrentPrice[cargoType]) * (Math.random() + 3));
		failureCash = 0;
		missionName = "Long-range Delivery";
		missionDescription = "Acquire " + cargoQuantity + " KT of " + goodsNames[cargoType].toLowerCase() + " and deliver them to the " + portArray[targetPort].portName + " system.";
		completionPort = targetPort;
		successSourceGovernment = -999;
		successTargetGovernment = -999;
		successSourceSecurity = 0;
		successTargetSecurity = 0;

	} else if (randomMissionType < 80) {
		// spice/illegal delivery
	} else if (randomMissionType < 90) {
		//  government delivery
	} else if (randomMissionType <= 100) {
		// attack airspace	
	}
	
	tmpMission = new Mission(missionName, missionDescription, sourcePort, targetPort, completionPort, timeLimit, duringKarma, successSourceKarma, successTargetKarma, failureSourceKarma, failureTargetKarma, successCash, failureCash, cargoType, cargoQuantity, specialCargoName, targetType, targetQuantity, successSourceGovernment, successSourceSecurity, successTargetGovernment, successTargetSecurity);
	return tmpMission;

}

function createRandomMissions() {

	var i;
	var tmpMission;
	
//	ClearAllChildren("missionsAvailable");
	
	for (i=0; i<7; i++) {
		if (currentMissions[i] == null) {
			currentMissions[i] = createNewMission();
		} else if (currentMissions[i].missionStatus == "available") {
			currentMissions[i] = createNewMission();
		}
//		drawMissionButton(tmpMission, "missionsAvailable");
	}
	selectedMission = -1;
	drawAllMissions();
}

function drawAllMissions() {
	var i;

	document.getElementById('abandonMissionButton').style.display = "none";
	document.getElementById('acceptMissionButton').style.display = "none";
	document.getElementById('completeMissionButton').style.display = "none";
	ClearAllChildren("missionsAvailable");
	for (i=0; i<7; i++) {
		drawMissionButton(currentMissions[i], "missionsAvailable", i);
		if (i == selectedMission) {
			if (currentMissions[i].missionStatus == "available") {
				document.getElementById('acceptMissionButton').style.display = "inline";
			} else {
				document.getElementById('abandonMissionButton').style.display = "inline";
				document.getElementById('completeMissionButton').style.display = "inline";
			}
		}
	}
	
	for (i = 0; i<portArray.length; i++) {
		drawPortIcon(i);
	}
}

function drawMissionButton(sourceMission, targetDiv, missionIndex) 
{
	var tmpDiv, tmpDiv2;
	
	tmpDiv = document.createElement("div");
	tmpDiv.setAttribute("class", "missionButton");

	tmpDiv2 = document.createElement("canvas");
	tmpDiv2.width = 70;
	tmpDiv2.height = 70;
	drawPortPlanet(sourceMission.targetPort, tmpDiv2, true)
	tmpDiv.appendChild(tmpDiv2);

	tmpDiv2 = document.createElement("div");
	tmpDiv2.style.setProperty("position", "relative");
	tmpDiv2.style.setProperty("left", "72px");
	tmpDiv2.style.setProperty("top", "-70px");
	tmpDiv2.style.setProperty("width", "520px");
	tmpDiv2.appendChild(document.createTextNode(sourceMission.missionName + ": " + sourceMission.successCash + "cr, " + sourceMission.timeLimit + " day(s)"));
	tmpDiv.appendChild(tmpDiv2);
	
	tmpDiv2 = document.createElement("div");
	tmpDiv2.style.setProperty("position", "relative");
	tmpDiv2.style.setProperty("left", "72px");
	tmpDiv2.style.setProperty("top", "-70px");
	tmpDiv2.style.setProperty("width", "520px");
	tmpDiv2.style.setProperty("font-weight", "normal");
	tmpDiv2.appendChild(document.createTextNode(sourceMission.missionDescription));
	tmpDiv.appendChild(tmpDiv2);
	
	if (sourceMission.missionStatus == "current") {
		tmpDiv.style.setProperty("background-color", "#CCFFCC");
		if (selectedMission == missionIndex) {
			tmpDiv.style.setProperty("background-color", "#99FF99");
		}
	} else {
		tmpDiv.style.setProperty("background-color", "#FFFFFF");
		if (selectedMission == missionIndex) {
			tmpDiv.style.setProperty("background-color", "#FFFFCC");
		}
	}
	
	tmpDiv.setAttribute("onClick", "selectMission(" + missionIndex +");");
	
	document.getElementById(targetDiv).appendChild(tmpDiv);

}

function selectMission(missionIndex) {
	var i;
	selectedMission = missionIndex;	
	drawAllMissions();
}

function abandonMission() {
	showConfirmationWindow("Contract Be Damned?", "If ye abandon this mission, ye'll face the same negative consequences of failing te complete the contract.<br /><br />Be ye certain ye wish te abandon this contract?", "Aye, and good riddance", "Well, maybe not today.", "abandonMission", selectedMission)
//	alert('abandon mission ' + selectedMission);
}

function acceptMission() {
//	alert('accept mission ' + selectedMission);
	currentMissions[selectedMission].missionStatus = "current";
	drawAllMissions();
}

function completeMission() {
//	alert("complete mission " + selectedMission);
	
	var sourcePortChangedHands;
	var targetPortChangedHands;
	var successMessage;
	
	sourcePortChangedHands = false;
	targetPortChangedHands = false;
	
	if (currentPort != currentMissions[selectedMission].completionPort) {
		showAlertWindow("Yer Not Even There Yet", "We're all eager te complete our missions and cash in on the rewards.  It's a perfectly normal reaction, whether ye be human, robot, sentient cutlery, or whatever.  The trick here is that when performing a service, one needs to be in the appropriate system in order to complete, which this system is not.<br /><br />Get yer sorry self back in yer ship and fly to where this mission actually ends, genius.  (" + currentPort + ", " + currentMissions[selectedMission].completionPort + ")", "Ye don't need te be so cruel")
	} else if (Coalesce(GetPartStatistic(playerShip, "cargo["+currentMissions[selectedMission].cargoType+"]"), "0") < currentMissions[selectedMission].cargoQuantity) {
		showAlertWindow("Can't Put My Finger On It", "When making a delivery for a third party, it's considered common courtesy to deliver what said third party requested.  Actually, that's not strictly true.  It's considered pretty much essential from both a business standpoint and from a \"keeping one's own phalanges well-attached\" standpoint, as well.<br /><br />Ye don't have the promised cargo.  Go get the promised cargo.  Simple as that.", "Snap to it, then")
	} else if (currentMissions[selectedMission].targetType != "" && currentMissions[selectedMission].targetQuantity > 0) {
		showAlertWindow("More Killin' Te Do", "While yer in the right place, it seems that he haven'a finished blowing up everything ye promised te blow up.  My advice te ye would be to resume blowing things up.", "Ye'd enjoy that, no?");
	} else {
		// mission accomplished
		
		
		successMessage = "Well done!  Ye've completed yer mission!<br />&nbsp;<br />";
		if (currentMissions[selectedMission].successCash > 0) {
			successMessage = successMessage + "Ye've earned a cool " + currentMissions[selectedMission].successCash + " credits; don't spend it all on one drink.<br />";
		}
		
		if (currentMissions[selectedMission].successSourceKarma > 0.001) {
			successMessage = successMessage + "Ye've gained esteem in the " + portArray[currentMissions[selectedMission].sourcePort].portName + " system.<br />";
		} else if (currentMissions[selectedMission].successSourceKarma < -0.001) {
			successMessage = successMessage + "Yer a mite less popular in " + portArray[currentMissions[selectedMission].sourcePort].portName + " for it.<br />";
		}
		
		if (currentMissions[selectedMission].successTargetKarma > 0.001) {
			successMessage = successMessage + "Ye've gained esteem in the " + portArray[currentMissions[selectedMission].targetPort].portName + " system.<br />";
		} else if (currentMissions[selectedMission].successTargetKarma < -0.001) {
			successMessage = successMessage + "Yer a mite less popular in " + portArray[currentMissions[selectedMission].targetPort].portName + " for it.<br />";
		}
		
		if (currentMissions[selectedMission].successSourceSecurity > 0.001) {
			successMessage = successMessage + "Ye've made the " + portArray[currentMissions[selectedMission].sourcePort].portName + " system a safer place.<br />";
		} else if (currentMissions[selectedMission].successSourceSecurity < -0.001) {
			successMessage = successMessage + "The " + portArray[currentMissions[selectedMission].sourcePort].portName + " system is more dangerous now.<br />";
		}
		
		if (currentMissions[selectedMission].successTargetSecurity > 0.001) {
			successMessage = successMessage + "Ye've made the " + portArray[currentMissions[selectedMission].targetPort].portName + " system a safer place.<br />";
		} else if (currentMissions[selectedMission].successTargetSecurity < -0.001) {
			successMessage = successMessage + "The " + portArray[currentMissions[selectedMission].targetPort].portName + " system is more dangerous now.<br />";
		}
		
		if (currentMissions[selectedMission].successSourceGovernment != -999 && currentMissions[selectedMission].successSourceGovernment != portArray[currentMissions[selectedMission].sourcePort].nation) {
			successMessage = successMessage + "The " + portArray[currentMissions[selectedMission].sourcePort].portName + " system is now under " + governmentAdjective[currentMissions[selectedMission].successSourceGovernment] + " control.<br />";
			sourcePortChangedHands = true;
		}
		
		if (currentMissions[selectedMission].successTargetGovernment != -999 && currentMissions[selectedMission].successTargetGovernment != portArray[currentMissions[selectedMission].targetPort].nation) {
			successMessage = successMessage + "The " + portArray[currentMissions[selectedMission].targetPort].portName + " system is now under " + governmentAdjective[currentMissions[selectedMission].successTargetGovernment] + " control.<br />";
			targetPortChangedHands = true;
		}
		
		if (sourcePortChangedHands == true || targetPortChangedHands == true) {
			calculatePortTerritory();
			SetCurrentPort(selectedPort);
		}
		
		
		
		
		showAlertWindow("Mission Complete", successMessage, "We're so proud of you");
		adjustReputation(currentMissions[selectedMission].successSourceKarma, currentMissions[selectedMission].sourcePort);
		adjustReputation(currentMissions[selectedMission].successTargetKarma, currentMissions[selectedMission].targetPort);
		AdjustCash(currentMissions[selectedMission].successCash)
		TransferStocks(playerShip, currentMissions[selectedMission].cargoType, -currentMissions[selectedMission].cargoQuantity);
		portArray[currentMissions[selectedMission].sourcePort].routeSecurity = portArray[currentMissions[selectedMission].sourcePort].routeSecurity + currentMissions[selectedMission].successSourceSecurity;
		portArray[currentMissions[selectedMission].targetPort].routeSecurity = portArray[currentMissions[selectedMission].targetPort].routeSecurity + currentMissions[selectedMission].successTargetSecurity;
		
		if (sourcePortChangedHands == true) {
			portArray[currentMissions[selectedMission].sourcePort].nation = currentMissions[selectedMission].successSourceGovernment;
		}
		if (targetPortChangedHands == true) {
			portArray[currentMissions[selectedMission].targetPort].nation = currentMissions[selectedMission].successTargetGovernment;
		}

		
		if (sourcePortChangedHands == true && portArray[currentMissions[selectedMission].sourcePort].portHostility < -75) {
			// set bad karma to "unwanted" so you can move about w/o being attacked...
			portArray[currentMissions[selectedMission].sourcePort].portHostility = -75;
		}
		
		if (targetPortChangedHands == true && portArray[currentMissions[selectedMission].targetPort].portHostility < -75) {
			// set bad karma to "unwanted" so you can move about w/o being attacked...
			portArray[currentMissions[selectedMission].targetPort].portHostility = -75;
		}
		
		currentMissions[selectedMission] = createNewMission();
		selectedMission = -1;
		SelectGoods(-1);
		drawAllMissions();
	}
}

function testMissionDeadlines() {
	var i;
	
	for (i=0; i<7; i++) {
		if (currentMissions[i].timeLimit < 0 && currentMissions[i].missionStatus == "current") {
			// this mission has expired.  So sad.
			showAlertWindow("Check Yer Calendar", "<br /><br />We're sorry, but ye've taken too long te complete yer " + currentMissions[i].missionName + " mission te " + portArray[currentMissions[i].targetPort].portName + ".<br /><br />Don't worry.  I'm sure the clients have absolutely no intention of invoking the \"shoot ye dead the next time we see ye\" clause in yer contract.<br /><br />Ye...<i>did</i> read the contract, didn't ye?" , "Well, that sucks.");
			selectedMission = i;
			adjustReputation(currentMissions[selectedMission].failureSourceKarma, currentMissions[selectedMission].sourcePort)
			adjustReputation(currentMissions[selectedMission].failureTargetKarma, currentMissions[selectedMission].targetPort)
			AdjustCash(currentMissions[selectedMission].failureCash)
			currentMissions[selectedMission] = createNewMission();
			selectedMission = -1;
		}
	}
	selectedMission = -1;
	drawAllMissions();
}

jsFilesLoaded = jsFilesLoaded + 1;


