function clearForm(){
	document.getElementById('AirmilesCalculator').reset();
	document.getElementById("resultsbox_title").style.display = "none";
	document.getElementById("adds_resultsbox").style.display = "none";
	document.getElementById("adds_goldAMresultsbox").style.display = "none";
	document.getElementById('adds_bonusresultsbox').style.display = "none";
}
function printPage(){
	window.print();
}
function setFocus(){
	document.getElementById("DebitSpending").focus();
}
function submitForm(){
	document.forms['AirmilesCalculator'].submit();
}
function reloadValues(){
	document.getElementById("resultsbox_title").style.display = "none";
	document.getElementById("adds_resultsbox").style.display = "none";
	document.getElementById("adds_goldAMresultsbox").style.display = "none";
	document.getElementById("adds_bonusresultsbox").style.display = "none";
	
	//called on page load 
	//checks querystring to see if this is submitted yet
	//then refills fields and calculates
	if (FORM_DATA [ 'DebitSpending' ] > -1){
		//refill text fields
		setText("DebitSpending");
		setText("CreditSpending");
		//refill radios
		setRadio(15,0);
		setRadio(20,1);
		setRadio(40,2);
		//refill checkboxes
		if (FORM_DATA [ "FeatureMortgage" ]){ document.forms['AirmilesCalculator'].FeatureMortgage.checked = true; }
		if (FORM_DATA [ "FeaturePRS" ]){ document.forms['AirmilesCalculator'].FeaturePRS.checked = true; }
		if (FORM_DATA [ "FeatureLOC" ]){ document.forms['AirmilesCalculator'].FeatureLOC.checked = true; }
		if (FORM_DATA [ "FeatureOPT" ]){ document.forms['AirmilesCalculator'].FeatureOPT.checked = true; }

		calculate()
		if ( document.getElementById("DebitSpending").value > 0 ){
		    document.getElementById("resultsbox_title").style.display = "block";
		    document.getElementById("adds_resultsbox").style.display = "block";
		}
	    document.getElementById("button_print").style.display = "block";	
		document.getElementById("button_start").style.display = "block";	
		
		var creditArray = document.forms[0].CreditType;
		if ( document.getElementById("CreditSpending").value > 0 ){
		    document.getElementById("resultsbox_title").style.display = "block";
		    
	        for (i=0;i<creditArray.length;++ i)
	        {
	            //Gold AM card selected
		        if (creditArray[i].checked && creditArray[i].value == 15)
		        {
			        creditMilesDivisor = creditArray[i].value;
			        document.getElementById("adds_resultsbox").style.display = "none";
	                document.getElementById("adds_goldAMresultsbox").style.display = "block";
			        document.getElementById("adds_bonusresultsbox").style.display = "block";
		        }
		        //No Fee AM card selected
		        else if(creditArray[i].checked && creditArray[i].value == 20)
		        {
		            document.getElementById("adds_resultsbox").style.display = "block";
			        document.getElementById("adds_goldAMresultsbox").style.display = "none";
			        document.getElementById("adds_bonusresultsbox").style.display = "none";
		        }
	        }
	    }
	}
}

function setText(qsValue){
	document.getElementById(qsValue).value = FORM_DATA [ qsValue ];
}
function setRadio(qsValue,buttonNum){
	if (FORM_DATA [ 'CreditType' ]==qsValue){ 
		document.forms['AirmilesCalculator'].CreditType[buttonNum].checked = true; 
	}
}

function calculate(){
	var debitSpending = document.getElementById("DebitSpending").value;
	var creditSpending = document.getElementById("CreditSpending").value;
	var bonus = 0.25;
	var debitMilesDivisor = 40;
	var debitAirmilesMaxPerMonth = 40;
	var creditArray = document.forms[0].CreditType;
	var creditMilesDivisor = 0;
	var debitAirmilesEarned = 0;
	var creditAirmilesEarned = 0;
	var baseGoldAirmilesEarned = 0;
	var bonusAirmilesEarned = 0;
	var bonusGoldAirmilesMaxPerMonth = 100;
	var i;
	
	// For a detailed description of the Airmiles rewards calculation
	// please refer to the document "Project C Calculator - Logic(April25).xls"
	
	// Step 1: calculate debit airmiles earned and display the value
	// Max of 40 AIR MILES can be earned per month.
	debitAirmilesEarned = Math.floor(debitSpending / debitMilesDivisor);
	if (debitAirmilesEarned < debitAirmilesMaxPerMonth){
	    document.getElementById("DebitAirmilesEarned").innerHTML = debitAirmilesEarned;
    }
    else{
        document.getElementById("DebitAirmilesEarned").innerHTML = debitAirmilesMaxPerMonth;
        debitAirmilesEarned = debitAirmilesMaxPerMonth;
    }
    
	// Step 2: determine the credit miles divisor, then calculate credit airmiles 
	// earned and display the value
	for (i=0;i<creditArray.length;++ i)
	{
		if (creditArray[i].checked)
		{
			creditMilesDivisor = creditArray[i].value;
		}
	}
	creditAirmilesEarned = Math.floor(creditSpending / creditMilesDivisor);
	document.getElementById("CreditAirmilesEarned").innerHTML = creditAirmilesEarned;

	// Step 3: calculate monthly base airmiled earned and display the value
	baseAirmilesEarned = debitAirmilesEarned + creditAirmilesEarned;
	document.getElementById("TotalMonthlyAirmiles").innerHTML = baseAirmilesEarned; 
	document.getElementById("TotalYearlyAirmiles").innerHTML = baseAirmilesEarned * 12;


	// Step 4: Calculate the bonus miles only if Gold AIR MILES MasterCard is selected and display the value
	if ( creditMilesDivisor == 15 ){
	    document.getElementById("GoldDebitAirmilesEarned").innerHTML = debitAirmilesEarned;
	    document.getElementById("GoldCreditAirmilesEarned").innerHTML = creditAirmilesEarned;
	    document.getElementById("GoldTotalMonthlyAirmiles").innerHTML = baseAirmilesEarned; 
	    document.getElementById("GoldTotalYearlyAirmiles").innerHTML = baseAirmilesEarned * 12;
	    
	    bonusGoldAirmilesEarned = Math.floor(creditAirmilesEarned * bonus);
	    
	    if (bonusGoldAirmilesEarned < bonusGoldAirmilesMaxPerMonth){
	        document.getElementById("BonusAirmiles").innerHTML = bonusGoldAirmilesEarned + " BONUS AIR MILES";
	        document.getElementById("TotalMonthlyBonusAirmiles").innerHTML = debitAirmilesEarned + bonusGoldAirmilesEarned + creditAirmilesEarned;
	        document.getElementById("TotalYearlyBonusAirmiles").innerHTML = (debitAirmilesEarned + bonusGoldAirmilesEarned + creditAirmilesEarned) * 12;
	    }
	    else{
	        document.getElementById("BonusAirmiles").innerHTML = bonusGoldAirmilesMaxPerMonth + " BONUS AIR MILES";
	        document.getElementById("TotalMonthlyBonusAirmiles").innerHTML = debitAirmilesEarned + bonusGoldAirmilesMaxPerMonth + creditAirmilesEarned;
	        document.getElementById("TotalYearlyBonusAirmiles").innerHTML = (debitAirmilesEarned + bonusGoldAirmilesMaxPerMonth + creditAirmilesEarned) * 12;
	    }
	}
}


//query parser
function createRequestObject() {
  FORM_DATA = new Object();
	// The Object ("Array") where our data will be stored.
  separator = ',';
	// The token used to separate data from multi-select inputs
  query = '' + this.location;
  qu = query
	// Get the current URL so we can parse out the data.
	// Adding a null-string '' forces an implicit type cast
	// from property to string, for NS2 compatibility.
  query = query.substring((query.indexOf('?')) + 1);
	// Keep everything after the question mark '?'.
  if (query.length < 1) { return false; }  // Perhaps we got some bad data?
  keypairs = new Object();
  numKP = 1;
	// Local vars used to store and keep track of name/value pairs
	// as we parse them back into a usable form.
  while (query.indexOf('&') > -1) {
	keypairs[numKP] = query.substring(0,query.indexOf('&'));
	query = query.substring((query.indexOf('&')) + 1);
	numKP++;
	  // Split the query string at each '&', storing the left-hand side
	  // of the split in a new keypairs[] holder, and chopping the query
	  // so that it gets the value of the right-hand string.
  }
  keypairs[numKP] = query;
	// Store what's left in the query string as the final keypairs[] data.<
  for (i in keypairs) {
	keyName = keypairs[i].substring(0,keypairs[i].indexOf('='));
	  // Left of '=' is name.
	keyValue = keypairs[i].substring((keypairs[i].indexOf('=')) + 1);
	  // Right of '=' is value.
	while (keyValue.indexOf('+') > -1) {
	  keyValue = keyValue.substring(0,keyValue.indexOf('+')) + ' ' + keyValue.substring(keyValue.indexOf('+') + 1);
		// Replace each '+' in data string with a space.
	}
	keyValue = unescape(keyValue);
	  // Unescape non-alphanumerics
	if (FORM_DATA[keyName]) {
	  FORM_DATA[keyName] = FORM_DATA[keyName] + separator + keyValue;
		// Object already exists, it is probably a multi-select input,
		// and we need to generate a separator-delimited string
		// by appending to what we already have stored.
	} else {
	  FORM_DATA[keyName] = keyValue;
		// Normal case: name gets value.
	}
  }
  return FORM_DATA;
}
FORM_DATA = createRequestObject();
 // This is the array/object containing the GET data.
 // Retrieve information with 'FORM_DATA [ key ] = value'.
