(function() {
	
	var Calc = function() {

		// NI Saving
		function ni_saving(salary, amount, vat) {

			if (vat) {
				amount = amount - ((amount * 1.175) - amount);
			}
			
			if (salary <= 4940) {
			     return 0;
		   	}

			var saving;
			
			if (salary >= 43888) {
			     if ((salary - 43888) >= amount) {
			       saving = amount * 0.01;
			     } else {
			       saving = ((salary - 43888) * 0.01) + ((amount - (salary - 43888)) * 0.11);
			     }
		   	} else {
			     if ((salary - 4940) >= amount) {
			       saving = amount * 0.11;
			     } else {
			       saving = ((salary - 4940) * 0.11) + ((amount - (salary - 4940)));
			     }
			}		

       		return Math.round(saving * 100) / 100;			
			
		}
		
		// Income tax saving
		function it_saving(salary, amount, vat) {

			if (vat) {
				amount = amount - ((amount * 1.175) - amount);
			}
			
			var base_rate = 37400,
				tax_free  = 6475,
				saving;

			if (salary <= tax_free) {
				return 0;
			}

			if (salary >= base_rate) {
				if ((salary - base_rate) >= amount) {
					saving = amount * 0.4;
				} else {
					saving = ((salary - base_rate) * 0.4) + ((amount - (salary - base_rate)) * 0.2);
				}
			} else {
				if ((salary - tax_free) >= amount) {
		        	saving = amount * 0.2
		      	} else {
		        	saving = ((salary - tax_free) * 0.2) + (amount - (salary - tax_free));
		      	}
			}
			
			return Math.round(saving * 100) / 100;
				
		}
	
		var Calc = {};
		
		/**
		 * Get savings
		 */
		Calc.get_savings = function(salary, amount, vat) {

			var vat_saving = (vat) ? (amount * 1.175) - amount : 0,
				tax_saving = it_saving(salary, amount, vat),
				ins_saving = ni_saving(salary, amount, vat),
				savings    = Math.round(vat_saving + tax_saving + ins_saving);
							
			return [Math.round((savings / amount) * 100) + "%", "£" + savings];

		}
	
		return Calc;
		
	}();
	
	var form = document.getElementById('calculator');

	if (form != null) {
		
		function error(msg) {
			document.getElementById('calc_error').innerHTML = msg;
		}
		
		function savings(savings) {
			document.getElementById('percent').innerHTML = savings[0];
			document.getElementById('pounds').innerHTML = savings[1];			
			document.getElementById('blurb').innerHTML = "You could save up to " + savings[0] + " or " + savings[1] + " on your bike and accesories";
		}
				
		document.getElementById('calc_submit').onclick = function(e) {
			
			e.preventDefault();
			error("&nbsp;"); // Clear error
			savings(["&nbsp;", "&nbsp"]); // Clear savings
						
			var salary = form.salary.value,
				amount = form.amount.value,
				vat    = document.getElementById('calc_vat_true').checked == true;

			if (salary == "" || amount == "") {
				error("Please fill in all fields");
			} else if (!parseInt(salary) && !parseInt(amount)) {
				error("Please ensure to use just numbers for your monetary amounts");
			} else {
				savings(Calc.get_savings(parseInt(salary), parseInt(amount), vat));				
			}
								
			return false;
		}
		
	}
	
})();


