/************************************************************************************************************
Test_Processor

js handler to update and generate score for Firefighter's ABC's

************************************************************************************************************/
var current_page;

function submit_form(step) {

	//revealModal('milModalPage'); // for testing
	
	// valid actions:  onLoad, Next, Previous, step1, step2, step3, step4
	// also individual "steps" are factored.
	
	// Currently recalculating entire test even on single changes.  Could break this up into case statements, but
	// this reliably normalizes the score.
	
	var currentTime = new Date();
	var theyear = currentTime.getFullYear(); 
	var themonth = currentTime.getMonth();
	
	var testresults;
	testresults = {};
	testresults.score = 0;
	testresults.max = 0;
	testresults.min = 0;
	
	// Seed testresults with global javascript variables assigned by session or db.
	
	if (document.getElementById('ACCOUNT_ID').value)
		testresults.account_id = document.getElementById('ACCOUNT_ID').value; // if we're retrieving from post-migration
	if (document.getElementById('ACCESS_ID').value)
		testresults.access_id = document.getElementById('ACCESS_ID').value;
	testresults.thankyou_url = "https://firefightersabcs.com/thankyou/nrd_thankyou.php"; // keys to the black box
		
//	testresults.session_key = document.getElementById('SESSION_KEY').value; // pre-migration
//	testresults.id = document.getElementById('TEST_ID').value;
//	testresults.user_id = document.getElementById('USER_ID').value;
	
	// Step 1 - Name, Address Information
	
	testresults.firstname = document.getElementById('FIRSTNAME').value;
	testresults.mi = document.getElementById('MI').value;
	testresults.lastname = document.getElementById('LASTNAME').value;
	testresults.address1 = document.getElementById('ADDRESS1').value;
	testresults.aptno = document.getElementById('APTNO').value;
	testresults.city = document.getElementById('CITY').value;
	testresults.country = document.getElementById('COUNTRY').value;
	testresults.stateprovince = document.getElementById('STATEPROVINCE').value;
	testresults.postalcode = document.getElementById('POSTALCODE').value;
	
	// Step 2  - PHONE NUMBERS and EMAIL
	
	testresults.homephone = document.getElementById('HOMEPHONE').value;
	testresults.mobilephone = document.getElementById('MOBILEPHONE').value;
	testresults.workphone = document.getElementById('WORKPHONE').value;
	testresults.faxphone = document.getElementById('FAXPHONE').value;
	testresults.email = document.getElementById('EMAIL').value;
	
	testresults.citizenship = document.getElementById('CITIZENSHIP').value;
	testresults.ethnicity = document.getElementById('ETHNICITY').value;
	testresults.gender = document.getElementById('GENDER').value;
	
	testresults.dui = document.getElementById('DUI').value;
	testresults.speeding = document.getElementById('SPEEDING').value;
	testresults.accident = document.getElementById('ACCIDENT').value;	
	testresults.moving_violation = document.getElementById('MOVINGVIOLATION').value;
	
	testresults.driverlicense = document.getElementById('DRIVERLICENSE').value;
	//testresults.driverlicenseno = document.getElementById('DRIVERLICENSENO').value;
	testresults.driverlicenseclasstype = document.getElementById('DRIVERLICENSECLASSTYPE').value;
	testresults.driverlicenseexpdate = document.getElementById('DRIVERLICENSEEXPDATE').value;
	testresults.driverlicensestate = document.getElementById('DRIVERLICENSESTATE').value;
	
	/* 
	 * Scores from "page" 1
	 */

	if (testresults.dui != 'N/A') {
		testresults.score -= 15;
	} 
	testresults.min -= 15;

	if (testresults.speeding != 'N/A') {
		testresults.score -= 10;
	} 
	testresults.min -= 10;
	
	if (testresults.accident != 'N/A') {
		testresults.score -= 10;
	} 
	testresults.min -= 10;
	
	if (testresults.moving_violation != 'N/A') {
		testresults.score -= 10;
	} 
	testresults.min -= 10;

	if (testresults.driverlicense == 'Y') {
		testresults.score += 5;
		document.getElementById('DRIVERLICENSESHELL').style.display = "block";
	} else if (testresults.driverlicense == 'DECLINE TO STATE' ) {
		testresults.score -= 5;
		document.getElementById('DRIVERLICENSESHELL').style.display = "none";
	} else {
		document.getElementById('DRIVERLICENSESHELL').style.display = "none";
	}
	
	testresults.max +=5;
	testresults.min -=5;
	
	/*
	 * Scores from "page" 2
	 */
	
	testresults.hsgrad = document.getElementById('HSGRAD').value;
	testresults.aaas = document.getElementById('AAAS').value;
	testresults.babs = document.getElementById('BABS').value;
	testresults.aaasfire = document.getElementById('AAASFIRE').value;
	testresults.masters = document.getElementById('MASTERS').value;
	testresults.phd = document.getElementById('PHD').value;
	testresults.stillinhs = document.getElementById('STILLINHS').value;
	testresults.militaryservice = document.getElementById('MILITARYSERVICE').value;
	testresults.speakforeignlanguage = document.getElementById('SPEAKFOREIGNLANGUAGE').value;
	testresults.otherlanguage1 = document.getElementById('OTHERLANGUAGE1').value;
	testresults.otherlanguage2 = document.getElementById('OTHERLANGUAGE2').value;
	testresults.otherlanguage3 = document.getElementById('OTHERLANGUAGE3').value;
	
	if (testresults.hsgrad == 'Y') {
		testresults.score += 5;
	} else if (testresults.hsgrad == 'DECLINE TO STATE') {
		testresults.score -= 5;
	}
	
	testresults.max += 5;
	testresults.min -= 5;
	
	if (testresults.aaas == 'Y') {
		testresults.score += 10;
	} else if (testresults.aaas == 'DECLINE TO STATE') {
		testresults.score -= 10;
	}
	
	testresults.max += 10;
	testresults.min -= 10;
	
	if (testresults.aaasfire == 'Y') {
		testresults.score += 20;
	} else if (testresults.aaasfire == 'DECLINE TO STATE') {
		testresults.score -= 20;
	}
	
	testresults.max += 20;
	testresults.min -= 20;
	
	if (testresults.babs == 'Y') {
		testresults.score += 20; // changed from 25 to 20 on client request, 7/2/09
	} else if (testresults.babs == 'DECLINE TO STATE') {
		testresults.score -= 20;
	}
	
	testresults.max += 20;
	testresults.min -= 20;
	
	if (testresults.masters == 'Y') {
		testresults.score += 30;
	} else if (testresults.masters == 'DECLINE TO STATE') {
		testresults.score -= 30;
	}
	
	testresults.max += 30;
	testresults.min -= 30;
	
	if (testresults.phd == 'Y') {
		testresults.score += 35;
	} else if (testresults.phd == 'DECLINE TO STATE') {
		testresults.score -= 35;
	}
	
	testresults.max += 35;
	testresults.min -= 35;
	
	if (testresults.militaryservice == 'Y') {
		testresults.score += 10;
	} else if (testresults.militaryservice == 'DECLINE TO STATE') {
		testresults.score -= 10;
	}
	
	testresults.max += 10;
	testresults.min -= 10;
	
	if (testresults.speakforeignlanguage == 'Y') {
		document.getElementById('OTHERLANGUAGE1_SHELL').style.display = 'block';
		document.getElementById('OTHERLANGUAGE2_SHELL').style.display = 'block';

		if (testresults.otherlanguage1 == 'OTHER' || testresults.otherlanguage2 == 'OTHER') {
			document.getElementById('OTHERLANGUAGE3_SHELL').style.display = 'block';
		} else {
			document.getElementById('OTHERLANGUAGE3_SHELL').style.display = 'none';
		}
		
		if (!((testresults.otherlanguage1 == '') || (testresults.otherlanguage1 == 'OTHER')) || (!((testresults.otherlanguage2 == '') || (testresults.otherlanguage2 == 'OTHER')))) {
			testresults.score += 10;
		}
				
	} else {
		document.getElementById('OTHERLANGUAGE1').value = '';
		document.getElementById('OTHERLANGUAGE2').value = '';
		document.getElementById('OTHERLANGUAGE3').value = '';
		document.getElementById('OTHERLANGUAGE1_SHELL').style.display = 'none';
		document.getElementById('OTHERLANGUAGE2_SHELL').style.display = 'none';
		document.getElementById('OTHERLANGUAGE3_SHELL').style.display = 'none';
		if (testresults.speakforeignlanguage == 'DECLINE TO STATE') {
			testresults.score -= 10;
		}
	}
		
	testresults.max += 10;
	testresults.min -= 10;
	
	/*
	 * Scores from "page" 3
	 */
	
	testresults.patcertification = document.getElementById('PATCERTIFICATION').value;
	testresults.ffi = document.getElementById('FFI').value;
	testresults.ffii = document.getElementById('FFII').value;
	testresults.emt = document.getElementById('EMT').value;
	testresults.paramedic = document.getElementById('PARAMEDIC').value;
	testresults.ffvolunteer = document.getElementById('FFVOLUNTEER').value;
	testresults.ffpaidcall = document.getElementById('FFPAIDCALL').value;
	testresults.ffcurrently = document.getElementById('FFCURRENTLY').value;
	// testresults.inprocess = document.getElementById('INPROCESS').value; - removed.
	testresults.relocateinstate = document.getElementById('RELOCATEINSTATE').value;
	testresults.relocateoutstate = document.getElementById('RELOCATEOUTSTATE').value;
	testresults.terminated5yr = document.getElementById('TERMINATED5YR').value;
	
	if (testresults.patcertification == 'Y') {
		testresults.score += 15;
	} else if (testresults.patcertification == 'DECLINE TO STATE') {
		testresults.score -= 15;
	}
	testresults.max += 15;
	testresults.min -= 15;
	
	if (testresults.ffi == 'Y') {
		testresults.score += 10;
	} else if (testresults.ffi == 'DECLINE TO STATE') {
		testresults.score -= 10;
	}
	
	testresults.max += 10;
	testresults.min -= 10;
	
	if (testresults.ffii == 'Y') {
		testresults.score += 15;
	} else if (testresults.ffii == 'DECLINE TO STATE') {
		testresults.score -= 15;
	}
	
	testresults.max += 15;
	testresults.min -= 15;
	
	if (testresults.emt == 'Y') {
		testresults.score += 30;
	} else if (testresults.emt == 'DECLINE TO STATE') {
		testresults.score -= 30;
	}
	
	testresults.max += 30;
	testresults.min -= 30;
	
	if (testresults.paramedic == 'Y') {
		testresults.score += 40;
	} else if (testresults.paramedic == 'DECLINE TO STATE') {
		testresults.score -= 40;
	}
	
	testresults.max += 40;
	testresults.min -= 40;
	
	if (testresults.ffvolunteer == 'Y') {
		testresults.score += 15;
	} else if (testresults.ffvolunteer == 'DECLINE TO STATE') {
		testresults.score -= 15;
	}
	
	testresults.max += 15;
	testresults.min -= 15;

	if (testresults.ffpaidcall == 'Y') {
		testresults.score += 15;
	} else if (testresults.ffpaidcall == 'DECLINE TO STATE') {
		testresults.score -= 15;
	}
	
	testresults.max += 15;
	testresults.min -= 15;

	switch(testresults.ffcurrently) {
		case 'FIREFIGHTER':
			testresults.score += 5; // changed from 50 to 5 7/2/09 on client request
			break;
		case 'FIREFIGHTER/EMT':
			testresults.score += 10; // formerly 55
			break;
		case 'FIREFIGHTER/MEDIC':
			testresults.score += 30; // formerly 60
			break;
		case 'ENGINEER':
			testresults.score += 20; // formerly 65
			break;
		case 'DRIVER':
			testresults.score += 20; // formerly 65
			break;
		case 'LIEUTENANT':
			testresults.score += 25; // formerly 75
			break;
		case 'INSPECTOR':
			testresults.score += 30; // "" 70
			break;
		case 'CAPTAIN':
			testresults.score += 35;
			break;
		case 'BATTALION CHIEF':
			testresults.score += 40;
			break;
		case 'DEPUTY CHIEF':
			testresults.score += 50;
			break;
		case 'CHIEF DEPUTY':
			testresults.score += 50;
			break;
		case 'ASSISTANT CHIEF':
			testresults.score += 50;
			break;
		case 'CHIEF':
			testresults.score += 60;
			break;
		case 'DECLINE TO STATE':
			testresults.score -= 60;
		case 'NO':
			break;
		default:
			break;
	}
	
	testresults.max += 60;
	testresults.min -= 60;
	
	if (testresults.relocateinstate == 'Y') {
		testresults.score += 5;
	} else if (testresults.relocateinstate == 'DECLINE TO STATE') {
		testresults.score -= 5;
	}
	
	testresults.max += 5;
	testresults.min -= 5;
	
	if (testresults.relocateoutstate == 'Y') {
		testresults.score += 15;
	} else if (testresults.relocateoutstate == 'DECLINE TO STATE') {
		testresults.score -= 15;
	}
	
	testresults.max += 15;
	testresults.min -= 15;
	
	if (testresults.terminated5yr == 'Y' || testresults.terminated5yr == 'DECLINE TO STATE') {
		testresults.score -= 15;
	}
	
	testresults.min -= 15;
	
	/*
	 * Scores from "page" 4
	 */
	
	testresults.testcert = document.getElementById('TESTCERT').value;
	testresults.terminatedfire = document.getElementById('TERMINATEDFIRE').value;
	testresults.felony = document.getElementById('FELONY').value;
	
	// testresults.testcert = document.getElementById('TESTCERT').value;
	// It's unclear whether this is the field or the PAT field.  Doublecheck with client.
	
	if (testresults.terminatedfire == 'Y' || testresults.terminatedfire == 'DECLINE TO STATE') {
		testresults.score -= 30;
	}
	testresults.min -= 30;
	
	if (testresults.testcert == 'Y') {
		testresults.score += 20;
	} else if (testresults.testcert == 'DECLINE TO STATE') {
		testresults.score -= 20;
	}
	testresults.max += 20;
	testresults.min -= 20;
	
	if (testresults.felony == 'Y' || testresults.felony == 'DECLINE TO STATE') {
		testresults.score -= 30;
	}
	testresults.min -= 30;
	
	switch(step) {
		case 'onTest':
			alert('Initial Load of page, testing updateScoreboard function for scores: 25, 80, 160, 200, and 300');
			updateScoreboard(0, 400, 25);
			alert('25 = needs improvement');
			updateScoreboard(0, 400, 80);
			alert('80 = below average');
			updateScoreboard(0, 400, 160);
			alert('160 = average');
			updateScoreboard(0, 400, 200);
			alert('200 = above average');
			updateScoreboard(0, 400, 300);
			alert('300 = excellent');
			return;
			break;
//		case 'onLoad':
//			loadTestScore(testresults);
//			return;
//			break;
		case 'final_post':
			// problem might have something to do with the way finalValidation() returns
		
			// original order from nrd_process.js
			// 1. updateScoreboard()
			// 2. updateTestScore()
			// 3. dicountValidaton()
			// 4. updateHiddens()
			// 5. return finalValidaton()
//			discountValidation(testresults);
			
			// moved everything here
//			updateScoreboard(testresults.min, testresults.max, testresults.score);
//			updateTestScore(testresults);   // should no longer send to database cus we do that post-payment now
//			updateHiddens(testresults);     // we shouldn't need this anymore as it breaks the anonymity of payment processing
											// it was used to populate nrd_WHATEVER onto the subscribe.php billing page
											// which probably shouldn't be happening, 
											// and the hiddens' vals are now get'able via the JSON obj we're passing anyhow
			updateScoreboard(testresults.min, testresults.max, testresults.score);
			updateTestScore(testresults);
			discountValidation(testresults);
//			updateHiddens(testresults);
			if(testresults.mi_discount == 1) { // now we do military and high school price validation here
				if (finalValidation() == false)
					return false;
				revealModal('milModalPage');
				return false;
			}
			if(testresults.hs_discount == 1) {
				if (finalValidation() == false)
					return false;
				revealModal('hsModalPage');
				return false;
			}
			if (testresults.mi_discount == 0 && testresults.hs_discount == 0)
				submit_form('post_final_post');
			break;
			return false;
		case 'post_final_post': // for added modal forms for discounts
//			hideModal('hsModalPage');
//			hideModal('milModalPage');
/*			if (finalValidation() == false) {// used to return here but now modal comes first
				alert('we are here 2');
				hideModal('hsModalPage');
				hideModal('milModalPage');
				break;
				return false;
			}	*/
			if(($("#mi_service").val().length > 2) && ($("#serial_number").val().length == 4)){
				$("#price").val(product_array[3][0]);
				$("#product").val(product_array[3][1]);
				// we will be able to get this from db on the backend from now on
				$("#subscription_time").val(product_array[3][3]);
				testresults.form_type_id = "3"; // so that payment page will display mil discount correctly
			}
			else{
				$("#price").val(product_array[2][0]);
				$("#product").val(product_array[2][1]);
				$("#subscription_time").val(product_array[2][3]);
				testresults.form_type_id = "2"; // default nrd value
			}
			if($("#class_year").val()){
				if(($("#class_year").val() > theyear-1)  && ($("#hs_school").val().length > 3)){
					$("#price").val(product_array[4][0]);
					$("#product").val(product_array[4][1]);
					$("#subscription_time").val(product_array[4][3]);
					testresults.form_type_id = "4"; // hs discount display for payment_page
				}
				else{
					$("#price").val(product_array[2][0]);
					$("#product").val(product_array[2][1]);
					$("#subscription_time").val(product_array[2][3]);
					testresults.form_type_id = "2"; // default nrd value
				}
			}
			testresults.price = $("#price").val(); // put it all in the thing that gets turned into the json obj
			testresults.product = $("#product").val();
			testresults.subscription_time = $("#subscription_time").val();
			updateScoreboard(testresults.min, testresults.max, testresults.score);
			updateTestScore(testresults);   // should no longer send to database cus we do that post-payment now
//			updateHiddens(testresults);
			if (finalValidation() == false) {
				//document.frm_tests.action = '';
				return false;
			}
			
//			if (testresults.form_type_id == "3" || testresults.form_type_id == "4") { // hs or mil discount
			$("#frm_tests").submit();
//			}
//			$("#frm_tests").submit();
			break;
		case 'save_changes': // this is our post-migration save changes button behaviour
			updateScoreboard(testresults.min, testresults.max, testresults.score); // one last time to abate AJAX latency
			if (finalValidation() == false)
				return false;
			testresults.nrd_id = $("#nrd_id").val();
			$("#save_changes_msg").html("Saving changes...");
			//revealModal('modalPage');
			postMigrationUpdate(testresults);
			break;
		default: // all other cases fall through for now.
//			discountvalidation(testresults);
			updateScoreboard(testresults.min, testresults.max, testresults.score);
			updateTestScore(testresults); // can be uncommented post-migration, given a functioning account_id
//			updateHiddens(testresults);
			break;
	}

}

function postMigrationUpdate(testresults) {
	var strtestresults = JSON.stringify(testresults);
	$.post('../ajax/nrd_process.php', {action: "update", testresults: strtestresults}, showSaveChangesResult, "text");
}

function showSaveChangesResult(data, textStatus) {
	//hideModal('modalPage');
	$("#save_changes_msg").html("<i>Changes have been saved.</i>");
}

function updateScoreboard(minimum, maximum, score) {
	//alert(score);
	// need to update and refactor if the numbers change.
	barwidth = [];
	for (i = 1; i <= 5; i++) {
		barwidth[i] = 0;
	}
	
	if (score >= 269) {
		barcolor = "#39A156";
		txtcolor = "#992A20";
		currentbar = 5;
		//barwidth[5] = (score - 269)*100 / (445.0 - 269.0);
		barwidth[5] = (score - 269)*100 / (maximum - 269.0);
	} else if (score >= 187) {
		barcolor = "#4A516E";
		txtcolor = "#E1D646";
		currentbar = 4;
		barwidth[4] = (score - 187)*100 / (268.0 - 187.0);
	} else if (score >= 120) {
		barcolor = "#E1D646";
		txtcolor = "#992A20"
		currentbar = 3;
		barwidth[3] = (score - 120)*100 / (186.0 - 120.0);
	} else if (score >= 53) {
		barcolor = "#BC986D";
		txtcolor = "#4A516E";
		currentbar = 2;
		barwidth[2] = (score - 53)*100 / (119.0 - 53.0);
	} else {
		barcolor = "#992A20";
		txtcolor = "#FFFFFF";
		currentbar = 1;
		bottomscore = (score <= minimum ? minimum : score);
		barwidth[1] = (bottomscore - minimum) * 100 / (52.0 - minimum);
	}
	
	for (i = 1; i < currentbar; i++) {
		barwidth[i] = 100;
		document.getElementById('scoretext' + i + '_div').style.color = txtcolor;
		document.getElementById('scorebar' + i + '_td').style.backgroundColor = barcolor;
		document.getElementById('scoretext' + i + "_div").style.fontWeight = "normal";
		document.getElementById('scorebar' + i).width = Math.round(barwidth[i]);
	}
	
	for (i = currentbar; i <= 5; i++) {
		if (barwidth[i] == 0) {
			document.getElementById('scorebar' + i + '_div').style.display = "none";
		} else {
			document.getElementById('scorebar' + i + '_div').style.display = "block";
			document.getElementById('scorebar' + i).width = Math.round(barwidth[i]);
			document.getElementById('scorebar' + i + '_td').style.backgroundColor = barcolor;
		}
		
		if (i == currentbar && i > 1) {
			document.getElementById('scoretext' + i + "_div").style.fontWeight = "bold";
			document.getElementById('scoretext' + i + "_div").style.color = txtcolor;
		} else {
			document.getElementById('scoretext' + i + "_div").style.fontWeight = "normal";
			document.getElementById('scoretext' + i + "_div").style.color = "#FFFFFF";
		}
		
	}
}

/* pre-migration
function loadTestScore() { // this only gets data now if coming from pre-migration --see line 388
						   // for post-migration purposes the form data is gotten in nrd.php
	$.post('../ajax/nrd_process.php', {action: "load"}, initScore, "text"); // pre-migration
}
*/

function updateTestScore(testresults) {
	$("#formdata_json_obj").val(JSON.stringify(testresults));
}

/* pre-migration
function initScore(data, textStatus) {
	window.testresults = {};
	try {
		if (data != 'null') {
			window.testresults = JSON.parse(data);
		}
	} catch(e) {
		alert(e.message + '\n' + data);
	}
	// removed DRIVERLICENSENO per client request - 2/3/2009 - vp
	looparray = ['FIRSTNAME','MI','LASTNAME','ADDRESS1','APTNO','CITY','COUNTRY','STATEPROVINCE','POSTALCODE',
	             'HOMEPHONE','MOBILEPHONE','WORKPHONE','FAXPHONE', 'EMAIL',
	             'CITIZENSHIP','ETHNICITY','GENDER','DRIVERLICENSE','DRIVERLICENSECLASSTYPE','DRIVERLICENSEEXPDATE','DRIVERLICENSESTATE',
	             'HSGRAD','AAAS','BABS','AAASFIRE','MASTERS','PHD','STILLINHS','MILITARYSERVICE','SPEAKFOREIGNLANGUAGE','OTHERLANGUAGE1','OTHERLANGUAGE2','OTHERLANGUAGE3',
	             'FFPAIDCALL','FFCURRENTLY','FFI','FFII','EMT','FFVOLUNTEER','PARAMEDIC','PATCERTIFICATION','RELOCATEINSTATE','RELOCATEOUTSTATE','TERMINATED5YR',
	             'TERMINATEDFIRE','TESTCERT','FELONY'];
	
	
	if (data != 'null') {
		for (var key in looparray) {
			tempresultsvalue = '';
			tempucindex = looparray[key].toUpperCase();
			templcindex = looparray[key].toLowerCase();
			tempresultsvalue = (typeof testresults[templcindex] != 'undefined') ? testresults[templcindex]:'';
			if (tempucindex == 'COUNTRY') {
				swapStateProvince(tempresultsvalue);
			}
			document.getElementById(tempucindex).value = tempresultsvalue;
		}
	
		document.getElementById('TEST_ID').value = testresults['id'];
		document.getElementById('SESSION_KEY').value = testresults['session_key'];
		document.getElementById('USER_ID').value = testresults['user_id'];
	}
	submit_form(1); // Tally Score based on loaded results; moved here to abate AJAX latency.
}
*/

/*
 * This section handles checking whether or not the testtaker qualifies for certain discounts
 */

function discountValidation(testresults) {
	// Presumes existence of hidden variables HS_DISCOUNT, MI_DISCOUNT and object testresults.
	
	if ((testresults.stillinhs == 'Y') && (!(testresults.hsgrad == 'Y' || testresults.aaas == 'Y' || testresults.babs == 'Y' || testresults.aaasfire == 'Y' || testresults.masters == 'Y' || testresults.phd == 'Y')) ) {
		testresults.hs_discount = "1";
	} else {
		testresults.hs_discount = "0";
	}
	
	if (testresults.militaryservice == 'Y') {
		testresults.mi_discount = "1";
	} else {
		testresults.mi_discount = "0";
	}
}

/* pre-migration
function updateHiddens(testresults) {
	// PRESUMES existence of keys for the following
	hiddens = ['FIRSTNAME','MI','LASTNAME','ADDRESS1','CITY','STATEPROVINCE','COUNTRY','POSTALCODE','PHONE'];
	phonefields = ['HOMEPHONE','MOBILEPHONE','WORKPHONE'];
	               
	// Note use of .toLowerCase() function to account for the fact that the testresults array is
	// all lower case.
	
	for (key in hiddens) {
		curr_hidden_value = hiddens[key];
		switch(curr_hidden_value) {
		case 'PHONE':
			tmp_phone = "";
			for (phonekey in phonefields) {
				curr_phonefield_value = phonefields[phonekey];
				if (testresults[curr_phonefield_value.toLowerCase()] != '' && (undefined != testresults[curr_phonefield_value.toLowerCase()])) {
					tmp_phone = testresults[curr_phonefield_value.toLowerCase()];
					break;
				}
			}
			document.getElementById('nrd_PHONENUMBER').value = tmp_phone;
			break;
		default: 
			document.getElementById('nrd_' + curr_hidden_value).value = testresults[curr_hidden_value.toLowerCase()];
			break;
		}
	}
}
*/

function finalValidation() {
	var retval = true;
	for (i = 2; i <= 7; i++) {
		if (!$("#form" + i).valid()) {
			retval = false;
			alert("There are some problems with your form submission.  Please correct the errors marked in red.");
			handleStepClick(i);
			break;
		}
	}
	document.getElementById("TEST_COMPLETE").value = (retval) ? 1:0;
	return retval;
}

function revealModal(divID)
{
	//window.onscroll = function () { document.getElementById(divID).style.top = document.body.scrollTop; };
	document.getElementById(divID).style.display = "block";
	document.getElementById(divID).style.top = document.body.scrollTop;
}
	
function hideModal(divID)
{
	document.getElementById(divID).style.display = "none";
}

// Code for playing with calendar; kept in for now -> using input mask for date.

function numberofDays(month, year) {
	switch(month) {
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			days = 31;
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			days = 30;
			break;
		case 2:
			days = (isLeapYear(year) ? 29:28); 
			break;
		default: 
			alert('invalid month and year chosen.');
			break;
	}
	return days;
}

function isLeapYear(year) {
	return ((year%4 == 0) && ((year%100 != 0) || (year%400 == 0)));
}
