//begin_lib
//  Calculates Canadian Income Tax
//  Copyright (C) 2004 - 2009 by Walter Harder ALL RIGHTS RESERVED
//  e-mail walter@walterharder.ca



function calctax(Province,Year,Income,Add,Div,DivL){
  SetYear(Year);
  SetProv(Province);
  aTaxes[0] = CalcFedTax(Income,Province,0);
  aTaxes[1] = CalcProvTax(Income,0);

  if (Add){
  aTaxes[2] = CalcFedTax(Income - - Add, Province,0);
  aTaxes[3] = CalcProvTax(Income - - Add,0);
  }
  if (Div){
  aTaxes[4] = CalcFedTax(Income - - Div, Province,Div);
  aTaxes[5] = CalcProvTax(Income - - Div,Div);
  }
  if (DivL){
  aTaxes[6] = CalcFedTax(Income - - DivL, Province, 0, DivL);
  aTaxes[7] = CalcProvTax(Income - - DivL, 0, DivL);
  }
  return aTaxes;
}

<!-- Global Variables -->
var aTaxes = [0,0,0,0];
var FedBasic,FedBrackets, FedRates;
var FedDTC = 40/3, FedDTCL = 18.9655;
var aPBasic, PBasic,  aProvBrackets, aProvSurtax, aProvDTC, aProvDTCL, ProvBrackets, ProvSurtax, ProvDTC, ProvDTCL;

function SetProv(ProvNo) {
PBasic = aPBasic[ProvNo];
ProvBrackets = aProvBrackets[ProvNo];
ProvSurtax = aProvSurtax[ProvNo];
ProvDTC = aProvDTC[ProvNo];
ProvDTCL = aProvDTCL[ProvNo];
}

function SetYear(Year){

switch (Year) {
  case "1": {
FedBasic = 7412;
aPBasic = [
8000,	//BC
12900,//AB
8000,	//SK
7412,	//MB
7426,	//ON
6045,	//QC (adjusted 'cause QC uses 20.75% not lowest rate)
7412,	//NB
7231,	//NS
7412,	//PE
7410,	//NF
7412,	//YT
7412,	//NT
7412]	//NU
FedBrackets = [0,30754,61509,100000];
FedRates = [16,22,26,29];
aProvBrackets = [
[[ 7.30,0],[10.50,30484],[13.70,60969],[15.7,70000],[16.7,85000]], 		//BC
[[10.00,0]],											//AB
[[11.50,0],[13.50,30000],[16.00,60000]],							//SK
[[10.90,0],[16.20,30544],[17.40,61089]],							//MB
[[ 6.16,0],[ 9.22,30814],[11.16,61629]],							//ON
[[17.00,0],[21.25,26000],[24.50,52000]],							//QC
[[ 9.68,0],[14.82,30754],[16.52,61509],[17.84,100000]],				//NB
[[ 9.77,0],[14.95,29590],[16.67,59180]],							//NS
[[ 9.80,0],[13.80,30754],[16.70,61509]],							//PE
[[10.57,0],[16.16,29590],[18.02,59180]],							//NF
[[ 7.36,0],[10.12,30754],[11.96,61509],[13.34,100000]],				//YT
[[ 7.20,0],[ 9.90,30754],[11.70,61509],[13.05,100000]],				//NT
[[ 7.20,0],[ 9.90,30754],[11.70,61509],[13.05,100000]]				//NU
]
aProvSurtax = [
[],				//BC
[],				//AB
[],				//SK
[],				//MB
[[20,3560],[36,4491]],	//ON
[],				//QC
[],				//NB
[[10,10000]],		//NS
[[10,5200]],		//PE
[[ 9,7032]],		//NF
[[ 5,6000]],		//YT
[],				//NT
[]				//NU
]

aProvDTC = [
5.9,	//BC
6.4,	//AB
8.0,	//SK
6.0,	//MB
5.13,	//ON
10.83,//QC
7.6,	//NB
7.7,	//NS
7.7,	//PE
9.0,	//NF
6.1,	//YT
6.0,	//NT
6.0	//NU
];  	
aProvDTCL = aProvDTC;
	break;
  	}
  case "2" :{   ///// 2002
FedBasic = 7634;
aPBasic = [
8168,	//BC
13339,//AB
8000,	//SK
7634,	//MB
7686,	//ON
7575,	//QC (adjusted 'cause QC uses 20% not lowest rate)
7634,	//NB
7231,	//NS
7412,	//PE
7410,	//NF
7634,	//YT
9342,	//NT
10000	//NU
]
FedBrackets = [0,31677,63354,103000];
FedRates = [16,22,26,29];
aProvBrackets = [
[[ 6.05,0],[ 9.15,31124],[11.70,62249],[13.7,71470],[14.7,86785]], 		//BC
[[10.00,0]],											//AB
[[11.25,0],[13.25,30000],[15.50,60000]],							//SK
[[10.90,0],[15.40,30544],[17.40,65000]],							//MB
[[ 6.05,0],[ 9.15,31892],[11.16,63786]],							//ON
[[16.00,0],[20.00,26700],[24.00,53405]],							//QC
[[ 9.68,0],[14.82,31677],[16.52,63354],[17.84,103000]],				//NB
[[ 9.77,0],[14.95,29590],[16.67,59180]],							//NS
[[ 9.80,0],[13.80,30754],[16.70,61509]],							//PE
[[10.57,0],[16.16,29590],[18.02,59180]],							//NF
[[ 7.04,0],[ 9.68,31677],[11.44,63354],[12.76,103000]],				//YT
[[ 7.20,0],[ 9.90,31667],[11.70,63354],[13.05,103000]],				//NT
[[ 4.00,0],[ 7.00,31677],[ 9.00,63354],[11.50,103000]]				//NU  updated 2002 10 06
]
aProvSurtax = [
[],				//BC
[],				//AB
[],				//SK
[],				//MB
[[20,3685],[36,4648]],	//ON
[],				//QC
[],				//NB
[[10,10000]],		//NS
[[10,5200]],		//PE
[[ 9,7032]],		//NF
[[ 5,6000]],		//YT
[],				//NT
[]				//NU
]

aProvDTC = [
5.1,	//BC
6.4,	//AB
8.0,	//SK
5.0,	//MB
5.13,	//ON
10.83,//QC
7.6,	//NB
7.7,	//NS
7.7,	//PE
5.0,	//NF
5.87,	//YT
6.0,	//NT
4.0		//NU updaated 2002 10 06
];
aProvDTCL = aProvDTC;
  	
  	break;
  	}
  case "3" : {                           /////2003
FedBasic = 7756;
aPBasic = [
8307,	//BC  updated 6/18/2003
13525,  //AB  updated 6/18/2003
8000,	//SK
7634,	//MB
7817,	//ON  updated 6/18/2003
7575,	//QC (adjusted 'cause QC uses 20% not lowest rate)
7756,	//NB  updated 6/18/2003
7231,	//NS
7412,	//PE
7410,	//NF
7756,	//YT  updated 6/18/2003
11050,	//NT  updated 6/18/2003
10160	//NU  updated 6/18/2003
]
FedBrackets = [0,32183,64368,104648];
FedRates = [16,22,26,29];
aProvBrackets = [
[[ 6.05,0],[ 9.15,31654],[11.70,63309],[13.7,72686],[14.7,88260]], 		//BC  updated 2003 6 18
[[10.00,0]],											//AB
[[11.00,0],[13.00,35000],[15.00,100000]],							//SK updated 2002 8 23
[[10.90,0],[14.90,30544],[17.40,65000]],							//MB updated 2002 8 23
[[ 6.05,0],[ 9.15,32436],[11.16,64871]],							//ON updated 2003 6 18
[[16.00,0],[20.00,26700],[24.00,53405]],							//QC
[[ 9.68,0],[14.82,32183],[16.52,64369],[17.84,104648]],				//NB  updated 2003 6 18
[[ 9.77,0],[14.95,29590],[16.67,59180]],							//NS
[[ 9.80,0],[13.80,30754],[16.70,61509]],							//PE
[[10.57,0],[16.16,29590],[18.02,59180]],							//NF
[[ 7.04,0],[ 9.68,32183],[11.44,64369],[12.76,104648]],				//YT  updated 2003 6 18
[[ 7.20,0],[ 9.90,32183],[11.70,64369],[13.05,104648]],				//NT  updated 2003 6 18
[[ 4.00,0],[ 7.00,32183],[ 9.00,64369],[11.50,104648]]				//NU
]
aProvSurtax = [
[],				//BC
[],				//AB
[],				//SK
[],				//MB
[[20,3747],[36,4727]],	//ON  updated 2003 6 18
[],				//QC
[],				//NB
[[10,10000]],		//NS
[[10,5200]],		//PE
[[ 9,7032]],		//NF
[[ 5,6000]],		//YT
[],				//NT
[]				//NU
]

aProvDTC = [
5.1,	//BC
6.4,	//AB
8.0,	//SK
5.0,	//MB
5.13,	//ON
10.83,//QC
3.7,	//NB  updated 2003 6 18
7.7,	//NS
7.7,	//PE
5.0,	//NF
5.87,	//YT
6.0,	//NT
6.0		//NU
];
aProvDTCL = aProvDTC;
  	
  	break;
  	}

  case "4" :{                           //////2004
FedBasic = 8012;
aPBasic = [
8523,	//BC
14337,  //AB
8264,	//SK
7634,	//MB
8044,	//ON
7800,	//QC (adjusted 'cause QC uses 20% not lowest rate) //estimated
7756,	//NB
7231,	//NS
7412,	//PE
7410,	//NF
8012,	//YT
11415,	//NT
10495	//NU
]
FedBrackets = [0,35000,70000,113804];
FedRates = [16,22,26,29];
aProvBrackets = [
[[ 6.05,0],[ 9.15,32477],[11.70,64955],[13.7,74576],[14.7,90555]], 	//BC 
[[10.00,0]],														//AB
[[11.00,0],[13.00,36155],[15.00,103300]],							//SK 
[[10.90,0],[14.00,30545],[17.40,65000]],							//MB 
[[ 6.05,0],[ 9.15,33375],[11.16,66752]],							//ON  updated 20050807
[[ 9.68,0],[14.82,32183],[16.52,64368],[17.84,104648]],				//NB  
[[16.00,0],[20.00,27500],[24.00,55000]],							//QC  est
[[ 8.79,0],[14.95,29590],[16.67,59180],[17.50,93000]],				//NS  updated 20040803
[[ 9.80,0],[13.80,30754],[16.70,61509]],							//PE
[[10.57,0],[16.16,29590],[18.02,59180]],							//NF
[[ 7.04,0],[ 9.68,35000],[11.44,70000],[12.76,113804]],				//YT  updated 20040803
[[ 7.20,0],[ 9.90,33245],[11.95,66492],[13.55,108101]],				//NT 
[[ 4.00,0],[ 7.00,35000],[ 9.00,70000],[11.50,113804]]				//NU 
]
aProvSurtax = [
[],				//BC
[],				//AB
[],				//SK
[],				//MB
[[20,3856],[36,4864]],	//ON
[],				//QC
[],				//NB
[[10,10000]],		//NS
[[10,5200]],		//PE
[[ 9,7032]],		//NF
[[ 5,6000]],		//YT
[],				//NT
[]				//NU
]

aProvDTC = [
5.1,	//BC
6.4,	//AB
8.0,	//SK
5.0,	//MB
5.13,	//ON
10.83,	//QC
3.7,	//NB
7.7,	//NS
7.7,	//PE
5.0,	//NF
5.87,	//YT
6.0,	//NT
4.0		//NU
];
aProvDTCL = aProvDTC;

	break;
  	}
  default:{                           //////2006
FedBasic = 8839;
aPBasic = [
8858,	//BC
14899,  //AB
8589,	//SK
7734,	//MB
8377,	//ON
12530,	//QC (adjusted 'cause QC uses 20% not lowest rate)
8061,	//NB
7231,	//NS
7412,	//PE
7410,	//NF
8328,	//YT
11864,	//NT
10909	//NU
];
FedBrackets = [0,36378,72756,118285];
FedRates = [15.25,22,26,29];
aProvBrackets = [
[[ 6.05,0],[ 9.15,33755],[11.70,67512],[13.7,77512],[14.7,94121]], 	//BC 
[[10.00,0]],														//AB
[[11.00,0],[13.00,37579],[15.00,107367]],							//SK 
[[10.90,0],[13.50,30545],[17.40,65000]],							//MB 
[[ 6.05,0],[ 9.15,34758],[11.16,69517]],							//ON 
[[16.00,0],[20.00,28710],[24,57430]],							//QC
[[ 9.68,0],[14.82,32731],[16.52,65462],[17.84,106427]],				//NB
[[ 8.79,0],[14.95,29590],[16.67,59180],[17.50,93000]],				//NS
[[ 9.80,0],[13.80,30754],[16.70,61509]],							//PE
[[10.57,0],[16.16,29590],[18.02,59180]],							//NF
[[ 7.04,0],[ 9.68,36378],[11.44,72756],[12.76,118285]],				//YT 
[[ 5.90,0],[ 8.60,34555],[12.20,69110],[14.05,112358]],				//NT 
[[ 4.00,0],[ 7.00,36378],[ 9.00,72756],[11.50,118285]]				//NU 
]
aProvSurtax = [
[],				//BC
[],				//AB
[],				//SK
[],				//MB
[[20,4016],[36,5065]],	//ON
[],				//QC
[],				//NB
[[10,10000]],		//NS
[[10,5200]],		//PE
[[ 9,7032]],		//NF
[[ 5,6000]],		//YT
[],				//NT
[]				//NU
]
		
aProvDTC = [
5.1,	//BC
6.0,	//AB updated 9/22/2006 rates 2006 -2009: 6.0 5.5 4.5 3.5
8.0,	//SK
4.87,	//MB updated 6/5/2006
5.13,	//ON
8.0,   //QC
3.7,	//NB
7.7,	//NS
6.5,	//PE updated 2008 11 15
5.0,	//NF
4.45,	//YT
6.0,	//NT
4.0		//NU
];  	
aProvDTCL = [
12,		//BC updated 10/10/2006
7.5,	//AB updated 9/22/2006 rates 2006 -2009: 7.5 8.0 9.0 10.0
11,	//SK updated 11/22/2006
11,	//MB  Update 6/5/2006
6.5,	//ON  Updated 8/8/2006  2006:6.5;2007:6.7,2008:7.0;2009:7.4;2010:7.7
9.9,   //QC  Updated 6/6/2006 ??? Budget speach NOT clear about 2006 rate
12,	//NB  Announced 11/30/2006
8.85,	//NS updated 11/22/2006
10.5,	//PE updated 11/22/2006
6.65,	//NF Update 10/23/2006
11,	//YT updated 11/22/2006
11.5,	//NT Update 9/28/2006
6.2		//NU Updated 11/22/2006
]  	
  	break;
  	}

  case "7" : {                          ///////// 2007
FedBasic = 9600;
//					  BC,   AB,   SK,   MB,   ON,  QC,   NB,    NS,   PE,   NL,   YT,   NT,   NU	Rev 2007 05 01
aPBasic =         [ 9027,15435, 8778, 7834, 8553,  12808, 8239, 7481, 7560, 7484, 8929,12125,11149];

FedBrackets = [0,37178,74357,120887];
FedRates = [15.0,22,26,29];
aProvBrackets = [
[[ 5.70,0],[ 8.65,34397],[11.10,68794],[13.0,78984],[14.7,95909]], 	//BC rev 2007 03 14
[[10.00,0]],														//AB
[[11.00,0],[13.00,38405],[15.00,109729]],							//SK 
[[10.90,0],[13.00,30545],[17.40,65000]],							//MB 
[[ 6.05,0],[ 9.15,35488],[11.16,70976]],							//ON 
[[16.00,0],[20.00,32000],[24,64000]], 								//QC rev 2007 03 14
[[10.12,0],[15.48,34186],[16.80,68374],[17.95,111161]],				//NB rev 2007 03 14
[[ 8.79,0],[14.95,29590],[16.67,59180],[17.50,93000]],				//NS
[[ 9.80,0],[13.80,31368],[16.70,62739]],							//PE rev 2007 04 20
[[ 9.64,0],[14.98,29886],[17.26,59772]],							//NF rev 2007 05 01
[[ 7.04,0],[ 9.68,37178],[11.44,74358],[12.76,120887]],				//YT 
[[ 5.90,0],[ 8.60,35315],[12.20,70631],[14.05,114830]],				//NT 
[[ 4.00,0],[ 7.00,37178],[ 9.00,74357],[11.50,120887]]				//NU 
]
aProvSurtax = [
[],				//BC
[],				//AB
[],				//SK
[],				//MB
[[20,4016],[36,5065]],	//ON
[],				//QC
[],				//NB
[[10,10000]],		//NS
[[10,8850]],		//PE rev 2007 04 20
[[ 4.5,7102]],		//NF rev 2007 05 01
[[ 5,6000]],		//YT
[],				//NT
[]				//NU
]
		
aProvDTC = [
5.1,	//BC
5.5,	//AB updated 9/22/2006 rates 2006 -2009: 6.0 5.5 4.5 3.5
6.0,	//SK updated 4/5/2008
3.67,	//MB  updated 11/15/2008
5.13,	//ON
8.0,   //QC
5.3,	//NB rev 2007 03 14
7.7,	//NS
6.5,	//PE updated 2008 11 15
5.0,	//NF
4.45,	//YT
6.0,	//NT
4.0		//NU
];  	
aProvDTCL = [
12,		//BC 
8.0,	//AB updated 9/22/2006 rates 2006 -2009: 7.5 8.0 9.0 10.0
8.0,	//SK
11.00,	//MB  
6.7,	//ON  Updated 8/8/2006  2006:6.5;2007:6.7,2008:7.0;2009:7.4;2010:7.7
11.9,   //QC  
12,	//NB updated 11/15/2008
8.85,	//NS updated 11/15/2008
10.5,	//PE updated 11/22/2006
6.65,	//NF 
11,	//YT updated 11/22/2006
11.5,	//NT 
6.2		//NU updated 11/15/2008
]  	

  	break;
  	}
  	
  case "8" : {                          ///////// 2008
FedBasic = 9600;
	//					  BC,   AB,   SK,   MB,   ON,  QC,   NB,    NS,   PE,   NL,   YT,   NT,   NU	Rev 2008 10 24
	aPBasic =         [ 9189,16161, 12945, 8034, 8681,  12808, 8395, 7731, 7708, 7566, 9600,12355,11360];
	
FedBrackets = [0,37885,75769,123184];
FedRates = [15.0,22,26,29];
	aProvBrackets = [
[[ 5.06,0],[ 7.70,35016],[10.50,70033],[12.29,80406],[14.7,97636]], 	//BC rev 2008 10 23
[[10.00,0]],														//AB
[[11.00,0],[13.00,39135],[15.00,111814]],							//SK 
[[10.90,0],[12.75,30544],[17.40,66000]],							//MB  rev 2007 11 30
[[ 6.05,0],[ 9.15,36020],[11.16,72041]],							//ON rev 2007 11 30
[[16.00,0],[20.00,37500],[24,75000]], 								//QC rev 2007 12 01
[[10.12,0],[15.48,34836],[16.80,69673],[17.95,113273]],				//NB rev 2007 11 30
[[ 8.79,0],[14.95,29590],[16.67,59180],[17.50,93000]],				//NS
[[ 9.80,0],[13.80,31984],[16.70,63969]],							//PE rev 2007 11 30
[[ 8.2,0],[13.3,30215],[16.0,60429]],							//NF rev 2008 06 30
[[ 7.04,0],[ 9.68,37885],[11.44,75769],[12.76,123184]],				//YT 
[[ 5.90,0],[ 8.60,35986],[12.20,71973],[14.05,117011]],				//NT 
[[ 4.00,0],[ 7.00,37885],[ 9.00,75770],[11.50,123184]]				//NU 
	]
aProvSurtax = [
[],				//BC
[],				//AB
[],				//SK
[],				//MB
[[20,4162],[36,5249]],	//ON  rev 2007 11 30
	[],				//QC
[],				//NB
[[10,10000]],		//NS
[[10,12500]],		//PE rev 2007 11 30
[],		//NF rev 2008 11 15 eliminated
[[ 5,6000]],		//YT
[],				//NT
[]				//NU
]
			
aProvDTC = [
5.1,	//BC
4.5,	//AB updated 9/22/2006 rates 2006 -2009: 6.0 5.5 4.5 3.5
6.0,	//SK updated 4/5/2008
3.15,	//MB updated 11/15/2008
5.13,	//ON
8.0,   //QC
5.3,	//NB rev 2007 03 14
7.7,	//NS
6.5,	//PE updated 2008 11 15
5.0,	//NF
4.45,	//YT
6.0,	//NT
4.0		//NU
];  	
aProvDTCL = [
12,		//BC 
9.0,	//AB updated 9/22/2006 rates 2006 -2009: 7.5 8.0 9.0 10.0
8.0,	//SK
11.00,	//MB  
7.0,	//ON  Updated 8/8/2006  2006:6.5;2007:6.7,2008:7.0;2009:7.4;2010:7.7
11.9,   //QC  
12,	//NB updated 11/15/2008
8.85,	//NS updated 11/15/2008
10.5,	//PE updated 11/22/2006
6.65,	//NF 
11,	//YT updated 11/22/2006
11.5,	//NT 
6.2		//NU updated 11/15/2008
]  	

  	break;
  	}
	  	
  case "9" : {                          ///////// 2009
FedBasic = 10320;
	//							  BC,   AB,    SK,      MB,   ON,   QC,     NB,    NS,    PE,    NL,   YT,      NT,   NU	Rev 2008 11 15
	aPBasic =         [ 9373,16775, 13269, 8134, 8881, 12808, 8605, 7981, 7708, 7778, 10100,12664,11644];
	
FedBrackets = [0,40726,81452,126264];
FedRates = [15.0,22,26,29];
	aProvBrackets = [
[[ 5.06,0],[ 7.70,35716],[10.50,71433],[12.29,82014],[14.7,99588]], 	//BC rev 2008 11 15
[[10.00,0]],														//AB
[[11.00,0],[13.00,40113],[15.00,114610]],							//SK  rev 2008 11 15
[[10.80,0],[12.75,31000],[17.40,67000]],							//MB  rev 2008 11 15
[[ 6.05,0],[ 9.15,36848],[11.16,73698]],							//ON rev 2008 11 15
[[16.00,0],[20.00,37500],[24,75000]], 								//QC rev 2007 12 01
[[ 9.65,0],[14.50,35707],[16.00,71415],[17.00,116105]],				//NB rev 2009 03 17
[[ 8.79,0],[14.95,29590],[16.67,59180],[17.50,93000]],				//NS rev 2008 11 15 no change
[[ 9.80,0],[13.80,31984],[16.70,63969]],							//PE rev 2008 11 15 no change
[[ 7.7,0],[12.8,31061],[15.5,62121]],							//NF rev 2008 11 15
[[ 7.04,0],[ 9.68,38832],[11.44,77664],[12.76,126264]],				//YT rev 2008 11 15
[[ 5.90,0],[ 8.60,36885],[12.20,73772],[14.05,119936]],				//NT rev 2008 11 15
[[ 4.00,0],[ 7.00,38832],[ 9.00,77664],[11.50,126264]]				//NU rev 2008 11 15
	]
aProvSurtax = [
[],				//BC
[],				//AB
[],				//SK
[],				//MB
[[20,4257],[36,5370]],	//ON  rev 2008 11 15
[],				//QC
[],				//NB
[[10,10000]],		//NS rev 2008 11 15 no change
[[10,12500]],		//PE rev 2008 11 15 no change
[],		//NF rev 2008 11 15 eliminated
[[ 5,6000]],		//YT rev 2008 11 15 no change
[],				//NT
[]				//NU
]
			
aProvDTC = [
4.2,	//BC rev 2008 11 15
3.5,	//AB updated 9/22/2006 rates 2006 -2009: 6.0 5.5 4.5 3.5
6.0,	//SK updated 4/5/2008
2.5,	//MB  updated 2008 11 15
5.13,	//ON
8.0,   //QC
5.3,	//NB rev 2007 03 14
7.7,	//NS
6.5,	//PE updated 2008 11 15
5.0,	//NF
4.45,	//YT
6.0,	//NT
4.0		//NU
];  	
aProvDTCL = [
11,		//BC rev 2008 11 15
10.0,	//AB updated 9/22/2006 rates 2006 -2009: 7.5 8.0 9.0 10.0
8.0,	//SK
15.95,	//MB  
7.4,	//ON  Updated 8/8/2006  2006:6.5;2007:6.7,2008:7.0;2009:7.4;2010:7.7
11.9,   //QC  
12,	//NB updated 11/15/2008
8.85,	//NS updated 11/15/2008
10.5,	//PE updated 11/22/2006
6.65,	//NF 
11,	//YT updated 11/22/2006
11.5,	//NT 
6.2		//NU updated 11/15/2008
]  	

  	break;
  	}

  case "10" : {                          ///////// 2010
FedDTC = 40/3;
FedDTCL = (10/17)*(44/144)*100;

FedBasic = 10383;
	//			            	BC,   AB,   SK,    MB,    ON,    QC,   NB,   NS,    PE,     NL,   YT,   NT,   NU	Rev 2009 11 16
	aPBasic =             [  11000,16825,13348,  8134,  8943, 10455, 8777,  8231,  7708,  7833,10382,12740,11714];
	
FedBrackets = [0,40970,81941,127021];
FedRates = [15.0,22,26,29];
aProvBrackets = [
	[[ 5.06,0],[ 7.70,35859],[10.50,71719],[12.29,82342],[14.7,99987]], 	//BC 
	[[10.00,0]],														//AB
	[[11.00,0],[13.00,40354],[15.00,115297]],							//SK
	[[10.80,0],[12.75,31000],[17.40,67000]],							//MB
	[[ 5.05,0],[ 9.15,37106],[11.16,74214]],							//ON
	[[16.00,0],[20.00,38385],[24,76770]], 								//QC
	[[ 9.3,0],[12.50,36421],[13.30,72843],[14.30,118427]],				//NB
	[[ 8.79,0],[14.95,29590],[16.67,59180],[17.50,93000],[21.00,150000]],				//NS  updated 2010 04 07
	[[ 9.80,0],[13.80,31984],[16.70,63969]],							//PE
	[[ 7.7,0],[12.8,31278],[15.5,62556]],								//NF
	[[ 7.04,0],[ 9.68,40970],[11.44,81941],[12.76,127021]],				//YT
	[[ 5.90,0],[ 8.60,37106],[12.20,74214],[14.05,120656]],				//NT
	[[ 4.00,0],[ 7.00,39065],[ 9.00,78130],[11.50,127021]]				//NU
	]
aProvSurtax = [
[],				//BC
[],				//AB
[],				//SK
[],				//MB
[[20,3978],[36,5091]],	//ON  updated 2010 03 15
[],				//QC
[],				//NB
[],	//NS  updated 2010 04 07
[[10,12500]],	//PE
[],				//NF
[[ 5,6000]],	//YT
[],				//NT
[]				//NU
]
			
aProvDTC = [
	3.4,	//BC updated 2010 3 15
	3.5,	//AB 
	6.0,	//SK
	2.5,	//MB  updated 2008 11 15 - will reduce to 1.75 for 2011
	4.5,	//ON  
8.0,   //QC
	5.3,	//NB 
	7.7,	//NS
	6.5,	//PE
	5.0,	//NF
	4.45,	//YT
	6.0,	//NT
	4.0		//NU
];  	
aProvDTCL = [ //All rates updated 5/5/2010
	10.83,		//BC 
	10.0,	//AB 
	11,	//SK
	11,	//MB  
	6.4,	//ON  
11.9,   //QC  
	11.82,		//NB 
	8.71,	//NS
	10.34,	//PE
	9.6,	//NF
	10.83,		//YT
	11.32,	//NT 
	6.11		//NU
]  	

  	break;
  	}

  case "5" :{                           //////2005
FedBasic = 8648;
aPBasic = [
8676,	//BC
14523,  //AB
8404,	//SK
7634,	//MB
8196,	//ON
7956,	//QC (adjusted 'cause QC uses 20% not lowest rate)
7888,	//NB
7231,	//NS
7412,	//PE
7410,	//NF
8149,	//YT
11609,	//NT
10674	//NU
]
FedBrackets = [0,35595,71190,115739];
FedRates = [15,22,26,29];
aProvBrackets = [
[[ 6.05,0],[ 9.15,33061],[11.70,66124],[13.7,75917],[14.7,92185]], 	//BC 
[[10.00,0]],														//AB
[[11.00,0],[13.00,36770],[15.00,105056]],							//SK 
[[10.90,0],[14.00,30545],[17.40,65000]],							//MB 
[[ 6.05,0],[ 9.15,34009],[11.16,68020]],							//ON 
[[16.00,0],[20.00,28030],[24.00,56070]],							//QC
[[ 9.68,0],[14.82,32731],[16.52,65462],[17.84,106427]],				//NB
[[ 8.79,0],[14.95,29590],[16.677,59180],[17.50,93000]],				//NS
[[ 9.80,0],[13.80,30754],[16.70,61509]],							//PE
[[10.57,0],[16.16,29590],[18.02,59180]],							//NF
[[ 7.04,0],[ 9.68,35595],[11.44,70190],[12.76,115739]],				//YT 
[[ 5.90,0],[ 8.60,33811],[12.20,67622],[14.05,109939]],				//NT 
[[ 4.00,0],[ 7.00,35595],[ 9.00,70190],[11.50,115739]]				//NU 
]
aProvSurtax = [
[],				//BC
[],				//AB
[],				//SK
[],				//MB
[[20,3929],[36,4957]],	//ON
[],				//QC
[],				//NB
[[10,10000]],		//NS
[[10,5200]],		//PE
[[ 9,7032]],		//NF
[[ 5,6000]],		//YT
[],				//NT
[]				//NU
]
		
aProvDTC = [
5.1,	//BC
6.4,	//AB
8.0,	//SK
5.0,	//MB
5.13,	//ON
10.832,//QC
3.7,	//NB
7.7,	//NS
7.7,	//PE
5.0,	//NF
5.87,	//YT
6.0,	//NT
4.0		//NU
]
  	}
}
}

function CalcFedTax(income,Province,Div,DivL){
var tax = 0;

for (i = 4; i > -1; i--)
if (income > FedBrackets[i]){
tax = tax + (income - FedBrackets[i]) * FedRates[i] /100;
income = FedBrackets[i];
}
tax = tax - (FedBasic * FedRates[0] /100);
if (Div) tax = tax - Div * FedDTC/100;
if (DivL) tax = tax - DivL * FedDTCL/100;
if (Province == 5) tax = tax * 0.835;  //Refundable Quebec Abatement

if (tax < 0) tax = 0;
return tax;

}

function CalcProvTax(income,Div,DivL){
var tax = 0;
var surtax = 0;

for (i = ProvBrackets.length - 1; i > -1; i--)
if (income > ProvBrackets[i][1]){
tax = tax + (income - ProvBrackets[i][1]) * ProvBrackets[i][0] /100;
income = ProvBrackets[i][1];
}
tax = tax - (PBasic * ProvBrackets[0][0] /100);
if (Div) tax = tax - (Div * ProvDTC)/100;
if (DivL) tax = tax - (DivL * ProvDTCL)/100;

if (tax < 0) tax = 0;
if (ProvSurtax.length > 0){
for (i = ProvSurtax.length - 1; i > -1; i--){
if (tax > ProvSurtax[i][1])
   surtax += (tax - ProvSurtax[i][1]) * ProvSurtax[i][0] / 100;
}
tax += surtax;
}

if (tax < 0) tax = 0;
return tax;
}
//end_lib
