// JavaScript Document
function openTaxCalc(theWindow,doInit,defaultAmount,isMonthly) {
	if (theWindow == null) theWindow = self;
	if (doInit == null) doInit = true;
	if (defaultAmount == null) defaultAmount = 0;
	if (isMonthly == null) isMonthly = false;
	
	calcPopup=window.open('popups/taxcalc_' + getLanguage() + '.html','calcPopup','scrollbars=no,width=255,height=190,resizable=yes');
	calcPopup.focus();
	calcPopup.opener = theWindow;
	calcPopup.doInit = doInit;
	calcPopup.defaultAmount = defaultAmount;
	calcPopup.isMonthly = isMonthly;
	if (calcPopup.initCalculator != null) calcPopup.initCalculator();
}

function doTaxCalculation() {
	var tempamount = document.getElementById("amount").value;
	if (tempamount != "" && tempamount != extractNumber(tempamount)) {
		document.getElementById("amount").value = extractNumber(tempamount);								
	}
	
	var amount = Number(document.getElementById("amount").value);
	if (document.getElementById("freqMonthly").checked) amount = amount*12;
	
	var credit = calculateAnnualCredit(amount);
	var cost = amount - credit;
	
	setCreditField(credit);
	setCostField(cost);
}

function initCalculator() {	
	
		document.getElementById("freqAnnual").checked = true;
		document.getElementById("freqMonthly").checked = isMonthly;
		document.getElementById("amount").value = defaultAmount;
		
		if (doInit) {
			var frmDonate = opener.document.getElementById("frmDonate");
			
			if (frmDonate != null) {
				//var items = "";
				//for (var itemname in frmDonate) {
				//	items += itemname + " = " + frmDonate[itemname] + "<br>\n";
				//}
				var monthly = false;
				var contribution = 0;
				
				if (frmDonate.amount != null) {
					var amount = getRadioValue(frmDonate.amount);
					if (amount != null) {
						amount = amount.toLowerCase();
					} else {
						amount = "0";
					}
					
					if (amount == "other") {
						var otherAmount = frmDonate.otheramount;
						if (otherAmount != null) amount = otherAmount.value;
					}
					
					monthly = amount.indexOf("monthly") >= 0;
					
					contribution = extractNumber(amount);
				}
				
				if (frmDonate.ridingamount != null) {
					var ridingamount = getRadioValue(frmDonate.ridingamount);
					if (ridingamount != null) {
						ridingamount = ridingamount.toLowerCase();
					} else {
						ridingamount = "0";
					}
					
					if (ridingamount == "other") {
						var otherRidingAmount = frmDonate.ridingotheramount;
						if (otherRidingAmount != null) ridingamount = otherRidingAmount.value;
					}
					
					monthly = true;
					
					contribution += extractNumber(ridingamount);
				}
				
				document.getElementById("freqMonthly").checked = monthly;
				document.getElementById("amount").value = contribution;
				
				//alert(extractNumber());
			}
		}
		
		doTaxCalculation();
}

function calculateAnnualCredit(donationAmount) {
	var remainingAmount = Number(donationAmount);
	
	var lev1Amount = Math.min(remainingAmount, 400);
	remainingAmount = remainingAmount - lev1Amount;
	
	var lev2Amount = Math.min(remainingAmount, 350);
	remainingAmount = remainingAmount - lev2Amount;
	
	var lev3Amount = remainingAmount;
	
	var credit = lev1Amount*(3/4) + lev2Amount*(1/2) + lev3Amount*(1/3);
	
	return Math.min(credit, 650);
}

function setCreditField(theCredit) {
	var lang = getLanguage();
	var mask = (lang == "e") ? "${0} annually" : "{0} $ par ann&eacute;e";
	document.getElementById("credit").innerHTML = mask.replace("{0}", convertToDollars(theCredit));
}

function setCostField(theAnnualCost) {
	var lang = getLanguage();
	var mask = (lang == "e") ? "${0}" : "{0} $";
	var cost = theAnnualCost;
	if (document.getElementById("freqMonthly").checked) {
		mask += (lang == "e") ? " per month" : " par mois";
		cost = theAnnualCost / 12;
	}
	document.getElementById("cost").innerHTML = mask.replace("{0}", convertToDollars(cost));
}

function getLanguage(theDoc) {
	if (theDoc == null) theDoc = document;
	var pagename = theDoc.location.pathname;
	var returnlanguage = (pagename.indexOf("_e.") >= 0 || pagename.indexOf("_E.") >= 0) ? "e" : "f";
	return returnlanguage;
}

function convertToDollars(theNumber) {
	var amount = Number(theNumber);
	
	var strAmount = amount.toFixed(2);
	
	if (getLanguage() == "f") strAmount = strAmount.replace(".", ",");
	
	return strAmount;
}

function extractNumber(theString) {
	theString = theString.toString();
	
	var i;
	var c;
	var num = "";
	
	for (i = 0; i < theString.length; i++) {
		c = theString.charAt(i);
		if (!isNaN(c) || c == ".") num += c.toString();
	}
	
	if (isNaN(num)) return 0;
	
	return Number(num);
}

function getRadioValue(theRadioList) {
	var i;
	
	for (i = 0; i < theRadioList.length; i++) {
		if (theRadioList[i].checked) return theRadioList[i].value;
	}
	
	return null;
}

