function Source(name,label,unit,factor,category_1,category_2)
{
	this.name = name;
	this.label = label;
	this.unit = unit;
	this.factor = factor;
	this.value = 0;
	this.emissions=0;
	this.trees=0;
	this.treesAnnual=0;
	this.factorIndex='';
	this.category_1=category_1;
	this.category_2=category_2;
	
	if(Source.arguments.length>6)
		this.offset = Source.arguments[6];
	else
		this.offset = 0;
	
	function calculate()
	{
		
		if(typeof this.factor == "object")
		{
			factorIndexfield = document.getElementById(this.factorIndex);
			return parseInt(this.value)*factor[factorIndexfield.options[factorIndexfield.selectedIndex].value] + this.offset;
		}
		else
			return parseInt(this.value)*factor + this.offset;
	}
	
	function setValue(value)
	{
		this.value=value;
	}
	
	function setEmissions(value)
	{
		this.emissions=value;
	}
	
	function setTrees(value)
	{
		this.trees=value;
	}
	
	function setTreesAnnual(value)
	{
		this.treesAnnual=value;
	}
	
	function setFactorIndex(factorIndex)
	{
		this.factorIndex=factorIndex;
	}
	this.calculate = calculate;
	this.setValue=setValue;
	this.setEmissions=setEmissions;
	this.setTrees=setTrees;
	this.setFactorIndex=setFactorIndex;

}

sources = new Array();

//alert(sources);
factors = new Array();
factors['ab'] = 0.985;
factors['bc'] = 0.032;
factors['mb'] = 0.018;
factors['nb'] = 0.571;
factors['nfld'] = 0.286;
factors['nwt'] = 0.200;
factors['ns'] = 0.916;
factors['on'] = 0.304;
factors['pei'] = 0.720;
factors['pq'] = 0.0093;
factors['sk'] = 0.888;
factors['yk'] = 0.765;


source = new Source("Electricity","electricity","KWh",factors,"Part 1: At Home","Residential Power");
source.factorIndex='province';
sources[sources.length]=source;

source = new Source("Oil","oil","litres",2.83,"Part 1: At Home","Residential Power");
sources[sources.length]=source;

source = new Source("Natural Gas","gas","m3",1.891,"Part 1: At Home","Residential Power");
sources[sources.length]=source;

source = new Source("Propane","propane","litres",1.5,"Part 1: At Home","Residential Power");
sources[sources.length]=source;

source = new Source("Kerosene","kerosene","litres",2.55,"Part 1: At Home","Residential Power");
sources[sources.length]=source;

source = new Source("Wood Fuel","wood","cord",1.5*1136,"Part 1: At Home","Residential Power");
sources[sources.length]=source;

source = new Source("Vehicle 1 (gas)","vehicle_1_gas","km",2.36*0.08,"Part 2: On The Go","Personal Vehicles");
sources[sources.length]=source;

source = new Source("Vehicle 2 (gas)","vehicle_2_gas","km",2.36*0.08,"Part 2: On The Go","Personal Vehicles");
sources[sources.length]=source;

source = new Source("Vehicle (diesel)","vehicle_diesel","km",2.73*0.06,"Part 2: On The Go","Personal Vehicles");
sources[sources.length]=source;

source = new Source("Motorcycles","motorcycles","km",2.36*0.04,"Part 2: On The Go","Personal Vehicles");
sources[sources.length]=source;

//source = new Source("Air travel*","air","km",0.1046,"Part 2: On The Go","Air Travel",34.01);
source = new Source("Air travel*","air","km",0.1359,"Part 2: On The Go","Air Travel");
sources[sources.length]=source;

source = new Source("Taxis","taxis","km",2.36,"Part 2: On The Go","Other");
sources[sources.length]=source;

source = new Source("Bus (intercity)","bus_inter","km",0.0565,"Part 2: On The Go","Other");
sources[sources.length]=source;

source = new Source("Bus (urban)","bus_urban","km",0.1460,"Part 2: On The Go","Other");
sources[sources.length]=source;

source = new Source("Rail Travel","rail","km",0.1033,"Part 2: On The Go","Other");
sources[sources.length]=source;

function updateFields(source)
{
	input_field = document.getElementById(source.label+"_input");
	emissions_field = document.getElementById(source.label+"_emissions");
	trees_field = document.getElementById(source.label+"_trees");
	annual_field = document.getElementById(source.label+"_annual");
	source.setValue(input_field.value);
	emissions_field.value = source.calculate().toFixed(2);
	trees_field.value = ((((emissions_field.value/1000)/3.67)*4.4)/0.2).toFixed(2);
	annual_field.value =  (((emissions_field.value/1000)/3.67)*360/0.7).toFixed(2);
	source.setEmissions(emissions_field.value);
	source.setTrees(trees_field.value);
	source.treesAnnual=annual_field.value;
	updateTotals();
}

function updateFieldsLabel(label)
{

	for(counter=0;counter<sources.length;counter++)
	{
		if(sources[counter].label==label)
			updateFields(sources[counter]);
	}
}

function updateTotals()
{
	emissionTotal=0;
	treeTotal=0;
	treeAnnualTotal=0;
	
	for(counter=0;counter<sources.length;counter++)
	{
		if(sources[counter].value != "NaN" && sources[counter].value != 0)
		{
			emissionTotal+=parseFloat(sources[counter].emissions);
			treeTotal+=parseFloat(sources[counter].trees);
			treeAnnualTotal+=parseFloat(sources[counter].treesAnnual);
		}
	}
	co2_field = document.getElementById("co2");
	trees_field = document.getElementById("trees");
	treesAnnual_field  = document.getElementById("treesAnnual");
	co2_field.value = emissionTotal;
	

	trees_field.value=(parseFloat(treeTotal) > 1)?treeTotal:1;
	treesAnnual_field.value=(parseFloat(treeAnnualTotal) > 1)?treeAnnualTotal:1;

	
}
